Nginx可以通过ngx_http_upstream_module模块实现Session共享。Session共享主要用于:
- 解决上游应用服务器无状态的问题,保证用户会话信息不丢失。
- 避免上游应用服务器重新创建Session,减轻服务器压力。
实现Session共享需要以下步骤:
1、 定义upstream块,指定上游应用服务器地址与发起故障转移的策略。常用策略为ip_hash或sticky。
- ip_hash:通过对客户端IP计算hash值Fixed服务器,可实现Session保持。
- sticky:通过cookie检查客户端与服务器的绑定关系,将请求定向到同一台服务器,可实现Session保持。
upstream app_servers {
ip_hash;
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
2、 在location块中使用proxy_pass将请求反向代理到上游服务器组。
location / {
proxy_pass http://app_servers;
}
3、 其他设置,如超时时间等。
location / {
proxy_pass http://app_servers;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
例如完整配置:
upstream app_servers {
ip_hash;
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
server {
location / {
proxy_pass http://app_servers;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
}
这种配置可以实现用户的会话保持,避免Session信息丢失,请求被反向代理到不同服务器。