我有一个在浏览器和服务器之间启动websocket连接的IIS网站。网址看起来像这样:http://stream.mydomain.com/h264.html?serverid=192.168.1.52
。显然,这个连接不能在外部建立,所以我尝试使用NGinx来实现。我有一个名为streams.mydomain.com
的子域,我正在尝试根据路径重新路由,这样我的新网址看起来就像http://stream.mydomain.com/h264.html?serverid=streams.mydomain.com/101
。我已经尝试了几个路由,包括proxy_pass
,它导致了意外的响应。现在我正在尝试return
,但我一直有标题问题。具体地说,它说一个头不存在,即使我显式地包含了它,并且它显示在Chrome的请求中。
下面是我的配置:
server {
listen *;
server_name streams.mydomain.net;
location /101/ {
add_header 'Connection' 'Upgrade';
add_header 'Upgrade' websocket;
return 101 $scheme://192.168.1.52;
}
}
下面是我得到的错误:
Error during WebSocket handshake: 'Upgrade' header is missing
这是Chrome调试工具中请求的屏幕截图,在我看来,它显示了"missing“标题:
以下是使用内网本端IP (无NGinx)的工作请求截图:
发布于 2019-07-15 20:59:15
我无法通过这些路由实现我想要的效果,但这是我必须采用的解决方案:
http {
server {
listen 80;
server_name server101.domain.com;
location / {
proxy_http_version 1.1;
proxy_set_header Connection "Upgrade";
proxy_set_header Upgrade $http_upgrade;
proxy_pass $scheme://10.1.5.98:80;
}
}
}
我仍然希望有一天能弄清楚怎么做servers.domain.com/101。
https://stackoverflow.com/questions/54970674
复制相似问题