nginx socket反向代理,nginx反向代理web服务器
最近在工作中遇到一个需求,需要使用nginx反向代理websocket。搜索了一些资料,已经测试通过,所以本文主要介绍Nginx反向代理WebSocket配置的相关信息。有需要的朋友可以参考一下。让我们一起来看看吧。
实施方案
随着目前WebSocket技术的成熟,WebSocket协议为创建需要客户端和服务器端实时双向通信的webapp提供了一种选择。WebSocket作为HTML5的一部分,可以让这类app的开发比原来的方法更简单。目前大多数浏览器都支持WebSocket,比如Firefox、IE、Chrome、Safari、Opera,现在越来越多的服务器框架也支持WebSocket。
WebSocket集群
在实际生产环境中,多个WebSocket服务器必须具有高性能和高可用性,因此WebSocket协议需要一个负载均衡层。NGINX从1.3开始支持WebSocket,可以作为WebSocket程序的反向代理和负载均衡。
Nginx配置
注意:根据官方文档,Nginx在1.3版本之后才支持websocket反向代理,所以如果想使用支持websocket的功能,必须升级到1.3版本。
NGINX通过允许客户端和后端服务器之间的隧道来支持WebSocket。为了让NGINX将升级请求从客户端发送到后端服务器,必须显式设置升级和连接头。
上游wsbackend {
服务器127 . 0 . 0 . 1:8080;
服务器127 . 0 . 0 . 1:8081;
服务器{
听80;
服务器名ws.52itstyle.com;
位置/{
proxy _ pass http://ws后端;
proxy _ http _ version 1.1
proxy _ set _ header Upgrade $ http _ Upgrade;
proxy_set_header连接“升级”;
}
else if(窗口中的“MozWebSocket ”){
web socket=new moz web socket(basePath webSocketServer );
否则{
web socket=new SockJS(basePath SockJS/webSocketServer );
web socket . on error=function(event){
//alert( web sockt连接出错,请刷新页面再试!)
web socket . on open=function(event){
web socket . on message=function(event){
sendData:函数(数据){
webSocket.send(数据);
}
最后重启Nginx。
反向代理服务器支持WebSocket面临的挑战
WebSocket是端到端的,所以当代理服务器截获来自客户端的升级请求时,它需要向后端服务器发送自己的升级请求,包括适当的头。因为WebSocket是一个长连接,不像HTTP是一个典型的短连接,反向代理服务器需要允许连接保持打开,而不是在它们看起来空闲时关闭它们。
摘要
这就是本文的全部内容。希望这篇文章的内容能给你的学习或者工作带来一些帮助。有问题可以留言交流。感谢您对剧本之家的支持。
原文链接:http://blog.52itstyle.com/archives/736/
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。