Nginx

Nginx 反向代理 HTTPS 到 HTTP IIS 後端

  • August 6, 2018

我有 ASP.NET 應用程序託管在後端 IIS(Windows Server 2012 R2)和帶有 Nginx 的 Debian 上,通過 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。

有關詳細資訊,請參閱此文件

引用自:https://serverfault.com/questions/801473