nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义的.
内容配置:
upstream nginx.oss.com{ server 127.0.0.1:8080; server 127.0.0.1:808; ip_hash; } server{ listen 80; location / { proxy_pass http://nginx.example.com; proxy_set_header Host $http_host; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 100m; } }ip_hash是容易理解的,但是因为仅仅能用ip这个因子来分配后端,因此ip_hash是有缺陷的.
例如:
1.nginx不是最前端的服务器。
2.ip_hash要求nginx一定是最前端的服务器,否则nginx得不到正确ip,就不能根据ip作hash。
3.nginx的后端还有其它方式的负载均衡。然后请求有经过其他分流了,则session无法定位到同意客户端了。