https://github.com/yaoweibin/nginx_upstream_check_module

https://code.google.com/p/nginx-sticky-module/downloads/list

https://github.com/gnosek/nginx-upstream-fair       git clone git://github.com/gnosek/nginx-upstream-fair.git

百度云共享 http://pan.baidu.com/s/1hqELspA



1、nginx_http_upstream_check_module

unzip nginx_upstream_check_module-master.zip

tar -zxvf nginx-1.7.11.tar.gz

cd nginx-1.7.11

patch -p1 < /path/to/nginx_http_upstream_check_module/check_1.7.5+.patch

nginx-1.9.2以上请使用 patch -p0 < /path/to/nnginx_http_upstream_check_module/check_1.9.2+.patch  安装

Note
    If you use nginx-1.2.1 or nginx-1.3.0, the nginx upstream round robin
    module changed greatly. You should use the patch named
    'check_1.2.1.patch'.

    If you use nginx-1.2.2+ or nginx-1.3.1+, It added the upstream
    least_conn module. You should use the patch named 'check_1.2.2+.patch'.

    If you use nginx-1.2.6+ or nginx-1.3.9+, It adjusted the round robin
    module. You should use the patch named 'check_1.2.6+.patch'.

    If you use nginx-1.5.12+, You should use the patch named
    'check_1.5.12+.patch'.

    If you use nginx-1.7.2+, You should use the patch named
    'check_1.7.2+.patch'.

    The patch just adds the support for the official Round-Robin, Ip_hash
    and least_conn upstream module. But it's easy to expand my module to
    other upstream modules. See the patch for detail.


2、nginx-upstream-fair  (已经不支持nginx-1.9.2)

可以根据页面大小、加载时间长短智能的进行负载均衡,例子:

upstream your-site {

    server 127.0.0.1:5550;

    server 127.0.0.1:5551;

    fair;

}

server {

    listen 80;

    server_name yoursite.com www.yoursite.com;

    access_log /var/log/nginx/access.log;

location / {

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header X-Forwarded-Proto $scheme;

    client_max_body_size 10m;

    client_body_buffer_size 128k;

    proxy_connect_timeout 60s;

    proxy_send_timeout 90s;

    proxy_read_timeout 90s;

    proxy_buffering off;

    proxy_temp_file_write_size 64k;

    proxy_pass http://your-site;

    proxy_redirect off;

    }

}


unzip nginx-upstream-fair-master.zip

cd nginx-upstream-fair-master

patch -p2 < /path/to/nginx_http_upstream_check_module/upstream_fair.patch

can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/ngx_http_upstream_fair_module.c b/ngx_http_upstream_fair_module.c
|index a4419ca..af80bba 100644
|--- a/ngx_http_upstream_fair_module.c
|+++ b/ngx_http_upstream_fair_module.c
--------------------------
File to patch: /usr/local/src/nginx_upstream_check_module-master/upstream_fair.patch

       

3、nginx-sticky-module (该模块可实现基于cookie的负载均衡,已经不支持nginx-1.8.0)

tar -zxvf nginx-sticky-module-1.1.tar.gz

cd nginx-sticky-module-1.1

patch -p0 < /path/to/nginx_http_upstream_check_module/nginx-sticky-module.patch

/nginx-sticky-module-1.1/ngx_http_sticky_misc.c:281: error: passing argument 2 of ‘ngx_sock_ntop’ makes integer from pointer without a cast

nginx-1.5.x及以上和nginx-sticky-module-1.1编译会有点问题,应该是nginx新版本没有相应的nginx-sticky-module,解决办法是把nginx-sticky-module-1.1/ngx_http_sticky_misc.c的281行修改为:

digest->len = ngx_sock_ntop(in,sizeof(struct sockaddr_in), digest->data, len, 1);


cd  nginx-1.7.11

--prefix=/usr/local/nginx--user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.37 --with-http_realip_module --with-http_p_w_picpath_filter_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.2d --add-module=/usr/local/src/ngx_devel_kit-0.2.19 --add-module=/usr/local/src/lua-nginx-module-0.9.15/ --add-module=/usr/local/src/nginx_upstream_check_module-master --add-module=/usr/local/src/nginx-sticky-module-1.1 --add-module=/usr/local/src/nginx-upstream-fair-master

make; make install