如何在Nginx中为相同的客户端IP和相同的浏览器进行负载平衡,作为会话持久性

s8vozzvw  于 2022-11-21  发布在  Nginx
关注(0)|答案(1)|浏览(169)

使用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;
    }
}
niknxzdl

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编译它

相关问题