簡體   English   中英

使用nginx作為IIS服務器的反向代理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM