nginx反向代理 支持WebSocket

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”的值

转载于:https://www.cnblogs.com/37yan/p/9991043.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值