我有一个在 127.0.0.1:8080 上运行的 Web 应用程序。最初我nginx.conf
使用 来配置我的localhost:8080
。示例:
location / {
proxy_set_header Host $host;
proxy_pass http://localhost:8080;
}
99% 的时间里,这种方法都运行良好。但问题是,当用户发出请求并触发我的 Web 应用程序崩溃时,不仅该用户会收到 502 错误,而且我的整个网站也会对所有用户关闭。直到我手动重启 Web 应用程序。
预期的行为是触发错误的用户会收到 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 因错误而不可用吗?