應用程式重啟後Nginx奇怪的上游位址

應用程式重啟後Nginx奇怪的上游位址

我有一個應用程式在一個暴露連接埠 8082 的容器中運行。正常情況下,我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;

相關內容