我有一个在几台机器上运行的控制台应用程序。我可以通过输入 URL 使用 websocket 客户端访问它ws://192.168.1.152/h264/
。我需要能够在外部与这些机器建立连接。我在 Nginx 中尝试了许多选项。我希望能够连接到上面ws://streams.mydomain.com/101
的 IP 并让它转到上面的 IP。下面是示例表。
ws://streams.mydomain.com/152/
>ws://192.168.1.152
ws://streams.mydomain.com/153/
>ws://192.168.1.153
ws://streams.mydomain.com/154/
>ws://192.168.1.154
我尝试过各种选择,包括以下内容:
方法 1
http {
server {
listen *;
server_name streams.mydomain.com;
location /101/ {
proxy_pass $scheme://192.168.1.52;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}
}
此方法导致“无效响应”(获得 301 并预期 101)
方法 2
http {
server {
listen *;
server_name streams.mydomain.com;
location /101/ {
add_header 'Connection' 'Upgrade';
add_header 'Upgrade' websocket;
return 101 $scheme://192.168.1.52;
}
}
}
这会导致“缺少升级标头”。
其他方法
我也尝试过使用该stream
指令,但没有成功,并且rewrite
在 HTTP 下也取得了不同的成功。
我发了一个关于第二种方法的具体问题,但我希望这个问题能够为那些我尚未找到的方法提供答案。
以下是完整配置的 pastebin:https://pastebin.com/1H49n5LB