
Tenho um aplicativo em execução em um contêiner com porta exposta 8082. Há também uma configuração nginx, parte da qual é mostrada abaixo. Em uma situação normal, vejo upstream: 127.0.0.1:8082
no log de acesso o que está correto. Mas quando paro o contêiner do aplicativo e o inicio novamente, vejo to: localhost
nos logs por cerca de 5 a 6 segundos, o que leva a um erro 502 no site. Neste momento, o aplicativo já está ativo e rodando na porta 8082. Por que isso acontece?
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;
Responder1
Hoje em dia, localhost
significa tanto o IPv4 127.0.0.1
quanto o IPv6 ::1
. Quando o NGINX encaminha o tráfego para o upstream, ele usa o nome do host que você forneceu, o que gera IPv4 e IPv6, embora eu suponha que seu upstream seja apenas IPv4.
Responder2
Parece que consegui resolver o problema substituindo proxy_pass http://localhost:8082;
por proxy_pass http://127.0.0.1:8082;
.