Ошибка Nginx 502 с localhost против 127.0.0.1

Ошибка Nginx 502 с localhost против 127.0.0.1

У меня есть веб-приложение, работающее на 127.0.0.1:8080. Изначально я настроил его nginx.confс помощью localhost:8080. Пример:

location / {
    proxy_set_header Host $host;
    proxy_pass http://localhost:8080;
}

Это работало нормально в 99% случаев. Проблема, однако, заключалась в том, что когда пользователь делал запрос, который вызывал панику в моем веб-приложении, не только этот пользователь получал ошибку 502, но и весь мой веб-сайт становился недоступным для ВСЕХ пользователей. Пока я не перезапускал веб-приложение вручную.

Ожидаемое поведение заключалось в том, что пользователь, вызвавший ошибку, получит ошибку 502, но она будет изолирована для всех остальных пользователей. Таким образом, сайт будет по-прежнему доступен, а не закрыт для всех.

Я долго не мог понять, как это исправить. Пока не начал использовать 127.0.0.1:8080вместо localhost:8080. Так что

location / {
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;
}

С его помощью 127.0.0.1:8080мой сайт больше не будет отключен для всех, если один пользователь вызовет панику в моем веб-приложении.

В чем причина этого? Я думал localhostи 127.0.0.1был таким же. Это потому что при использовании localhostсервера все равно нужно делать DNS-запрос и DNS почему-то недоступен из-за ошибки?

Связанный контент