git clone git://github.com/gnosek/nginx-upstream-fair.git
百度云共享
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