Nginx添加stickky保持会话共享

简介:

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

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

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

1
2
yum  install  openssl  
yum  install  openssl-devel

3、重新添加模块,编译

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
1
make

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

1
2
3
4
#include <nginx.h>
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>


第332行附近

1
2
3
4
5
6
7
                 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行

改成

1
         digest->len = ngx_sock_ntop( in , sizeof(struct sockaddr_in), digest->data, len, 1);

保存退出
重新

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
1
make

成功

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

4.关闭原来的nginx

1
killall nginx



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

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

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

1
[root@master conf] # vim /application/nginx/conf/nginx.conf


在upstream中添加sticky;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

1
2
3
4
[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


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


9.测试。

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










本文转自 蓝叶子Sheep 51CTO博客,原文链接:http://blog.51cto.com/dellinger/2048675,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
负载均衡 前端开发 应用服务中间件
技术好文共享:超详细的Nginx简易教程
技术好文共享:超详细的Nginx简易教程
|
6月前
|
应用服务中间件 nginx
Nginx源码阅读:nginx_shmtx共享互斥锁(进程锁)
Nginx源码阅读:nginx_shmtx共享互斥锁(进程锁)
134 0
|
存储 负载均衡 应用服务中间件
【web项目】keepalived高可用+LVS负载均衡+nginx动静分离+nfs共享存储
【web项目】keepalived高可用+LVS负载均衡+nginx动静分离+nfs共享存储
279 0
【web项目】keepalived高可用+LVS负载均衡+nginx动静分离+nfs共享存储
|
存储 负载均衡 应用服务中间件
Nginx之会话管理解读
Nginx之会话管理解读
|
负载均衡 关系型数据库 应用服务中间件
共享nfs和nginx负载均衡
共享nfs和nginx负载均衡
130 0
共享nfs和nginx负载均衡
|
负载均衡 应用服务中间件 Shell
共享nfs和nginx负载均衡
共享nfs和nginx负载均衡
165 0
|
存储 负载均衡 NoSQL
Nginx如何实现负载均衡以及Session共享教程详解
最近迷上了Nginx,真实麻雀虽小,五脏俱全..功能实在强大.. nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。
2431 0
|
存储 负载均衡 NoSQL
nginx反向代理做负载均衡以及使用redis实现session共享配置详解
nginx反向代理做负载均衡以及使用redis实现session共享配置详解
563 0
nginx反向代理做负载均衡以及使用redis实现session共享配置详解
|
存储 负载均衡 调度
|
存储 Java 应用服务中间件