Seltsame Upstream-Adresse von Nginx nach App-Neustart

Seltsame Upstream-Adresse von Nginx nach App-Neustart

Ich habe eine Anwendung, die in einem Container mit einem freiliegenden Port 8082 läuft. Es gibt auch eine nginx-Konfiguration, von der ein Teil unten gezeigt wird. In einer normalen Situation sehe ich upstream: 127.0.0.1:8082im Zugriffsprotokoll, was korrekt ist. Aber wenn ich den Anwendungscontainer stoppe und wieder starte, sehe ich to: localhostin den Protokollen für etwa 5-6 Sekunden, was zu einem 502-Fehler auf der Site führt. Zu diesem Zeitpunkt ist die Anwendung bereits live und läuft auf Port 8082. Warum passiert das?

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;

Antwort1

Heutzutage localhostbedeutet dies sowohl IPv4 127.0.0.1als auch IPv6 ::1. Wenn NGINX den Datenverkehr an den Upstream weiterleitet, verwendet es den von Ihnen angegebenen Hostnamen, der sowohl IPv4 als auch IPv6 ergibt, während ich davon ausgehe, dass Ihr Upstream nur IPv4 ist.

Antwort2

proxy_pass http://localhost:8082;Es scheint, dass ich das Problem durch Ersetzen durch lösen konnte proxy_pass http://127.0.0.1:8082;.

verwandte Informationen