
Eu tenho um aplicativo da web em execução em 127.0.0.1:8080. Inicialmente configurei meu nginx.conf
usando localhost:8080
. Exemplo:
location / {
proxy_set_header Host $host;
proxy_pass http://localhost:8080;
}
Isso funcionou bem 99% das vezes. O problema, entretanto, era que quando um usuário fazia uma solicitação que provocava pânico em meu aplicativo da web, esse usuário não apenas receberia um erro 502, mas todo o meu site ficaria fora do ar para TODOS os usuários. Até reiniciar o aplicativo da web manualmente.
O comportamento esperado era que o usuário que acionou o erro recebesse um erro 502, mas seria isolado para todos os outros usuários. Portanto, o site ainda estaria acessível em vez de estar fora do ar para todos.
Fiquei muito tempo sem saber como consertar isso. Até que comecei a usar 127.0.0.1:8080
em vez de localhost:8080
. Então
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
Usar 127.0.0.1:8080
meu site não ficaria mais fora do ar para todos se um usuário provocasse pânico em meu aplicativo da web.
Qual é a razão para isto? Eu pensei localhost
e 127.0.0.1
era o mesmo. Isso ocorre porque ao usar localhost
o servidor ainda é necessário fazer uma solicitação de DNS e o DNS está de alguma forma indisponível devido ao erro?