Nginx的session一致性问题
1 | http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的, |
关于Session:
1 | session的常见实现形式是会话cookie(session cookie), |
Session共享
1 | 首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上, |
Session一致性解决方案
1.session复制
1 | tomcat 本身带有复制session的功能。(不选择这种方案) |
2.共享session
1 | 需要专门管理session的软件, |
在192.168.230.10进行如下操作:
1.安装memcached缓存数据库
1 | [root@node1 ~]# yum install memcached |
2.tomcat配置名称和session一致性配置
2.1.将jar包上传到tomcat的lib包中

2.2.在tomcat的server.xml中配置jvmRoute
1 | 进入tomcat的conf目录找到server.xml文件,并编辑 |

2.4.在context.xml的Context配置 Manager
1 | <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" |

3.配置nginx负载均衡
1 | 因为session一致性问题是在nginx负载均衡下出现的 |
3.1.进入tengine的conf目录
1 | [root@node1 ~]# cd /opt/modules/tengine-2.1.0/conf |
3.2.编辑nginx.conf文件
1 | [root@node1 conf]# vi nginx.conf |

3.3.重新启动nginx服务
1 | [root@node1 init.d]# service nginx stop |

在地址行输入检查页面是否能正常显示:http://192.168.230.10/
1 | 访问一次显示: |

1 | 在访问一次显示: |

4.配置/opt/modules/apache-tomcat-7.0.61/webapps/ROOT下的index.jsp文件
1 | <%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %> |

4.1.重新192.168.230.10主机的tomcat服务
1 | [root@node2 bin]# ./shutdown.sh |
在192.168.230.11进行如下操作:
5.tomcat配置名称和session一致性配置
5.1.将jar包上传到tomcat的lib包中

5.2.在tomcat的server.xml中配置jvmRoute
1 | 进入tomcat的conf目录找到server.xml文件,并编辑 |

5.3.在context.xml的Context配置 Manager
1 | <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" |

5.4.配置/opt/modules/apache-tomcat-7.0.61/webapps/ROOT下的index.jsp文件
1 | <%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %> |

5.5.重新192.168.230.11主机的tomcat服务
1 | [root@node2 bin]# ./shutdown.sh |
6.重新加载nginx服务
1 | [root@node1 html]# service nginx restart |

6.1.查看配置是否成功
1 | 在地址栏输入:http://www.sparsematrix.com/ |

1 | 刷新http://www.sparsematrix.com/地址 |

本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2016/02/22/Nginx的session一致性问题/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
知识 & 情怀 | 二者兼得