upstream 127.0.0.1{ ip_hash; # ip_hash策略 server 127.0.0.1:8080; server 127.0.0.1:8081; }
server{ location / { proxy_pass http://127.0.0.1; proxy_redirect default; } }
当一台Tomcat服务器宕机后并不能自动转到另一台Tomcat上。
解决:
upstream 127.0.0.1{ ip_hash; server 127.0.0.1:8080 fail_timeout=10; # ail_timeout=10 默认10s 可不配置 server 127.0.0.1:8081 fail_timeout=10; # ail_timeout=10 默认10s 可不配置 }
server{ location / { proxy_pass http://127.0.0.1; proxy_redirect default; # 新增配置 proxy_connect_timeout 3; #单位为秒 #proxy_send_timeout 3; #proxy_read_timeout 3; } }
这样配置之后,第一次请求不通,需要花费3秒钟时间,来找到合适的服务器,然后接下来的10内,正确服务器之前的服务器都不会接受请求了,每隔10s,会有一个3s。
max_fails和fail_timeout参数是配合使用的,按默认值,当某台upstreamserver挂了,表示在10s(fail_timeout)之内,有1(max_fails)个请求打到这台挂了的服务器,nginx就会把这台upstream server设为down机的状态,时长是10s,在这10s内如果又有请求进来,就不会被转到这台server上,过了10s重新认为这台server又恢复了
fail_timeout=0表示不检测
proxy_connect_timeout 1; #单位为秒 proxy_send_timeout 1; proxy_read_timeout 1;
表示一个请求到某个服务器,1s之后没有响应就发向另一个服务器
nginx超时自动重发
nginx中增加配置proxy_next_upstream off;可关闭