Nginx做負載均衡時session共享問題詳解
阿新 • • 發佈:2017-09-01
壓縮 多臺 nts 獲得 hash 常見 hub img font
用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共享問題詳解