程序中如果用到websocket实现后台与前台的及时通讯功能,如果后台用nginx进行反向代理,
那么就需要在nginx配置对websocket的支持。
否则前端就会报websocket超时的错误。
经常我们解决这种问题的思路是到网上搜索大家解决问题的方法。但是人云易云,我感觉最好的方式还是看看官方是怎么解决的。
带着这样的思路,我们登陆到nginx的官网http://nginx.org/en/
![](https://i-blog.csdnimg.cn/blog_migrate/276f993eab3a66ec58c7f95c3607d0e5.png)
点击右侧documentation
然后向下拉,找到 WebSocket proxying
![](https://i-blog.csdnimg.cn/blog_migrate/a68362c3fe63d028b568b80bb118c1cc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/451158606725e57fabc19e144955fd6c.png)
简单的翻译是如果想要nginx支持websocket 需要配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
这三个报文头,下边两个红框,第一个是简单的配置方法,第二个是用map给不是websocket
的请求中的Upgrade 头的值,给 Connection 设置默认值。
红框2map的意思是,当Upgrade是 '' 的时候,设置Connection 为close,其他默认设置成upgrade
这样配置后,nginx就可以同时处理websockt请求了。