Nginx 反向代理配置:
upstream dynamic { zone upstream_dynamic 64k; least_conn; ##适用于long connect,即请求处理时间长 #ip_hash; ##适用于session stricky ##默认调度算法为round-robin server backend1.example.com weight=5; server backend2.example.com:8080 fail_timeout=5s ## 5秒后认为此server 已正常工作 server 192.0.2.1 max_fails=3; ##retry 3次连接失败后此server不可用 server backend3.example.com resolve; server backend4.example.com service=http resolve; server backup1.example.com:8080 backup; server backup2.example.com:8080 backup; } server { location / { proxy_pass http://dynamic; health_check; } }
Nginx 不会定时检查backend server的健康状态,只有request 分发到此server时才会检查。 所以为了能重新pick up 已恢复的server 需要指定fail_timeout, 此值指定了当server 故障后多久可以重新分发request到此server.