- 时间:2020-08-08 23:20 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:简介Nginx服务器的Websockets配置方法
Nginx 1.3.13 已经发布了,该版本支持 Connection: upgrade 和 Upgrade 头,这就意味着支持WebSocket代理了.很多人都在等这个新特性以至于 “Nginx 支持 websockets 吗?” 成为了 freenode上的#nginx频道最常问的问题. 有了这种方式,让我们来看看Nginx的WebSocket实现.
[b]Nginx新添加的Websockets配置指令[/b]
[url=http://trac.nginx.org/nginx/changeset/5073/nginx]文档[/url]中提到的配置如下:(译者注:原文中的链接其实不是文档的链接.现在nginx的官方文档中已经有websocket的说明了http://nginx.org/en/docs/http/websocket.html)
[url=http://nginx.org/r/proxy_read_timeout]proxy_read_timeout [/url]的影响。这意味着,如果你有一个程序使用了 WebSockets,但又可能超过60秒不发送任何数据的话,那你要么需要增加超时时间,要么实现一个 ping 的消息以保持联系。使用 ping 的解决方法有额外的好处,可以发现连接是否被意外关闭。
[b]Keep-Alive & WebSockets
[/b]Keep-alive pings 对上述超时问题无效,因为它们只是在 TCP 级别上发送空包。它们不向应用程序报告,所以应用程序也不响应它们,因此 proxy_read_timeout 仍然会触发。
[b]WebSockets支持SSL
[/b]由于WebSockets绑定在正常的代理模块中,所以SSL照常的工作运行。
[b]代理缓存
[/b]WebSockets利用两个内存缓冲区来实现代理缓存配置(proxy_buffer_size)的大小,一个用于上行数据,另一个用于下行数据。WebSockets和普通的代理请求所不同的是,WebSockets不会将数据缓存到磁盘。
[b]大小写敏感的Upgrade头部
[/b]有一些后端程序对Upgrade头做大小写检查,同时支持“upgrade”和“Upgrade”两种写法,否则的话,只有“upgrade”写法能正常工作。如果配置看上去都正确,就是不能正常工作,就要尝试修改头部的大小写了。