Назад | Перейти на главную страницу

Обратный прокси-сервер Nginx с HTTPS на серверную часть HTTP IIS

У меня есть приложение 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.

Видеть этот документ для подробностей.