Nginx健康检查自定义检查路径(非根路径)

Nginx官方提供的模块中,默认没有对负载均衡后端节点健康检查模块,必须使用第三方模块以打补丁形式安装使用,所以推荐使用Tengine

ngx_http_upstream_check_module

该模块可以为Tengine提供主动式后端服务器健康检查的功能,1.40+以上默认开启

upstream report {
        server 10.96.6.65:8080 weight=1  ;
        server 10.96.6.66:8080 weight=1  ;
        check interval=15000 rise=2 fall=3 timeout=5000 type=http;
        check_http_send "HEAD / HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
      }

    server {
        listen 80;
        server_name localhost;
        location / {
                 root   html;
                 proxy_pass http://report;
                 proxy_set_header Host $host;
                 proxy_set_header X-Forwarded-For $remote_addr;
                 index index.jsp index.html index.htm;
        }

以上配置将针对后端 http://IP:8080/做健康检测,但有问题的是,我们的服务不一定都是/结尾,有时需要加后缀才能访问到资源。比如,如果不在后端tomcat配置上下文路径那么(test.war)正常访问路径就是http://IP:8080/test,对于非根访问上述配置健康检查就一定都是error状态。
check_http_send字段 HEAD后面的 / 就是路径的配置,与其对应的正确能被识别到的地址为"HEAD /test/raqsoft/center/centerIndex.jsp HTTP/1.0\r\n\r\n",/后面可以为项目中的某个url只要能请求到就可以

upstream report {
        server 10.96.6.65:8080 weight=1  ;
        server 10.96.6.66:8080 weight=1  ;
        check interval=15000 rise=2 fall=3 timeout=5000 type=http;
        check_http_send "HEAD /test/raqsoft/center/centerIndex.jsp HTTP/1.0\r\n\r\n";#增加绝对路径
        check_http_expect_alive http_2xx http_3xx;
      }
指令 说明
interval 向后端发送的健康检查包的间隔
rise 如果连续成功次数达到rise_count,服务器就被认为是up
fall 如果连续失败次数达到fall_count,服务器就被认为是down
timeout 后端健康请求的超时时间
type tcp/http/mysql
check_http_send 可以配置http健康检查包发送的请求内容,推荐采用"HEAD"
check_http_expect_alive HTTP回复的成功状态,默认认为2XX和3XX的状态是健康的
weight 权重值越高,被请求频率越高

你可能感兴趣的:(nginx,nginx)