Nginx以前对session 保持支持不太好,主要采用ip_hash把同一来源的客户(同一C段的IP)固定指向后端的同一台机器,ip_hash有个缺点是不能实现很好的负载均衡;直到nginx的扩展模块nginx-sticky-module的出现,解决了session sticky的问题。
基本的原理:
首先根据轮询RR随机到某台后端,然后在响应的Set-Cookie上加上route=md5(upstream)字段,第二次请求再处理的时候,发现有route字段,直接导向原来的那个节点。
配置说明:
upstream cluster_test {
sticky[name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1][no_fallback];
server 192.168.100.209:80;
server 192.168.100.225:80;
}
name: 可以为任何的string字符,默认是route
domain:哪些域名下可以使用这个cookie
path:哪些路径对启用sticky,例如path/test,那么只有test这个目录才会使用sticky做负载均衡
expires:cookie过期时间,默认浏览器关闭就过期,也就是会话方式。
no_fallbackup:如果设置了这个,cookie对应的服务器宕机了,那么将会返回502(bad gateway 或者 proxy error),建议不启用。
Nginx编译
添加nginx_upstream_check_module
unzipnginx_upstream_check_module-master.zip
tar -zxf nginx-1.5.6.tar.gz
cd nginx-1.5.6
patch -p1 <../nginx_upstream_check_module-master/check_1.2.6+.patch
添加nginx-sticky-module,编译安装Nginx
tar -xzf nginx-sticky-module-1.1.tar.gz
cd nginx-1.5.6
./configure--prefix=/opt/lsmp/3rdparty/nginx/1.5.6 --with-http_stub_status_module--with-http_ssl_module --with-openssl=../openssl-1.0.1c--with-http_realip_module --add-module=../nginx-sticky-module-1.1--add-module=../nginx_upstream_check_module-master
make
make install
注意事项
nginx-1.5.x和nginx-sticky-module-1.1编译会有点问题,应该是nginx新版本没有相应的nginx-sticky-module,解决办法是把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);
由于编译需要,编译安装Nginx之前,要先安装openssl
nginx-sticky-module的cookie过期时间,默认浏览器关闭就过期,也就是会话方式。
相关推荐
**Nginx Sticky Module Ng 1.2.6 源码分析与应用** Nginx 是一款高性能、轻量级的 HTTP 和反向代理服务器,广泛用于网站部署和负载均衡。在某些应用场景中,例如在线购物车、游戏服务器或者需要保持用户会话一致性...
包括nginx-1.10.3.tar.gz、nginx-sticky-module-1.1.tar.gz、zlib-1.2.8.tar.gz、openssl-1.0.1c.tar.gz、pcre-8.21.tar.gz以及按照过程可能的错误解决发法
**Nginx与 Sticky 模块** Nginx 是一款高性能、轻量级的 Web 服务器和反向代理服务器,广泛应用于网站高并发场景。它以其事件驱动的架构和非阻塞I/O模型,提供了出色的性能和稳定性。而 `sticky` 模块是 Nginx 的一...
在Ubuntu 14.04.2操作系统上安装和配置Nginx 1.6以及Sticky模块是一项关键的任务,特别是在构建高可用性和负载均衡的Web服务器环境时。以下是对这个主题的详细解释: 首先,Nginx是一个高性能的HTTP和反向代理...
**Nginx Sticky Module详解** `nginx-sticky-module-1.26` 是一个专为 Nginx 设计的负载均衡模块,它的主要功能是在负载均衡策略中保持客户端请求的会话持久性。这个模块在分布式系统中尤其有用,它可以确保来自...
nginx容器内安装目录: /home/nginx/nginx_stream 免重新编译,解决1.24.0 编译sticky 失败问题,启动即用
**Nginx Sticky 插件详解** 在高并发的网络服务环境中,负载均衡是一个至关重要的概念,它能够将用户请求合理地分散到多台服务器上,以提高系统的可用性和响应速度。然而,有些应用场景需要保持会话持久性,即来自...
标题中的“nginx实现多个tomcat7直接...以上就是关于“nginx实现多个tomcat7直接session共享所需jar包”的详细解释,包括了Session共享的背景、原理以及可能的实现方法。希望这些信息能帮助你理解和解决实际问题。
总结来说,实现Nginx、Tomcat集群与Memcached的Session共享,需要正确配置Nginx的反向代理设置,引入并配置Tomcat的Memcached Session Manager,以及确保所有必要的jar包已经正确安装。这一过程虽然涉及多个环节,但...
标题 "tomcat+nginx+session" 暗示了我们讨论的主题是关于使用Tomcat作为应用服务器,Nginx作为反向代理服务器,并且涉及到如何在这样的架构中处理和共享用户会话(session)。在分布式系统中,正确处理session是...
Nginx在分发请求时,可以通过粘滞会话(sticky session)策略确保来自同一用户的请求总是被转发到同一个Tomcat实例,从而保持session的一致性。 **实现步骤**: 1. **安装与配置Redis**:首先在集群的所有节点上...
5. **Nginx配置**:在Nginx的配置文件中,你可以使用`ip_hash`或`sticky`模块来基于用户的IP地址或特定cookie保持会话粘滞,确保同一用户的请求始终路由到同一台Tomcat服务器,以减少Session同步的需求。 6. **测试...
在 Session 处理方面,文章介绍了使用 nginx-sticky-module 模块来实现 Session 处理,并使用 nginx_upstream_check_module 来检测网络连接。 在配置过程中,文章详细介绍了安装 JDK、JBOSS、Nginx、VirtualBox 等...
同时,Nginx还可以协助实现session粘滞(sticky sessions),即确保来自同一用户的请求始终被路由到同一个Tomcat实例,从而避免了session同步的问题。 4. Session共享实现:在Tomcat中,可以通过配置`Context`元素...
7. **其他Session共享策略**:除了上述的Nginx-upstream-jvm-route,还可以使用如 sticky sessions(基于Cookie的粘滞会话),通过在客户端保存特定的服务器标识来实现Session的保持;或者利用外部存储如Redis、...
- **配置Nginx**:在Nginx的配置文件中设置负载均衡策略,可以实现基于session的会话粘滞性(sticky session),确保同一用户请求始终被转发到处理其session的特定Tomcat实例。 3. **安装指南**: - **安装...
1. 配置Nginx:在Nginx的配置文件中,我们需要设置反向代理规则,将所有需要session共享的请求指向同一组后端服务器,并开启session亲和性(sticky session),确保用户的后续请求始终被发送到最初处理登录请求的...
2. ** Sticky Session**:`Nginx`配置中启用`sticky`,使用户请求始终定向到同一台服务器,保证`session`不会丢失。但这不适用于服务器故障情况。 3. **Session Replication**:在`Tomcat`集群间复制`session`数据。...
本文主要介绍了一种使用`nginx`、`IIS`和`Redis`来解决多站点间Session一致性问题的技术方案。`Redis`是一种高效、轻量级的内存数据结构存储系统,常被用作分布式环境下的Session存储。以下是详细步骤和相关知识点:...