Nginxを備えたdockerコンテナーを他のdockerコンテナーへのリバースプロキシとして機能させようとしていますが、ベースロケーション「/」以外のロケーションで「Bad Gateway」を取得し続けています。
次のサーバーブロックがあります。
server {
listen 80;
location / {
proxy_pass "http://game2048:8080";
}
location /game {
proxy_pass "http://game:9999";
}
}
http://localhost
ただしhttp://localhost/game
これはブラウザで「Bad Gateway」を提供し、nginxコンテナでこれを提供します。
[error] 7#7: *6 connect() failed (111: Connection refused)
while connecting to upstream, client: 172.17.0.1, server: ,
request: "GET /game HTTP/1.1", upstream: "http://172.17.0.4:9999/game",
Host: "localhost"
公式のnginx Dockerイメージを使用して、独自の構成を適用します。あなたはそれをテストし、ここですべての詳細を見ることができます: https://github.com/jollege/ngprox1
何がうまくいかないのですか?
NB:これらの名前に一致するように、Dockerホストでローカルホスト名エントリを設定しました。
127.0.1.1 game2048
127.0.1.1 game
それを私が直した! nginx configの異なるサーバーブロックにサーバー名を設定します。ホストポートではなく、ドッカーポートを使用することを忘れないでください。
server {
listen 80;
server_name game2048;
location / {
proxy_pass "http://game2048:8080";
}
}
server {
listen 80;
server_name game;
location / {
# Remember to refer to docker port, not Host port
# which is 9999 in this case:
proxy_pass "http://game:8080";
}
}
修正を反映するためにgithubリポジトリが更新されました。古いreadmeファイルは./README.old01.md
の下にあります。
一般的に、他の人に質問を慎重に言い表すときに答えを見つけます。あなたはその気持ちを知っていますか?
私はこのコード行を手伝ってくれましたproxy_set_header Host $http_Host;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_Host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
proxy_pass http://myserver;
}
同じエラーが発生しましたが、構成に記載されているIPとポートでサービスを提供していないWebアプリケーションの場合です。
あなたはこれを持っていると言います:
location /game {
proxy_pass "http://game:9999";
}
次に、 http:// game:9999 で期待するWebアプリケーションが実際に 'game'という名前のdockerコンテナー内から提供され、コードがポート9999でアプリケーションを提供するように設定されていることを確認します。