使用Nginx我得到了平衡服务器作为会话持久性,但有一个问题与我的客户端的IP遭受这样:
10.12.20.56
10.12.20.57
10.12.20.58
而IP哈希机制使用前3个八位字节作为哈希。我也使用了这种类型:hash $ remote_addr$http_user_agent;
但是因为我的客户端的浏览器是相似的,所以所有的客户端都在同一台服务器上进行平衡。
这是我的load-balancer.conf
:
upstream backend {
hash $remote_addr$http_user_agent;
server 10.104.2.130:9443 ;
server 10.104.2.140:9443;
}
server {
listen 444 ssl default_server;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass https://backend;
add_header Set-Cookie cip=$upstream_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
# deny all;
}
}
1条答案
按热度按时间niknxzdl1#
你应该使用一个粘滞cookie,它可以在粘滞会话中使用https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#enabling-session-persistence
还有一些方法可以获得支持粘性会话的Nginx,你可以在这里找到一些(旧的)说明https://www.acesti.it/en/nginx-sticky-session/
或者可以使用sticky模块http://firzhanblogger.blogspot.com/2015/05/how-to-enable-nginx-sticky-module-in.html编译它