我有一个IIS网站,用于启动浏览器和服务器之间的websocket连接。该URL看起来像这样:http://stream.mydomain.com/h264.html?serverid=192.168.1.52
。显然,无法从外部进行此连接,因此我正在尝试使用NGinx允许这样做。我有一个名为streams.mydomain.com
的子域,并且我尝试根据路径进行重新路由,所以我的新URL看起来像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)的工作请求的屏幕截图:
答案 0 :(得分:0)
我不能完全按照路线完成我想要的,但这是我必须采用的解决方案:
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。