nginx-sticky怎么用 Nginx 负载均衡添加 sticky 模块完整步骤

第一步:先搞懂这是啥

nginx-sticky是个能让用户每次访问都落到同一台后端服务器的插件(比如你有好几台Tomcat/Node服务器,用它就能让用户一直连其中一台)。解压后一般是 .c文件(比如 ngx_http_sticky_module.c)和说明文档。

**第二步:准备环境(必须装这些!)**​
  1. 装Nginx源码 :去 Nginx官网下和你现在用的Nginx版本一致的源码(别版本对不上,不然编译会炸),nginx-sticky安装包下载:https://pan.quark.cn/s/ed2504ebd68d

  2. 装依赖工具 :编译需要 gccmakepcre-devel(正则支持)、zlib-devel(压缩支持),Linux直接敲:

    复制代码
    # CentOS/RHEL
    yum install gcc make pcre-devel zlib-devel -y
    # Ubuntu/Debian
    apt-get install gcc make libpcre3-dev zlib1g-dev -y
第三步:把插件编进Nginx里

假设你的Nginx安装在 /usr/local/nginx,源码放在 /opt/nginx-1.20.2,插件解压在 /opt/nginx-sticky

  1. 进Nginx源码目录

    复制代码
    cd /opt/nginx-1.20.2
  2. 配置编译参数(关键!)

    先看看你原来的Nginx编译了啥参数(记下来!):

    复制代码
    /usr/local/nginx/sbin/nginx -V  # 注意是大写V,会输出 --prefix=/usr/local/nginx ... 这些

    然后复制这些参数,加上插件的路径,执行 ./configure。比如原来参数是 --prefix=/usr/local/nginx,现在加插件的路径(假设插件 .c文件在 /opt/nginx-sticky):

    复制代码
    ./configure --prefix=/usr/local/nginx [你原来的其他参数] --add-module=/opt/nginx-sticky

    [你原来的其他参数]就是 -V输出的那些,比如 --with-http_ssl_module之类的,别漏!)

  3. 编译安装

    复制代码
    make  # 只编译,别make install!不然会覆盖原Nginx

    编译完,把新生成的 objs/nginx替换原来的Nginx可执行文件(记得先停Nginx!):

    复制代码
    # 停Nginx(如果开着的话)
    /usr/local/nginx/sbin/nginx -s stop
    # 备份原Nginx(以防翻车)
    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    # 替换成新的
    cp objs/nginx /usr/local/nginx/sbin/nginx
第四步:改Nginx配置文件

打开你的Nginx配置文件(一般在 /usr/local/nginx/conf/nginx.conf),在 upstream块里加 sticky;(就这么简单!)。

举个栗子:

复制代码
http {
    upstream my_servers {  # 你的后端服务器组
        server 192.168.1.10:8080;
        server 192.168.1.11:8080;
        sticky;  # 加上这句,启用粘性会话
        # 可选参数:比如 sticky expires=1h domain=.example.com path=/;
        # expires 是cookie过期时间,domain/path 是cookie作用域
    }

    server {
        listen 80;
        location / {
            proxy_pass http://my_servers;  # 代理到上面的upstream
        }
    }
}
第五步:测试能不能用
  1. 检查配置有没有错

    复制代码
    /usr/local/nginx/sbin/nginx -t

    显示 oksuccessful就没问题。

  2. 启动/重启Nginx

    复制代码
    /usr/local/nginx/sbin/nginx  # 启动
    # 或者重启:/usr/local/nginx/sbin/nginx -s reload
  3. 验证效果

    开两个浏览器(或清缓存),反复刷新页面,看是不是一直访问同一台后端服务器(可以看后端服务器的日志,比如Tomcat的 localhost_access_log,IP对应的请求是不是都落一台)。

相关推荐
QQ1__81151751526 分钟前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
John_ToDebug27 分钟前
深入剖析 WebHostView:浏览器内核中的桌面级 Web 宿主
chrome
钛态27 分钟前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子29 分钟前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室30 分钟前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI31 分钟前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing31 分钟前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者31 分钟前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
测试修炼手册31 分钟前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
AI老李33 分钟前
2026 年 Web 前端开发的 8 个趋势!
前端