我们正在开发一个使用统一的多用户虚拟现实系统,遇到了以下问题:
配置
配置如下:
问题
当我们在服务器上运行主机应用程序时,网络代码无法侦听端口80上的流量。错误是:"An attempt was made to access a socket in a way forbidden by its access permissions"。看来IIS或系统已经完全控制了端口80,并阻止了其他资源的使用。
约束条件
客户端的网络安全限制阻止我们引入第二台服务器来运行主机应用程序(它们只能连接到定义的IP地址列表),并且不能为我们打开新的端口。因此,我们有一个单一的服务器(Windows 2016)和端口80来玩!
是否可以使用IIS (HTTP端口80)远程发布网站,并运行一个应用程序来侦听和通信端口80上的websocket流量?
发展信息
在开发过程中,我们设置了第二台服务器,当我们在该服务器上定位主机应用程序(所有的端口都是80)时,一切都正常工作。此开发服务器不是运行IIS,而是主机应用程序。为了进行测试,我们可以使用我们自己的计算机,并且没有IP限制,所以我们可以将浏览器和演示笔记本电脑指向开发服务器,以便进行websocket通信。
摘要
任何想法,建议或指导将是非常受欢迎的,因为目前我们不知道哪条路可以转!
发布于 2021-01-14 13:28:58
我的建议
nginx(或者apache?)要按照80端口的协议进行分流,您可以使用以下代码# code in nginx
location / {#http
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://127.0.0.1:90;# real port of server
proxy_redirect default;
#root html;
#index index.html index.htm;
}
location /ws{#ws
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
client_max_body_size 10m;
proxy_pass http://127.0.0.1:91;# real port of ws
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}详细信息以这里(PS:中文)和端口443(https和wss)的方式提供。
发布于 2021-01-15 07:54:41
实际上,同一个端口可以处理多个不同的协议,websocket是基于http协议的升级。
但这是不推荐的,因为它可能有一些问题。
发布于 2021-01-15 10:51:46
我希望这有助于那些也希望在其服务器上运行应用程序的人,但发现它无法在端口80/443上侦听,因为端口80/443是为IIS保留的。最后,我解决了以下问题:
我创建了一个新域并将其指向我的new服务器。然后,我在IIS中创建了一个绑定到新域的新网站。我把网站指向一个空文件夹。然后,我下载并安装了Microsoft的IIS URL重写扩展以及应用程序请求路由扩展:
安装这些之后,我可以在IIS中选择我的新网站,并在IIS部分右击新URL重写选项。出现一个Add规则对话框,我可以选择一个反向代理选项,并创建一个简单的规则来将流量重定向到localhost:80,然后再次返回到出站流量。难以置信,成功了!
我只是一个开发人员,试图把一个复杂的项目推向交付,所以这可能有其缺陷,或者您可能知道更好的解决方案,但对我来说,我现在可以继续前进了。
https://stackoverflow.com/questions/65719694
复制相似问题