nginx sticky
时间: 2025-01-09 17:36:08 浏览: 36
### 实现 Nginx 中的会话保持
为了确保特定客户端请求始终被路由到同一台服务器处理,可以配置 Nginx 使用 `ip_hash` 或者通过设置基于 cookie 的粘性会话来实现这一目标。
#### 方法一:使用 ip_hash 指令
当需要将来自同一个 IP 地址的请求分配给固定的上游服务器时,可以在 upstream 块内加入 `ip_hash;` 指令[^2]:
```nginx
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
```
这种方法简单易行,但是它依赖于客户端的真实 IP 地址,在某些情况下可能不够灵活,比如 NAT 环境下多个用户共享相同的公网 IP。
#### 方法二:基于 Cookie 的 Sticky Sessions
更常见的做法是利用 cookies 来跟踪用户的会话信息。这可以通过安装额外模块如 `ngx_http_upstream_sticky_module` 并适当调整配置文件完成:
```nginx
http {
...
upstream myapp {
sticky cookie srv_id expires=1h domain=.example.com path=/;
server app_server_01;
server app_server_02;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://myapp;
}
}
}
```
上述配置创建了一个名为 `srv_id` 的 cookie,并将其绑定至选定的应用程序实例上;该 cookie 将持续一个小时有效期内都指向同一应用节点。
阅读全文
相关推荐

















