一、nginx实现Session会话保持,可以使用ip_hash和cookie。
参考:https://www.cnblogs.com/tssc/p/7481885.html
1.ip hash,根据客户端的IP,将请求分配到不同的服务器上
2.cookie,服务器给客户端下发一个cookie,具有特定cookie的请求会分配给它的发布者
注意:cookie需要浏览器支持,且有时候会泄露数据
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route。
使用第三方nginx-sticky-module模块。
nginx-sticky-module模块下载:
1、https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/downloads/
2、https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/08a395c66e42.zip
然后解压出源码,使用--add-module 加源码路径添加这个模块,如下
./configure ... --add-module=/absolute/path/to/nginx-sticky-module-ng
unzip -D nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42 nginx-sticky-module-ng
cp -rf nginx/ nginx_bak
./configure --prefix=/www/wdlinux/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/www/tools/pcre-8.42 --with-zlib=/www/tools/zlib-1.2.11 --with-stream --add-module=/app/soft/nginx-sticky-module-ng
make
make install
如果nginx正运行这不能断开使用
(备份sbin/nginx,拷贝objs/nginx 覆盖之前sbin/nginx)
或者make upgrade
3使用
upstream test{
#ip_hash;
sticky; #使用sticky算法
server 192.168.0.123:8180; #后端服务器1
server 192.168.0.124:8180; #后端服务器2
}