基于$ arg_name反向代理websockets(URL查询字符串参数)

问题描述 投票:0回答:1

我使用以下内容使nginx使用我的websocket服务器:

server {
    listen 80;
    server_name streams.domain.com;
    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_pass http://192.168.1.52:80;
    }
}

但是,我需要根据查询字符串参数更改目标。我将其更改为以下内容:

server {
    listen 80;
    server_name streams.domain.com;
    location / {
        if ( $arg_serverId = 1562182 ) { 
            return 101 http://192.168.1.52:80; 
        }
    }
}

现在我得到错误Error during WebSocket handshake: 'Upgrade' header is missing

所以我尝试使用add_header但是使用下面的配置我得到ERR_CONNECTION_TIMED_OUT

server {
    listen 80;
    server_name streams.domain.com;
    location / {
        if ( $arg_serverId = 1562182 ) { 
            add_header 'Upgrade' $http_upgrade;
            add_header 'Connection' $connection_upgrade;
            return 101 http://192.168.1.52:80; 
        }
    }
}

那么我如何使用qazxsw poi条件并传递websockets所需的升级头?

nginx nginx-location nginx-reverse-proxy
1个回答
0
投票

我最终得到它与$arg_合作。使用像map这样的网址,以下内容很有用:

http://stream.domain.com?serverId=1001
© www.soinside.com 2019 - 2024. All rights reserved.