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

  • 相关阅读:
    惊讶
    BLOG休假
    因考试得福
    Shape of My HeartSting !
    一个月的第一天了
    BLOG开张喽~~~
    该走了
    脏话
    EditText的属性
    游戏引擎
  • 原文地址:https://www.cnblogs.com/37yan/p/9991043.html
Copyright © 2020-2023  润新知