Node.js 我的PeerJS服务器返回一个ID,但随后我收到404的后续请求,请求'/peerjs';
我正在开发一个WebRTC视频会议/远程性能站点(构建在AWS“Lightsail”VM上),我遇到了一个关于PeerJS的非常奇怪的问题 我通过Apache2反向代理在3001端口上托管我自己的PeerJS服务器。反向代理似乎工作正常,因为当Node.js 我的PeerJS服务器返回一个ID,但随后我收到404的后续请求,请求'/peerjs';,node.js,webrtc,http-status-code-404,reverse-proxy,peerjs,Node.js,Webrtc,Http Status Code 404,Reverse Proxy,Peerjs,我正在开发一个WebRTC视频会议/远程性能站点(构建在AWS“Lightsail”VM上),我遇到了一个关于PeerJS的非常奇怪的问题 我通过Apache2反向代理在3001端口上托管我自己的PeerJS服务器。反向代理似乎工作正常,因为当peerjs.min.js点击'/peerjs/id'时,它会返回预期的id 但是,从peerjs.min.js文件内部对'/peerjs'的后续调用会立即返回404错误 (我应该注意,如果我只使用默认的PeerJS服务器,我的站点工作正常。) 因此,例如
peerjs.min.js
点击'/peerjs/id'
时,它会返回预期的id
但是,从peerjs.min.js
文件内部对'/peerjs'
的后续调用会立即返回404错误
(我应该注意,如果我只使用默认的PeerJS服务器,我的站点工作正常。)
因此,例如,此请求按预期工作:
https://peer.improv-stage.com/peerjs/id
而此后续请求(再次从内部peerjs.min.js
启动)会导致404错误
wss://peer.improv-stage.com/peerjs?key=peerjs&id=bd261271-09f7-44a3-a07e-3d3364c1989f&token=40sh9uviwb
(此处的id
和token
参数来自页面的单个调用,当然,每次访问都会更改。)
我很确定这是我的服务器设置有问题,所以,这里是相关信息
我使用htdocs
目录中的以下命令调用对等服务器:
peerjs--3001端口--proxied true
它的答复是:
已在以下位置启动PeerServer,端口:3001,路径:/(v.0.6.1)
下面是apache的相关vhosts配置:
<VirtualHost *:443>
ServerName peer.improv-stage.com
DocumentRoot "/opt/bitnami/apache/htdocs"
ProxyPass / http://127.0.0.1:3001/
ProxyPassReverse / http://127.0.0.1:3001/
SSLEngine on
SSLCertificateFile "/opt/bitnami/letsencrypt/certificates/improv-stage.com.crt"
SSLCertificateKeyFile "/opt/bitnami/letsencrypt/certificates/improv-stage.com.key"
<Directory "/opt/bitnami/apache/htdocs">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
我认为解决方案是只为对等服务器启动另一个VM,但这整件事让我很烦。它应该有用,不是吗
无论如何,在我写这篇文章的时候,这个网站目前是在线的,我会让它一直运行,直到你们中的一些人看过它并提供一些反馈。您可以访问:
https://www.improv-stage.com/stackoverflow
谢谢你能提供的任何想法
Diz通过将这行代码添加到apache2,我解决了这个问题:
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteRule /(.*) ws://localhost:9500/$1 [P,L]
请注意9500
是peerServer在其上运行的特定端口
端口3000上有express和socket.io,端口9500上有peerServer
这帮了大忙
我认为这非常依赖于web服务器配置。通过将这行代码添加到apache2,我解决了这个问题:
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteRule /(.*) ws://localhost:9500/$1 [P,L]
请注意9500
是peerServer在其上运行的特定端口
端口3000上有express和socket.io,端口9500上有peerServer
这帮了大忙
我认为这非常依赖于web服务器的配置。嘿,迪兹,你能检查一下你的Apache是否配置了wss连接吗?我在玩游戏,我可以看到当你的站点试图建立wss连接时失败了<代码>WebSocket连接到'wss://peer.improv-stage.com/peerjs?key=peerjs&id=b844c034-a8db-47c2-ae8d-b9e096bef4cc&token=0454agryh446'失败:WebSocket握手期间出错:意外响应代码:404当我尝试连接到PeerServer的本地实例时,一切正常。我以为WSS只是通过TLS/SSL/443处理的,但我肯定会检查一下,看看是否还有更多。我能找到的唯一可以更改的配置项是启用
mod\u proxy\u wstunel
,但它没有任何区别。(我尝试更改vhosts文件以适应更改,这只会让事情变得更糟。)如果您有一个我可以参考的示例配置,那将非常有用。我放弃了这一点,并建立了一个专门的回合服务器。初始测试似乎表明这解决了我的连接问题。嘿,迪兹,你能检查一下你的Apache是否配置为wss连接吗?我在玩游戏,我可以看到当你的站点试图建立wss连接时失败了<代码>WebSocket连接到'wss://peer.improv-stage.com/peerjs?key=peerjs&id=b844c034-a8db-47c2-ae8d-b9e096bef4cc&token=0454agryh446'失败:WebSocket握手期间出错:意外响应代码:404当我尝试连接到PeerServer的本地实例时,一切正常。我以为WSS只是通过TLS/SSL/443处理的,但我肯定会检查一下,看看是否还有更多。我能找到的唯一可以更改的配置项是启用mod\u proxy\u wstunel
,但它没有任何区别。(我尝试更改vhosts文件以适应更改,这只会让事情变得更糟。)如果您有一个我可以参考的示例配置,那将非常有用。我放弃了这一点,并建立了一个专门的回合服务器。初步测试似乎表明,这解决了我的连接问题。嘿!谢谢我会试试看,如果有用的话,告诉你。嘿!谢谢我会试试看,如果有用的话,会告诉你的。