应用程序重启后 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意味着 IPv4127.0.0.1和 IPv6 ::1。当 NGINX 将流量转发到上游时,它会采用您提供的主机名,从而产生 IPv4 和 IPv6,而我猜您的上游只有 IPv4。

答案2

看来我成功地通过替换解决了这个proxy_pass http://localhost:8082;问题proxy_pass http://127.0.0.1:8082;

相关内容