码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx添加stickky保持会话共享

时间:2017-12-08 16:30:46      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:解决nginx的session会话

出现这个问题,主要是因为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生效

[root@master?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

[root@master?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


[root@master?conf]#?/application/nginx/sbin/nginx


9.测试。

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






Nginx添加stickky保持会话共享

标签:解决nginx的session会话

原文地址:http://blog.51cto.com/dellinger/2048675

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!