Nginx リバース プロキシがリダイレクト ループを引き起こす

Nginx リバース プロキシがリダイレクト ループを引き起こす

ロード バランサー (Nginx) と、WordPress ブログ (/blog) をホストしている別の Apache サーバーがあります。ロード バランサー上のすべてのトラフィックを/blogこの Apache サーバーに送るようにします。設定は次のとおりです。

upstream main_app  {
  server main_app_address;
}

upstream blog {
  server blog_address;
}

server {
   server_name appname.com;
   return 301 http://www.appname.com$request_uri permanent;
}

server {
  listen 80;
  server_name appname.com;

  location / {
    client_max_body_size 8M;
    proxy_pass  http://main_app;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
  }

  location /blog {
    proxy_pass http://blog/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
  }

}

これにより、Apache サーバー上のディレクトリ リストが表示され、/そこで確認できますが、これは私が望んでいることではありません。Apacheサーバーから/blogの内容を表示したいのです。/blog

/blog ロケーション ディレクティブの末尾のスラッシュを削除すると、リダイレクトが無限に続くことになります。

これをどうやって解決すればいいでしょうか?

答え1

これを置き換えることで解決できます:

proxy_pass http://blog/;

proxy_pass http://blog;

ドキュメントをお読みください:http://nginx.org/r/proxy_pass

答え2

私も同様の問題を抱えていましたが、コメントアウトしたら解決しましたproxy_set_header Host $host;

関連情報