Rob*_*Rob 6 nginx load-balancing apache-2.2
我们遇到过这样的情况:某个站点开始为 502 Bad Gateway 提供服务,但在上游服务器反弹后似乎没有恢复。nginx 服务器设置为代理/负载平衡两个上游服务器的请求。看起来数据库服务器将开始获得较高的平均负载,导致 Web 服务器(上游服务器)提供内容缓慢并超时(根据 nginx 服务器)。然后,Nginx 将提供 502 服务,考虑到这种情况,这是有道理的。
但奇怪的是,当 Web 服务器恢复时,nginx 似乎没有响应,我们必须重新启动 nginx 才能让它再次开始为网站提供服务。有没有好的方法来解决这个问题?我当前正在查看代理设置,看看是否有需要设置的内容,但没有找到任何内容。
查看 nginx 日志,我们会看到类似的条目(仅在此时间范围内提取三个错误示例):
2013/06/12 13:53:40 [error] 29840#0: *258391 upstream timed out (110: Connection timed out) while reading response header from upstream, client: n.n.n.n, server: www.example.org, request: "GET / HTTP/1.1", upstream: "http://n.n.n.n:80/", host: "www.example.org"
2013/06/12 13:54:11 [error] 29840#0: *261105 no live upstreams while connecting to upstream, client: n.n.n.n, server: www.example.org, request: "GET /HTTP/1.1", upstream: "http://example_rack/", host: "www.example.org"
2013/06/12 13:54:46 [alert] 29840#0: *261470 stalled cache updating, error:0 while closing request, client: n.n.n.n, server: n.n.n.n:80
Run Code Online (Sandbox Code Playgroud)
小智 1
该答案描述了与标题和描述相匹配的问题的解决方案。这并不是试图回答 9 年后 Rob 的问题,希望对其他人有所帮助。\n该解决方案是在 Docker 上下文中提供的,但可能适用于任何 nginx 配置。
\n在我们的例子中,上游服务器的 IP 地址在重新引导/重新启动期间发生了变化,可能是因为旧服务在新服务启动之前不会被拉下来。
\n我们偶然发现了这篇 ServerFault帖子,从中我们得到了以下提示:
\n第一个答案: \n“当您在 proxy_pass 指令中使用变量指定域名时,NGINX re\xe2\x80\x91 在 TTL 过期时解析域名。您必须包含解析器指令以显式指定名称服务器”
\n同一主题的第二个答案为我们提供了一个详细的示例:
\nresolver 172.16.0.23;\nset $upstream_endpoint http://service-1234567890.us-east-1.elb.amazonaws.com;\nlocation / {\n proxy_pass $upstream_endpoint;\n}\n
Run Code Online (Sandbox Code Playgroud)\n请参阅文章了解注意事项。
\n 归档时间: |
|
查看次数: |
1613 次 |
最近记录: |