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

简介: nginx-sticky模块可实现会话粘连,确保用户请求始终落在同一台后端服务器。需下载对应Nginx源码,安装编译工具,通过`--add-module`将插件编入Nginx,替换原执行文件,并在upstream中添加`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
    
  1. 配置编译参数(关键!)

    先看看你原来的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`之类的,别漏!)
  1. 编译安装

    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
    
显示 `ok`和 `successful`就没问题。
  1. 启动/重启Nginx

    /usr/local/nginx/sbin/nginx  # 启动
    # 或者重启:/usr/local/nginx/sbin/nginx -s reload
    
  1. 验证效果

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

相关文章
|
4天前
|
云安全 人工智能 自然语言处理
|
9天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
832 24
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
402 3
|
12天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
813 59
Meta SAM3开源:让图像分割,听懂你的话
|
1天前
|
弹性计算 网络协议 Linux
阿里云ECS云服务器详细新手购买流程步骤(图文详解)
新手怎么购买阿里云服务器ECS?今天出一期阿里云服务器ECS自定义购买流程:图文全解析,阿里云服务器ECS购买流程图解,自定义购买ECS的设置选项是最复杂的,以自定义购买云服务器ECS为例,包括付费类型、地域、网络及可用区、实例、镜像、系统盘、数据盘、公网IP、安全组及登录凭证详细设置教程:
167 114
|
5天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
351 19
|
2天前
|
人工智能 安全 小程序
阿里云无影云电脑是什么?最新收费价格个人版、企业版和商业版无影云电脑收费价格
阿里云无影云电脑是运行在云端的虚拟电脑,分企业版和个人版。企业版适用于办公、设计等场景,4核8G配置低至199元/年;个人版适合游戏、娱乐,黄金款14元/月起。支持多端接入,灵活按需使用。
244 164