3

在将 Nginx 配置为 Web 应用程序中的 webSocket 代理时,我们遇到了问题。我们在 nginx.conf 中添加了以下与 websockets 相关的配置:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream websocket {
    server 234.61.34.23:3389;
}

location /websocket-tunnel/connect/ {
        proxy_read_timeout 86400;
        proxy_redirect off;
        proxy_pass http://websocket;
        proxy_buffering off;
        proxy_http_version 1.1;
        add_header Upgrade $http_upgrade;
        add_header Connection "upgrade";
        add_header Host $host;
        add_header X-Real-IP $remote_addr;
        add_header X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header X-Forwarded-Server $host;    
    }

234.61.55.59:8090 - 是安装和运行 Nginx 的机器的 IP 地址和端口。

234.61.34.23:3389 - 是要连接的后端系统的 IP 地址和端口。

现在从 Web 应用程序中的 javascript 代码创建 websocket 并生成以下请求 URL:

wss://234.61.55.59:8090/websocket-tunnel/connect?id=12345

现在在 Nginx error.log 中收到以下错误

[错误] 9516#33264: *396 在“ws://websocket/websocket-tunnel/connect?id=12345”中的 URL 前缀无效

我们在 nginx websocket 配置中缺少什么吗?请提供有关解决此错误的任何建议。

4

0 回答 0