我正尝试使用nginx来负载平衡一些下游应用程序服务器,并且如果所有下游服务器都处于脱机或无响应状态,则显示“失败鲸鱼”样式页面。 不幸的是,nginx的文档说,你不能在upstream模块中使用backup指令和ip_hash指令,所以我一直在想办法替代。
现在,我的configuration中的相关块是:
upstream appservers { ip_hash; server srv1:8080; server srv2:8080; } server { listen 80; location / { proxy_pass http://appservers; proxy_set_header X-Scheme $scheme; proxy_connect_timeout 5s; error_page 502 503 504 http://failwhale.myapp.com; } }
问题是,如果我closures了两个应用程序服务器,当nginx返回一个502(错误的网关)错误,它似乎使用默认的502错误页面(纯白色的ish)而不是redirect到http:// failwhale。 myapp.com (这也是由nginx服务,绝对是)。
有没有人知道我做错了什么,或者如果这应该是我希望的工作? 如果没有,还有什么可以做的?
弄清楚了。 你需要proxy_next_upstream decl来捕捉这些错误,la:
location / { proxy_pass http://appservers; proxy_set_header X-Scheme $scheme; proxy_connect_timeout 5s; proxy_next_upstream error timeout http_502 http_503 http_504; error_page 502 503 504 http://failwhale.myapp.com; }