nginx反向代理 支持WebSocket

摘要:
WebSocket协议的握手和HTTP是兼容的,通过HTTP/1.1中协议转换机制,客户端可以传递名为“Upgrade”头部信息将连接从HTTP连接升级到WebSocket连接那么反向代理服务器怎么样支持WS协议呢?

WebSocket(简称WS)协议的握手和HTTP是兼容的,通过HTTP/1.1中协议转换机制,客户端可以传递名为“Upgrade” 头部信息将连接从HTTP连接升级到WebSocket连接

那么反向代理服务器怎么样支持WS协议呢?

“Upgrade” 使用的是hop-by-hop(逐跳首部)机制,正向代理时客户端可以使用“CONNECT”方法解决,但是客户端并不知道网络中有反向代理服务器,所以需要反向代理服务器特殊处理

由于“Upgrade”和“CONNECT”头部信息并不会传递给反向代理服务,所以需要在反向代理配置中明确传递

nginx 1.3.13版本之后支持WS协议,有两种配置适应不同场景:

1、明确传递头信息,始终切换WS协议

location /chat/{
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

2、根据情况切换WS协议

http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''close;
    }

    server {
        ...

        location /chat/{
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }

这个配置就比较灵活,可以用于HTTP和WS协议混合使用的场景,取决于客户端传递的“Upgrade”的值

免责声明:文章转载自《nginx反向代理 支持WebSocket》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇windows环境中Tomcat实现开机自启动C#异步编程的实现方式——ThreadPool线程池下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NestJS WebSocket 开始使用

使用NestJs提供WebSocket服务。本文会在新建项目的基础上增加2个类 Gateway 实现业务逻辑的地方 WebSocketAdapter WebSocket适配器 新建项目 新建一个项目来演示,用npm来管理项目。 nest new websocket-start 得到一个有基础功能的工程。 进入项目目录,安装2个库 npm i --sa...

Vue中使用WebSocket

initWebSocket() { //初始化websocket let wsuri = 'ws地址' this.ws = new WebSocket(wsuri) this.ws.onmessage = this.websocketonmessage this.ws.onopen =...

JAX-WS HandlerChain使用详解

JAX-WS的Handler和Servlet的Filter相似,可以对所有WebServicer进行拦截,在Handler中可以记录日志、权限控制、对请求的SOAP消息进行加密,解密等。JAX-WS提供两个Handler接口,LogicalHandler和SOAPHandler。LogicalHandler处理的是Message Payload,只能够访...

FastAPI WebSocket 基本使用一

FastAPI WebSocket 简单演示 下午没事看了看WebSocket,感觉这个挺好玩的,比写CRUD有意思。就复制了官网的demo演示看了看。 官方文档https://fastapi.tiangolo.com/advanced/websockets/ 效果 WebSocket 服务 使用Python FastAPI框架官网demo from t...

nginx配置反向代理解决跨域

一、下载nginx 避免少走弯路,下载稳定版 二、启动nginx 两种方法 1、双击nginx.exe 2、cmd转到nginx文件夹输入 start nginx 会有一个弹出框一闪而过,然后在浏览器输入localhost,页面显示 welcome 就算启动成功 三、nginx常用命令 start nginx //启动nginx nginx -s...

搭建websocket消息推送服务,必须要考虑的几个问题

近年,不论是正在快速增长的直播,远程教育以及IM聊天场景,还是在常规企业级系统中用到的系统提醒,对websocket的需求越来越大,对websocket的要求也越来越高。从早期对websocket的应用仅限于少部分功能和IM等特殊场景,逐步发展为追求支持高并发,百万、千万级每秒通讯的高可用websocket服务。   面对各种新场景对websocket功能...