Nginx做负载均衡时session共享问题详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx做负载均衡时session共享问题详解相关的知识,希望对你有一定的参考价值。
用nginx做负载均衡时,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态。
再者Nginx连接Memcached集群时,Nignx的请求从memcached服务器中根据key获得了value则直接返回value,如果没有获得到value则去mysql中查询再返回。
location / {
set $memcached_key "$request_uri"; #设置请求memcached服务器的key
memcached_pass 127.0.0.1:11211;
error_page 404 502 504 /callback.do; #设置回调函数查询数据库
}
多台memcached服务器,如何保持Nginx和Java与memcached同步?
session是存放在服务器上的,session共享问题怎么解决?
解决方案
1、参阅:http://blog.csdn.net/xluren/article/details/16951247
2、使用第三方模块ngx_http_consistent_hash通过一致性哈希算法来选择合适的后端节点。
Nginx的ngx_http_consistent_hash模块的官网使用文档:https://www.nginx.com/resources/wiki/modules/consistent_hash/
下载地址 https://github.com/replay/ngx_http_consistent_hash
下载:
解压缩:
编译安装到Nginx:
关掉Nginx
Nginx.conf配置:
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream servers {
consistent_hash $request_uri;
server 192.168.1.86:80;
server 192.168.1.88:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://servers;
}
}
}
以上是关于Nginx做负载均衡时session共享问题详解的主要内容,如果未能解决你的问题,请参考以下文章