nginx反向代理配置
1.说明
由于socket.io在不支持html5的浏览器下客户端使用轮询的方式模拟实时会话,因此在socket.io server端集群的情况下,轮询时会负载到其他服务端导致功能异常。
为了解决此问题,nginx应使用ip_hahs作为反向代理的负载均衡策略。而ip_hash的缺陷在于,如果当前nginx未处于与用户交互的最外层,获取到的ip是上一层代理服务器的ip,所以应该使用客户端真实ip来进行hash负载。
2.nginx配置
2.1 添加with-http_realip_module 模块
nginx编译时添加 with-http_realip_module
./configure --prefix=/usr/local/nginx-1.6.1 --with-http_realip_module
make
make install
2.2 反向代理配置
负载均衡策略:
upstream nodes {
ip_hash;
server 192.168.97.200:3000;
server 192.168.97.200:3001;
server 192.168.97.200:3002;
server 192.168.97.200:3003;
}
location
location / {
proxy_pass http://nodes; #反向代理集群
proxy_redirect off;
proxy_buffering off; #此参数非常重要,必须禁用代理缓存.
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
set_real_ip_from 代理ip1;
set_real_ip_from 代理ip2;
real_ip_header X-Forwarded-For;
real_ip_recursive on; #on表示排除所有的代理ip,off则只会排除第一个
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
网友评论