socket.io nginx反向代理配置方式-Hash

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";
    }

你可能感兴趣的:(socket.io nginx反向代理配置方式-Hash)