Nginx中共享session会话配置方法例子

 更新时间:2014年07月31日 09:10:21   投稿:junjie  
这篇文章主要介绍了Nginx中共享session会话配置方法例子,最后使用第三方模块upstream_hash解决了这个问题,需要的朋友可以参考下

Session一般都指时域。在计算机术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间。

Session一般都指时域。在计算机术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间。

通常情况下能把session改成cookie,就能避开session的一些弊端,在从前看的一本J2EE的书上,也指明在集群系统中不能用session,否则惹出祸端来就不好办。如果系统不复杂,就优先考虑能否将session去掉,改动起来非常麻烦的话,再用下面的办法。

应用服务器自行实现共享

已知的,php可以用数据库或memcached来保存session,从而在php本身建立了一个session集群,用这样的方式可以令 session保证稳定,即使某个节点有故障,session也不会丢失,适用于较为严格但请求量不高的场合。但是它的效率是不会很高的,不适用于对效率要求高的场合。

以上两个办法都跟nginx没什么关系,下面来说说用nginx该如何处理:

ip_hash

nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的
session,ip_hash是在upstream配置中定义的:

复制代码 代码如下:

upstream backend{
server 127.0.0.1:8001;
server 127.0.0.1:8002;
ip_hash;
}

ip_hash是容易理解的,但是因为仅仅能用ip这个因子来分配后端,因此ip_hash是有缺陷的,不能在一些情况下使用:

1、nginx不是最前端的服务器。ip_hash要求nginx一定是最前端的服务器,否则nginx得不到正确ip,就不能根据ip作hash。譬如使用 的是squid为最前端,那么nginx取ip时只能得到squid的服务器ip地址,用这个地址来作分流是肯定错乱的。

2、nginx的后端还有其它方式的负载均衡。假如nginx后端又有其它负载均衡,将请求又通过另外的方式分流了,那么某个客户端的请求肯定不能定位到同一 台session应用服务器上。这么算起来,nginx后端只能直接指向应用服务器,或者再搭一个squid,然后指向应用服务器。最好的办法是用 location作一次分流,将需要session的部分请求通过ip_hash分流,剩下的走其它后端去。

upstream_hash

为了解决ip_hash的一些问题,可以使用upstream_hash这个第三方模块,这个模块多数情况下是用作url_hash的,但是并不妨碍将它用来做session共享:
假如前端是squid,他会将ip加入x_forwarded_for这个http_header里,用upstream_hash可以用这个头做因子,将请求定向到指定的后端:

复制代码 代码如下:
hash $http_x_forwarded_for;

这样就改成了利用x_forwarded_for这个头作因子,在nginx新版本中可支持读取cookie值,所以也可以改成:

复制代码 代码如下:
hash $cookie_jsessionid;

相关文章

  • 一文详解如何高效查找与管理Nginx进程

    一文详解如何高效查找与管理Nginx进程

    在Linux系统中,Nginx是一个非常流行的Web服务器和反向代理服务器,要查找和管理Nginx进程,你可以使用多种命令行工具和技巧,以下是一些常用的方法,需要的朋友可以参考下
    2025-08-08
  • nginx隐藏响应头server信息和版本号信息的操作方法

    nginx隐藏响应头server信息和版本号信息的操作方法

    文章介绍了两种隐藏或修改Nginx响应头中server信息的方法:一种是通过修改配置文件全局段添加`server_tokens off`,另一种是重新编译Nginx并修改Banner信息,两种方法分别适用于传统部署和需要更灵活自定义的情况,需要的朋友可以参考下
    2025-02-02
  • Nginx+Windows负载均衡配置方法

    Nginx+Windows负载均衡配置方法

    Nginx负载均衡如何才能实现呢?这个问题有很多的程序员都希望知道,下面我们就向大家详细的介绍有关Nginx负载均衡的信息
    2012-11-11
  • 内网环境nginx配置https访问的过程详解

    内网环境nginx配置https访问的过程详解

    这篇文章主要介绍了内网环境nginx配置https访问,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Nginx开启一个参数就能让你的WEB性能提升3倍的方法

    Nginx开启一个参数就能让你的WEB性能提升3倍的方法

    这篇文章主要介绍了Nginx开启一个参数就能让你的WEB性能提升3倍的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Nginx转发鉴权全过程

    Nginx转发鉴权全过程

    这篇文章主要介绍了Nginx转发鉴权全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 详解Ngigx+Tomcat配置动静分离,负载均衡

    详解Ngigx+Tomcat配置动静分离,负载均衡

    本篇文章主要介绍了Ngigx+Tomcat配置动静分离,负载均衡,具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • Nginx搭建图片视频服务器的部署步骤

    Nginx搭建图片视频服务器的部署步骤

    这篇文章主要介绍了Nginx搭建图片视频服务器的部署步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • nginx安装全过程

    nginx安装全过程

    这篇文章详细介绍了如何在Linux系统上安装和配置Nginx服务器的步骤,包括安装依赖、下载、解压、配置和启动Nginx,通过这些步骤,用户可以成功地在服务器上安装并运行Nginx,以便提供网页服务
    2026-03-03
  • 详解Nginx启动失败的几种错误处理

    详解Nginx启动失败的几种错误处理

    这篇文章主要介绍了详解Nginx启动失败的几种错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论