Nginx 反向代理 websocket
2017-12-12 15:21
429 查看
参考: [ Using multiple nodes ] [ Nginx 官网 WebSocket proxying ]
关于 websocket 的介绍可以看阮大大的这篇 [ WebSocket 教程 ]
关于 Upgrade 头部信息,可以查看 [ RFC 2616 ]
但是, Upgrade 是一个逐跳的头, 它不会从 client 传递到 proxy server. 如果使用 正向代理, client 可以使用 CONNECT 方法来规避这个问题. 然而, 对于反向代理而言这个是不适用的, 因为 clients 发现不了任何 proxy server.
从 nginx 1.3.13 版本开始, 当 proxy server 返回的状态码为 101 的时候, nginx 允许从 client 和 proxy server 之间建立一个通道. client 通过 Upgrade 发出协议转换的请求.
为了让 proxy server 知道 clients 想把通信协议转换为 WebSocket, 需要如下配置:
对于复杂的情况, 当 Connection 头部的值取决于 Upgrade 头部存在的情况, 需要如下配置:
关于 websocket 的介绍可以看阮大大的这篇 [ WebSocket 教程 ]
关于 Upgrade 头部信息,可以查看 [ RFC 2616 ]
Nginx 反向代理 WebSocket
要将 client 和 server 之间的连接协议从 HTTP/1.1 转换为 WebSocket, HTTP/1.1 协议中提供了解决机制.但是, Upgrade 是一个逐跳的头, 它不会从 client 传递到 proxy server. 如果使用 正向代理, client 可以使用 CONNECT 方法来规避这个问题. 然而, 对于反向代理而言这个是不适用的, 因为 clients 发现不了任何 proxy server.
从 nginx 1.3.13 版本开始, 当 proxy server 返回的状态码为 101 的时候, nginx 允许从 client 和 proxy server 之间建立一个通道. client 通过 Upgrade 发出协议转换的请求.
为了让 proxy server 知道 clients 想把通信协议转换为 WebSocket, 需要如下配置:
location /chat/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
对于复杂的情况, 当 Connection 头部的值取决于 Upgrade 头部存在的情况, 需要如下配置:
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; } }
相关文章推荐
- Nginx 反向代理 websocket
- Nginx实战之反向代理WebSocket的配置实例
- Nginx 反向代理 websocket
- Nginx 反向代理 websocket 协议
- nginx 反向代理,400 bad request 解决记录(websocket)
- Nginx实战之反向代理WebSocket的配置实例
- Nginx 反向代理 websocket
- nginx 反向代理缓存服务器配置
- Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- Centos 7 上使用nginx为Node.js配置反向代理时错误:(13: Permission denied) while connecting to upstream
- linux下nginx(反向代理服务器)安装步骤
- nginx配置反向代理示例
- 记阿里云SLB后配置Nginx反向代理百度地图API的坑
- nginx反向代理到tomcat,并在request中获取客户端请求ip
- Nginx——反向代理服务器
- nginx反向代理服务器安装、基本配置
- Nginx:正向代理与反向代理的区别
- Nginx 反向代理
- nginx反向代理web并使用keepalive做VIP
- Nginx服务器之反向代理加速