[英]Apache Config: Websockets Proxy WSS request to WS backend
在此先感谢您的帮助。
我试图使用Apache作为使用WSS的Web浏览器和后端WS服务器进程之间的代理。
浏览器<--- WSS ---> Apache <--- WS ---> RabbitMQ Stomp
我在Apache中正确设置了HTTPS,并通过443提供页面。
在Apache站点config:... / sites-enabled / site.conf中
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{SERVER_NAME} =MYSERVER.com [OR]
RewriteCond %{SERVER_NAME} =www.MYSERVER.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
SSLEngine On
SSLProxyEngine On
SSLCertificateFile /etc/letsencrypt/live/MYSERVER.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/MYSERVER.com/privkey.pem
Redirect /wss /wss/
ProxyPass /wss/ ws://127.0.0.1:15674/stomp/websocket/
ProxyPassReverse /ws/ wss://127.0.0.1:15674/stomp/websocket/
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName MYSERVER.com
ServerAlias www.MYSERVER.com
</VirtualHost>
浏览器中的Javascript:
<script>
var ws = new WebSocket('wss://MYSERVER.com:443/wss');
var client = Stomp.over(ws);
在Chrome调试器中,我看到:与'wss://MYSERVER.com/wss'的WebSocket连接失败:WebSocket握手期间出错:意外的响应代码:302
使用ws直接指向后端,这很有效,但我需要让wss工作。
我试图得到一个类似的解决方案,但是无法解决这个问题: Apache:Proxy websocket wss to ws
如果不存在,此行Redirect /wss /wss/
会向/wss
添加一个尾部斜杠(默认情况下,它是302重定向)。 而你正试图连接到wss://MYSERVER.com:443/wss
,它解释了重定向。
解决方案 :尝试连接到wss://MYSERVER.com:443/wss/
(带斜杠)。 这应该按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.