Nginx 反向代理和 IIS

Nginx 反向代理和 IIS

我使用 nginx 作為在 IIS 7.5 上運行的網站的反向代理。網站綁定sub-1.foo.bar。 Nginx 設定如下所示:

server {
    listen 80;

    server_name sub.foo.bar;

    location / {
        proxy_pass http://sub-1.foo.bar;
        proxy_set_header Host $host;
        proxy_set_header X-Accel-Expires 0;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

我想做的是將來自sub.foo.bar(帶有 nginx 的 Linux 機器)的請求轉送到sub-1.foo.bar(帶有 IIS 和我的網站的 Windows 機器)。然而發生的事情是

  • 當我訪問 sub.foo.bar 時,我得到 404 頁面
  • 當我直接訪問 sub-1.foo.bar 時,我的網站可以正常從 IIS 獲得服務
  • nginx 似乎正常地將請求轉發到 windows 機器
  • 當我訪問 sub.foo.bar 時,我看不到任何來自 IIS 日誌的傳入請求
  • 當我在 IIS 上新增 sub.foo.bar 的綁定時,網站會透過 nginx 正常代理

如果我對我的設置可能有問題有任何想法,我將不勝感激。謝謝!

答案1

嘗試手動新增 proxy_set_header Host "sub-1.foo.bar"

答案2

  • 當我在 IIS 上新增 sub.foo.bar 的綁定時,網站會透過 nginx 正常代理

IIS 必須知道它應該回答對該名稱的請求sub.foo.bar。否則,它將請求路由到預設網站。您可以透過建立綁定或建立/編輯您的網站來回答 來解決此問題sub.foo.bar

相關內容