nginx http proxy support for backend server health checks / status monitoring url

Weibin Yao yaoweibin at gmail.com
Fri Nov 1 05:58:52 UTC 2013


HPPS health check is difficult for the check module, I have added an
alternative feature for this request. The 'port' option can be
specifed with different port from the server's original port. For
example:

server {
    server 192.168.1.1:443;

     check interval=3000 rise=1 fall=3 timeout=2000 type=http port=80;
     check_http_send "GET / HTTP/1.0\r\n\r\n";
     check_http_expect_alive http_2xx http_3xx;
}

This feature has been exeisted in the develop branch for upstream
check module: (https://github.com/yaoweibin/nginx_upstream_check_module/tree/development)
Or tengine: http://tengine.taobao.org/document/http_upstream_check.html

2013/10/31 Ruslan Ermilov <ru at nginx.com>:
> On Thu, Oct 31, 2013 at 02:26:41PM +0200, Pasi Kärkkäinen wrote:
>> Hello,
>>
>> I'm using nginx as a http proxy / loadbalancer for an application which
>> which has the following setup on the backend servers:
>>
>> - https/403 provides the application at:
>>       - https://hostname-of-backend/app/
>>
>> - status monitoring url is available at:
>>       - http://hostname-of-backend/foo/server_status
>>       - https://hostname-of-backend/foo/server_status
>>
>> So the status url is available over both http and https, and the status url tells if the application is fully up and running or not.
>> Actual application is only available over https.
>>
>> It's important to decide the backend server availability based on the status url contents/reply,
>> otherwise you might push traffic to a backend that isn't fully up and running yet,
>> causing false errors to end users.
>>
>> So.. I don't think nginx currently provides proper status monitoring url support for proxy backends ?
>>
>> I've found some plugins for this, but they seem to have limitations aswell:
>>
>>       - http://wiki.nginx.org/HttpHealthcheckModule
>>               - https://github.com/cep21/healthcheck_nginx_upstreams
>>               - only http 1.0 support, no http 1.1 support
>>               - doesn't seem to be maintained anymore, latest version 2+ years old
>>
>>       - https://github.com/yaoweibin/nginx_upstream_check_module
>>               - only supports http backends, so health checks must be over http aswell, not over https
>>               - if actual app is on 443/https, cannot configure separate port 80 for health checks over http
>>               - only "ssl" health check possible for https backends
>>
>>
>> Any suggestions? Or should I start hacking and improving the existing plugins..
>> Thanks!
>
> This functionality is currently available in our commercial version:
> http://nginx.com/products/
>
> The documentation is here:
> http://nginx.org/en/docs/http/ngx_http_upstream_module.html#health_check
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx



-- 
Weibin Yao
Developer @ Server Platform Team of Taobao



More information about the nginx mailing list