在我的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://在其中一个域上
这个工具几乎拥有设置nginx反向代理所需的一切。
请注意,它不支持< code>wss://开箱即用,尽管这是由于其配置中的注释行。
#proxy_set_header Connection \$connection_upgrade;
取消对它的注释,重新构建并拥有一个支持< code>wss://:)的快乐反向代理