Nginx添加stickky保持会话共享

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx添加stickky保持会话共享相关的知识,希望对你有一定的参考价值。

出现这个问题,主要是因为session丢失问题,需要加一个模块nginx-sticky-module,可以防止session丢失(使用Nginx sticky模块实现基于cookie的负载均衡)。

  1. 下载nginx-sticky-module包 ??链接:https://pan.baidu.com/s/1kUTuR1H? ?密码:8h3h?

?2. ? 安装ssl(如果已经安装了,就不需要安装了,sticky模块依赖这个包)

yum?install?openssl??
yum?install?openssl-devel

3、重新添加模块,编译

./configure?--prefix=/application/nginx-1.10.2?--user=www?--group=www?--with-http_stub_status_module?--with-http_ssl_module?--add-module=/data/nginx-sticky-module-1.1
make

期间会报各种错,需要修改vim /data/nginx-sticky-module-1.1/ngx_http_sticky_module.c?
第6行添加一行

#include?<nginx.h>
#include?<ngx_config.h>
#include?<ngx_core.h>
#include?<ngx_http.h>


第332行附近

????????????????ngx_log_debug(NGX_LOG_DEBUG_HTTP,?pc->log,?0,?"[sticky/get_sticky_peer]?peer?found?at?index?%i",?selected_peer)
;
#if?defined(nginx_version)?&&?nginx_version?>=?1009000
????????????????iphp->rrp.current?=?peer;
#else
????????????????iphp->rrp.current?=?iphp->selected_peer;
#endif


修改 ?vim /data/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);

保存退出
重新

./configure?--prefix=/application/nginx-1.10.2?--user=www?--group=www?--with-http_stub_status_module?--with-http_ssl_module?--add-module=/data/nginx-sticky-module-1.1
make

成功

不要再make install 不然就重新安装了nginx

4.关闭原来的nginx

killall?nginx



5. 复制编译后的二进制文件到目录

cp?/application/nginx/sbin/nginx{,.bak}???先备份
cp?/data/nginx-1.10.2/objs/nginx?/application/nginx/sbin/nginx????再复制命令

6. 修改配置nginx文件,使插件sticky生效

[[email protected]?conf]#?vim?/application/nginx/conf/nginx.conf


在upstream中添加sticky;


http?{??
????upstream?uec_portal{??
????????#添加sticky模块后加入此配置??
????????sticky;??
????????#被代理的服务??
????????server?192.168.12.56:80;??
????????server?192.168.12.70:8080;??
????}??
??
??
????server?{??
????????#nginx监听的端口??
????????listen???????80;??
????????server_name??localhost;??
??
??
????????location?/?{??
????????????#代理??
????????????proxy_pass?http://uec_portal;??
????????}??
??
??
???}??
}

?


7. 测试配置文件是否OK

[[email protected]?conf]#?/application/nginx/sbin/nginx?-t
Enter?PEM?pass?phrase:
nginx:?the?configuration?file?/application/nginx-1.10.2/conf/nginx.conf?syntax?is?ok
nginx:?configuration?file?/application/nginx-1.10.2/conf/nginx.conf?test?is?successful

8.启动nginx


[[email protected]?conf]#?/application/nginx/sbin/nginx


9.测试。

至此session丢失问题就解决了。






以上是关于Nginx添加stickky保持会话共享的主要内容,如果未能解决你的问题,请参考以下文章

Nginx实现会话保持,集群模式下session域共享

nginx的会话共享

Nginx负载均衡会话共享

nginx+tomcat+memcache会话保持

19.负载均衡健康检查模块与源码安装Nginx

19.负载均衡健康检查模块与源码安装Nginx