后台有两台tomcat,正常情况下nginx可以分发请求到指定的服务器上。如果其中一个tomcat宕机,nginx自动将全部请求发送到另一台tomcat上。
http {
...
upstream tomcatsyuqing {
server 192.168.0.102:9081 max_fails=1 fail_timeout=30s ;
server localhost:9081 max_fails=1 fail_timeout=30s;
}
...
server {
...
location ^~ /load/ {
proxy_pass http://load;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
...
}
upstream 两个参数:max_fails=1 fail_timeout=30s ,如果某台server在fail_timeout时间出现了max_fails次链接失败,那么nginx会认为她已经挂掉,在fail_timeout时间内不再去请求它。
由此以来,使用非session的网站架构可以通过后台有两个tomcat不断的轮询请求后台服务可以设置权重 weight=n;如果其中有一个tomcat宕机关闭 nginx会通过upstream的那个两个参数效果在指定时间内不在去访问已宕机的tomcat。
有个第三方模块 nginx_upstream_check_module 可以专门用来检测后端server的健康情况。
yaoweibin/nginx_upstream_check_module: Health checks upstreams for nginx