场景:
- 后台使用session实现保存用户登录状态,
- 后台是有多台服务器的集群,
- 后台使用nginx反向代理做请求转发
问题:如何解决多台服务器之间session不共享问题
- 当然可以使用redis 数据库保存用户session 。 这里主要是想说使用nginx配置解决,所以暂不讨论
- 启用nginx的ip_hash 算法自动识别该用户,固定转发到一台服务器,这样session就不会丢失,
upstream backend{
ip_hash; // 只要这个标识就启用该功能
server xxx.xxx.xxx.xxx:9001;
server xxx.xxx.xxx.xxx:9002;
server xxx.xxx.xxx.xxx:9003;
}
server {
listen 8080;
server_name localhost;
location /{
proxy_pass http://backend;
}
}