我试图build立一个testingNginx负载平衡的环境。 到目前为止,我已经成功地configuration了一个负载平衡器nginx-balancer1和3个服务器来为网页nginx1, nginx2 & nginx3 。
我想根据访问者的IP来平衡负载。 我已经configuration了我的Nginx nginx-balancer1来使用Maxmind GeoIP国家数据。
所以这是我的configuration到上游服务器:
# Check where the user is coming from server { location / { if ($geoip_city_continent_code = "EU") { proxy_pass http://ams1; } if ($geoip_city_continent_code = "NA") { proxy_pass http://sfo1; } if ($geoip_city_continent_code = "AS") { proxy_pass http://sgp1; } } } # Define upstream servers upstream ams1 { server server1.example.com; } upstream sfo1 { server server1.example.com; } upstream sgp1 { server server1.example.com; }
这似乎工作正常,但是,如果我closuresnginx说ams1 (server1.example.com)并尝试去主页我收到一个502 Bad Gateway错误。
我想知道的是,如果一台服务器closures了,我怎么能让nginx-balancer1redirect到另一台服务器,或者是下一台服务器,或者是下一台运行的服务器。
任何人都可以帮忙吗?
谢谢
这听起来像你正在寻找的是proxy_next_upstream和proxy_connect_timeout 。 所以你会做这样的事情:
proxy_next_upstream error timeout invalid_header http_500; proxy_connect_timeout 2;
基本上,如果检测到故障,后端将被标记为closuresx秒,然后再次尝试。 Nginx将尝试上游块中的下一个条目,因此,如果停止上游,则上游池将自动重新启用。