アプリの再起動後にNginxのアップストリームアドレスが変になる

アプリの再起動後にNginxのアップストリームアドレスが変になる

公開ポート 8082 を持つコンテナでアプリケーションを実行しています。nginx 構成もあり、その一部を以下に示します。通常の状況では、upstream: 127.0.0.1:8082アクセス ログに正しい内容が表示されます。ただし、アプリケーション コンテナを停止して再起動すると、to: localhostログに約 5 ~ 6 秒間表示され、サイトで 502 エラーが発生します。この時点で、アプリケーションはすでにライブで、ポート 8082 で実行されています。なぜこのようなことが起こるのでしょうか。

server {
    server_name acme.com;

    access_log /var/log/nginx/acme.log upstreamlog;

    location / {
       proxy_pass http://localhost:8082;
       proxy_next_upstream error timeout http_502;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Upgrade websocket;
       proxy_set_header Connection Upgrade;
    }


    listen 443 ssl; # managed by Certbot
    ... some other Certbot lines ...
}
> sudo nginx -T | grep acme.com
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    server_name acme.com;

答え1

現在、localhostIPv4127.0.0.1と IPv6 の両方を意味します::1。NGINX がトラフィックをアップストリームに転送する場合、指定したホスト名を使用して IPv4 と IPv6 の両方を生成しますが、アップストリームは IPv4 のみであると推測します。

答え2

proxy_pass http://localhost:8082;を に置き換えることで問題を解決できたようですproxy_pass http://127.0.0.1:8082;

関連情報