使用nginx作为websocket的proxy server

Posted 写了程序换酒钱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用nginx作为websocket的proxy server相关的知识,希望对你有一定的参考价值。

WebSocket

WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为html5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加地简单。大部分现在的浏览器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越来越多的服务器框架现在也同样支持WebSocket。

在实际的生产环境中,要求多个WebSocket服务器必须具有高性能和高可用,那么WebSocket协议就需要一个负载均衡层,nginx从1.3开始支持WebSocket,其可以作为一个反向代理和为WebSocket程序做负载均衡。

WebSocket协议不同于HTTP协议,但是WebSocket握手是通过HTTP来完成的,使用HTTP的Upgrade设施来升级连接从HTTP到WebSocket。这个允许WebSocket程序能够更简单地融入现有的基础设施。比如,WebSocket程序可以使用80和443标准的HTTP端口,从而允许使用存在的防火墙策略。

一个WebSocket程序持有一个长时间运行的在客户端和服务器端之间打开的连接,促进实时应用程序的开发(这个翻译有问题)。被用来升级连接从HTTP到WebSocket的HTTP Upgrade机制使用Upgrade和Connection头部来完成。在反向代理服务器支持WebSocket中,需要面临一些挑战。第一个是WebSocket是一个hop-by-hop协议,所以当代理服务器拦截来至于客服端的一个Upgrade请求时,代理服务器需要发送它自己的Upgrade请求给后端服务器,包括一些合适的头部。同样,因为WebSocket是长时间存活,相反的,HTTP连接是典型的短连接,反向代理服务器必须允许这

以上是关于使用nginx作为websocket的proxy server的主要内容,如果未能解决你的问题,请参考以下文章

不能使用 nginx 作为 websocket 代理

nginx作为Websocket的代理发送短信

Nginx websocket proxy断连问题

nginx websocket proxy

nginx 配置 websocket

配置 Nginx 反向代理 WebSocket