nginx 配合多台服务器实现session共享

234 阅读1分钟

场景:

  • 后台使用session实现保存用户登录状态,
  • 后台是有多台服务器的集群,
  • 后台使用nginx反向代理做请求转发

问题:如何解决多台服务器之间session不共享问题

  1. 当然可以使用redis 数据库保存用户session 。 这里主要是想说使用nginx配置解决,所以暂不讨论
  2. 启用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;
    }
}