У меня есть приложение ASP.NET, размещенное на сервере IIS (Windows Server 2012 R2), и Debian с открытым для публики Nginx с сертификатами SSL и т. Д.
Nginx проксирование http://myexample.com
запрос к HTTP-бэкэнду без проблем с конфигом:
server {
listen 80;
server_name my.example.com
location / {
proxy_pass http://backend:1234;
}
}
Но когда я пытаюсь https://my.example.com
- веб-браузер получает ссылку https://my.example.com/Login.aspx
(что правильно), а затем 404 Not Found.
Конфигурация HTTPS Nginx (я тоже пробовал с прокомментированными строками, но все еще 404):
server {
listen 443 ssl http2;
server_name my.example.com
-- SSL part ---
location = / {
proxy_pass http://backend:1234;
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Proto $scheme;
#proxy_redirect http:// $scheme://;
}
}
Журнал Nginx показывает это:
[error] 27936#27936: 1* open() "/etc/nginx/html/Login.aspx" (2: No such file or directory), client: IP, server: my.example.com, request: "GET /Login.aspx HTTP/2.0", host: "my.example.com"
Почему Nginx не передает запросы GET на бэкэнд-сервер?
Вам следует использовать:
location / {
...
}
То есть без =
. В location =
синтаксис соответствует только одному URI.
Видеть этот документ для подробностей.