提问者:小点点

如何在nginx反向代理后托管websocket


在我的VPS上,我只有一个端口,这就是我使用proxer的原因 - 一个码头化的nginx反向代理,您可以在其中提供域名和本地端口,将其重定向到。

我已经成功地设置了带有轮询传输的socket.io服务器(因为它使用http方法),但我想使用websocket传输,这就是它失败的地方。它告诉我它无法建立到这个url的wss://连接。

这是我使用的nginx反向代理代码:

for cfg in $(cat /config); do
    domain=$(echo $cfg | cut -f1 -d=)
    destination=$(echo $cfg | cut -f2 -d=)
    echo ">> Building config for $domain";

    config=$(cat <<EOF
server {
    listen       80;
    listen  [::]:80;
    server_name  $domain;
    location / {
        proxy_pass $destination;
        proxy_set_header Host \$host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        #proxy_set_header Connection \$connection_upgrade;
        proxy_ssl_name \$host;
        proxy_ssl_server_name on;
        proxy_ssl_verify off;
        proxy_ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        proxy_ssl_session_reuse off;
        proxy_set_header X-Forwarded-For \$remote_addr;
        proxy_set_header X-Forwarded-Proto \$scheme;
        proxy_read_timeout 120;
        proxy_send_timeout 120;
        proxy_connect_timeout 120;
    }
}
EOF
)
    
    # append new config to the end of nginx config file
    echo "$config" >>$out
done

我注意到这一行被注释掉了,我读到wss://需要它:

#proxy_set_header Connection \$connection_upgrade;

为什么它被注释掉了?更改此行会影响超文本传输协议代理吗?我应该做什么更改以允许wss://在其中一个域上


共1个答案

匿名用户

这个工具几乎拥有设置nginx反向代理所需的一切。

请注意,它不支持< code>wss://开箱即用,尽管这是由于其配置中的注释行。

#proxy_set_header Connection \$connection_upgrade;

取消对它的注释,重新构建并拥有一个支持< code>wss://:)的快乐反向代理