nginx使用sticky基于cookie的会话保持方式

 更新时间:2023年12月25日 17:06:15   作者:endzhi  
这篇文章主要介绍了nginx使用sticky基于cookie的会话保持方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

nginx使用sticky基于cookie的会话保持

在nginx做负载均衡下,为了确保一个客户只和一台后端服务器通信达到会话保持作用,如使用nginx自带ip_hash,但有很大的缺陷,基于客户端在集中的一个NAT出口IP,如一个大公司网络下多人来访,结果就会分配请求集中于某一后端的服务器,负载就不均匀了。

nginx-sticky-module这个第三方模块用于添加一个粘性cookie,该粘性cookie始终转发到同一上游服务器。

使用cookie跟踪上游服务器使每个浏览器都是唯一的,当处理多个后端服务器时,一个客户端(浏览器)总是由同一台后端服务器提供服务(例如用于会话持久性)有时很有用。

当然浏览器不支持Cookie时,粘性模块也无法应用。

安装部署

在现有的nginx加装,从源代码重新编译Nginx来获得该模块

wget  https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz
tar -zxvf   master.tar.gz
mv  nginx-goodies-nginx-sticky-module-ng-08a395c66e42   nginx-sticky

先检测nginx已安装的模块

/usr/local/nginx/sbin/nginx  -V

再次进入nginx的安装包位置

cd nginx-1.17.3

按以上结果,加装nginx-sticky进去

./configure --prefix=/usr/local/nginx --add-module=/root/nginx-sticky/  --with-http_stub_status_module --with-http_ssl_module --with-pcre
 
make  (不要make install  这就覆盖了)

备份先

 cp /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.old
 cp ./objs/nginx   /usr/local/nginx/sbin/nginx

安装完毕,检测已安装模块

/usr/local/nginx/sbin/nginx  -V

配置nginx sticky

nginx 的upstream使用sticky,如下

upstream backend {
     sticky;
     server 192.168.100.209:80;
     server 192.168.100.225:80;
}

即可开启了sticky功能使用,已经满足一般业务需求,也可以与nginx_http_upstream_check_module一起使用,在这就不详细说明了。

如需其他用法,参考。

sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback] [secure] [httponly];
  • name: 可以为任何的string字符,默认是route
  • domain:哪些域名下可以使用这个cookie
  • path:指定路径启用sticky,默认路径/,例如path/test,只有test目录才会使用sticky做负载均衡。
  • expires:cookie过期时间,默认浏览器关闭就过期,也就是会话方式 用发sticky expires=60s;
  • no_fallback:如请求包含cookie且相应后端不可用,nginx将返回502(错误网关或代理错误)。
  • secure:安全启用安全Cookie,仅通过https转移。
  • httponly:启用cookie不会通过js泄漏。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在nginx中配置pathinfo模式支持thinkphp的URL重写

    在nginx中配置pathinfo模式支持thinkphp的URL重写

    这篇文章主要介绍了在nginx中配置pathinfo模式的例子,用来支持thinkphp的URL重写,并解决了thinkphp一个路径问题,需要的朋友可以参考下
    2014-04-04
  • Nginx实现负载均衡的方法总结

    Nginx实现负载均衡的方法总结

    这篇文章主要给大家总结介绍了关于Nginx实现负载均衡的一些方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 举例详解Tomcat与Nginx、Apache的区别是什么

    举例详解Tomcat与Nginx、Apache的区别是什么

    Nginx和Apache都是广泛使用的Web服务器软件,它们各自具有独特的特点和优势,适用于不同的应用场景,下面这篇文章主要介绍了Tomcat与Nginx、Apache区别是什么的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-03-03
  • nginx-proxy-manager初次登录报错502 bad gateway解决

    nginx-proxy-manager初次登录报错502 bad gateway解决

    这篇文章主要给大家介绍了关于nginx-proxy-manager初次登录报错502 bad gateway的解决办法,502 Bad Gateway服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答,需要的朋友可以参考下
    2024-04-04
  • Nginx 的多站点配置方案

    Nginx 的多站点配置方案

    这篇文章主要介绍了Nginx 的多站点配置方案,需要的朋友可以参考下
    2017-07-07
  • Nginx部署React项目时重定向循环问题的解决方案

    Nginx部署React项目时重定向循环问题的解决方案

    Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介绍了相关的解决方法,需要的朋友可以参考下
    2025-05-05
  • Nginx配置https脚本实例

    Nginx配置https脚本实例

    这篇文章主要为大家介绍了Nginx配置https脚本实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • nginx配置反向代理到gin的方法步骤

    nginx配置反向代理到gin的方法步骤

    本文使用Nginx进行反向代理到Gin应用的配置步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • nginx访问报403错误的几种情况详解

    nginx访问报403错误的几种情况详解

    最近访问新安装的nginx,发现报403错误,所以这篇文章主要给大家介绍了关于nginx访问报403错误的几种情况,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Nginx 中的Rewrite 使用示例详解

    Nginx 中的Rewrite 使用示例详解

    Nginx的rewrite模块提供了强大的URL重写和重定向功能,可以用于实现各种复杂的 URL 处理需求,本文详细介绍了rewrite的命令、语法、含义、环境和示例,希望能够帮助用户更好地理解和使用Nginx的 rewrite功能,感兴趣的朋友跟随小编一起看看吧
    2025-11-11

最新评论