1 下载 Session Sticky
wget https://nginx-sticky-module.googlecode.com/files/nginx-sticky-module-1.1.tar.gz
2 安装模块
如果
Nginx
之前已经安装了,可以通过
nginx -V
命令查看当时编译的参数。在参数后面追加安装
Session Sticky
模块的参数,
避免影响之前
Nginx
已有模块。
进入
nginx
源码目录,执行命令:
./configure … --add-module=/usr/local/src/nginx-sticky-module-1.1
make
make install
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);
3 激活模块
在
upstream
块中添加
sticky;
即可激活
Session Sticky
模块。
upstream {
sticky;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
upstream cluster_test {
sticky[name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1][no_fallback];
server 192.168.100.209:80;
server 192.168.100.225:80;
}
name: 可以为任何的string字符,默认是route
domain:哪些域名下可以使用这个cookie
path:哪些路径对启用sticky,例如path/test,那么只有test这个目录才会使用sticky做负载均衡
expires:cookie过期时间,默认浏览器关闭就过期,也就是会话方式。
no_fallbackup:如果设置了这个,cookie对应的服务器宕机了,那么将会返回502(bad gateway 或者 proxy error),建议不启用。