Nginx
Nginx 反向代理 HTTPS 到 HTTP IIS 後端
我有 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。有關詳細資訊,請參閱此文件。