web-dev-qa-db-ja.com

NginxリバースプロキシHTTPSからHTTP IISバックエンド

バックエンドIIS(Windows Server 2012 R2))でホストされているASP.NETアプリと、SSL証明書などでNginxが公開されているDebianを使用しています。

Nginxプロキシhttp://myexample.com configに問題なくHTTPバックエンドにリクエスト:

server {
       listen 80;
       server_name my.example.com

       location / {
                  proxy_pass http://backend:1234;
       }
}

しかし、私がしようとするとhttps://my.example.com-Webブラウザーはリンクを取得しますhttps://my.example.com/Login.aspx(正しい)で、404が見つかりません。

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リクエストをバックエンドサーバーにプロキシしないのはなぜですか?

3
Pkej

あなたは使うべきです:

location / {
    ...
}

つまり、=location =構文は、単一のURIにのみ一致します。

詳細は このドキュメント を参照してください。

4
Richard Smith