nginx负载websocket,nginx websocket负载均衡
proxy _ set _ header X-Real-IP $ remote _ addr;
proxy _ set _ header X-Forwarded-For $ proxy _ add _ X _ Forwarded _ For;
proxy _ set _ header Host $ http _ Host;
Proxy _ set _ header X-NginX-Proxy true;
proxy _ pass http://127 . 0 . 0 . 1:8001;
proxy _ redirect off
位置/c/{
proxy _ pass http://127 . 0 . 0 . 1:8002;
#网站支持
proxy _ http _ version 1.1
proxy _ set _ header Upgrade $ http _ Upgrade;
proxy_set_header连接“升级”;
proxy_set_header原点xxx
proxy _ set _ header X-Real-IP $ remote _ addr;
proxy _ set _ header X-Forwarded-For $ proxy _ add _ X _ Forwarded _ For;
proxy _ set _ header Host $ http _ Host;
Proxy _ set _ header X-NginX-Proxy true;
}
首先设置服务器的监听端口,然后设置服务的域名。
位置的具体用法可以在第二篇参考文献中详细描述。在这里,我使用/u/来匹配我的路径。我使用下面{}中的配置,从/u/开始。
我将依次介绍每个参数的功能:
proxy _ set _ header X-Real-IP $ remote _ addr;#远程真实ip地址
proxy _ set _ header X-Forwarded-For $ proxy _ add _ X _ Forwarded _ For;#反向代理后转发前的ip地址
proxy _ set _ header Host $ http _ Host;# HTTP请求的主机域名
Proxy _ set _ header X-NginX-Proxy true;# nginx代理
这些参数都用在nginx反向代理中。
proxy _ pass http://127 . 0 . 0 . 1:8001;#反向代理转发地址
proxy _ redirect off#代理是否支持重定向
下面匹配/c/path下我的websocket转发服务。与上面不同的是,他需要在标题中添加以下内容
proxy _ http _ version 1.1
proxy _ set _ header Upgrade $ http _ Upgrade;
proxy_set_header连接“升级”;
将http1.1升级到websocket协议。另一个需要特别注意的是,如果websocket服务器收到websocket握手包,它会检查原点信息与域信息不匹配。会直接拒绝服务。这是个坑。我花了将近半天的时间才发现为什么连不上。最后,我发现Origin必须与请求的地址在同一个域中,否则它将被拒绝访问并返回403。
另外,上述配置中的所有变量都可以通过get_header中的信息获得。
如果想根据不同情况更详细的查看配置,可以参考官网和nginx的参考。
以上。
参考:
https://segmentfault.com/n/1330000006925038nginx配置文件梳理
http://seanlook.com/2015/05/17/nginx-location-rewrite/nginx配置位置汇总和重写规则编写
http://www.ha97.com/5194.html(概要)Nginx配置文件nginx.conf中文详解
http://nginx.org/en/docs/http/websocket.htmlWebSocket代理
https://www..com/piperck/p/7066286.html