Странный адрес восходящего потока 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

В настоящее время localhostозначает как IPv4, 127.0.0.1так и IPv6 ::1. Когда NGINX пересылает трафик в восходящий поток, он берет указанное вами имя хоста, что дает как IPv4, так и IPv6, в то время как я предполагаю, что ваш восходящий поток использует только IPv4.

решение2

Кажется, мне удалось решить проблему, заменив proxy_pass http://localhost:8082;на proxy_pass http://127.0.0.1:8082;.

Связанный контент