Nginx リバース プロキシと IIS

Nginx リバース プロキシと IIS

IIS 7.5 で実行されている Web サイトのリバース プロキシとして nginx を使用しています。Web サイトは にバインドされています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から通常通りWebサイトが提供されます。
  • nginxはリクエストをWindowsマシンに正常に転送しているようです
  • sub.foo.bar にアクセスしても、IIS ログから受信リクエストが表示されない
  • IIS で sub.foo.bar のバインディングを追加すると、Web サイトは nginx で正常にプロキシされます。

私の設定の何が問題なのかについてのアイデアがあれば教えていただければ幸いです。ありがとうございます!

答え1

proxy_set_header ホスト「sub-1.foo.bar」を手動で追加してみてください

答え2

  • IIS で sub.foo.bar のバインディングを追加すると、Web サイトは nginx で正常にプロキシされます。

IIS は、名前 の要求に応答する必要があることを認識する必要がありますsub.foo.bar。そうでない場合、要求は既定の Web サイトにルーティングされます。この問題を解決するには、バインディングを作成するか、 に応答する Web サイトを作成/編集しますsub.foo.bar

関連情報