
ロード バランサー (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;