Nginx 反向代理 HTTPS 到 HTTP IIS 后端

Nginx 反向代理 HTTPS 到 HTTP IIS 后端

我在后端 IIS(Windows Server 2012 R2)和 Debian 上托管了 ASP.NET 应用程序,并使用 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 请求代理到后端服务器?

答案1

你应该使用:

location / {
    ...
}

也就是说,如果没有=。该location =语法仅匹配单个 URI。

这个文件了解详情。

相关内容