[英]Using nginx as a reverse proxy to IIS server
我在一台IIS服務器上運行多個ASP.NET應用程序,每個應用程序都有不同的端口。
我在同一台服務器上安裝了nginx,以便我的客戶端只能使用端口80訪問我的所有應用程序。
Nginx在端口80上運行正常。我的各個ASP.NET應用程序也已啟動並運行。
我在nginx conf文件中進行了這些更改
location /students/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:84;
}
location /registration/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:82;
}
然后我重新啟動了nginx並在我的瀏覽器中輸入了網址http://127.0.0.1/students/ 。 Nginx提供了404頁面。
我沒有對conf文件做任何其他更改。
我做錯了什么?
我相信您遇到的問題與URL路徑的開始有關。 URL http://120.0.0.1:84/students/
返回頁面還是404? 如果你期待去http://127.0.0.1:80/students/
和看到頁面在http://127.0.0.1/
,你會發現,nginx的不使用此配置轉換的路徑為您服務。 相反,它在代理服務器上查找完全相同的路徑。
您需要將URL放在proxy_pass
指令中的/
的末尾:
location /students/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:84/;
}
這是nginx配置中的一個微妙但重要的陷阱! 如果不包含反斜杠,則將http://127.0.0.1:84
視為服務器位置。 如果你有反斜杠,它將被視為一個URL,它將替換代理URL中的所有內容,直到'location'部分。
如果要將IIS 127.0.0.1:84/students轉換為nginx 127.0.0.1/students。 嘗試以下代碼..
location /students {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:84/students;
}
location /registration {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:82/registration;
}
嘗試使用此指令
upstream http://localhost {
server 127.0.0.1:84;
}
和第二個相同的塊
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.