
У меня есть веб-приложение, работающее на 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 почему-то недоступен из-за ошибки?