转发 wss://sub.domain.com 到 ws://127.0.0.1:6001

问题描述 投票:0回答:1

我正在尝试设置 Apache 2.4(在 Virtualmin 上)以将

wss://sub.domain.com
请求转发到
ws://localhost:6001
但我没有运气。我已经学习了无数教程,并浏览了大量 Stackoverflow 问题 - 但我仍然感到困惑。

我安装并启用了

proxy
proxy_http
proxy_wstunnel
rewrite

我第一次尝试:

ServerName sub.domain.com

RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*)           ws://127.0.0.1:6001/$1 [P,L]

ProxyPass / http://127.0.0.1:6001/
ProxyPassReverse / http://127.0.0.1:6001/

SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
SSLCertificateChainFile /path/to/chain.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

然后我试了:

ServerName sub.domain.com

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*)           ws://localhost:6001/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*)           http://localhost:6001/$1 [P,L]

ProxyPreserveHost on
ProxyPass / ws://localhost:6001/
ProxyPassReverse / ws://localhost:6001/

...ssl directives

以及两者的几乎所有组合。

至于 websocket 服务器,我在端口 6001 上使用 Laravel-websockets。

我做错了什么?

apache websocket laravel-websockets
1个回答
0
投票

您似乎正在尝试将 Apache 配置为 WebSocket 服务器的反向代理。请检查以下内容:

验证 WebSocket 服务器正在 localhost:6001 上运行,并且可以从安装了 Apache 的同一台机器上访问。您可以通过在浏览器中打开 WebSocket 客户端并连接到 ws://localhost:6001 来测试它。

检查 Apache 错误日志是否有任何与代理或 WebSocket 模块相关的错误。日志文件通常位于 /var/log/apache2/error.log 或 /var/log/httpd/error_log。

确保在 Apache 中启用了 proxy_wstunnel 模块。您可以通过运行以下命令来检查:

sudo a2enmod proxy_wstunnel

尝试使用 ProxyPass 和 ProxyPassReverse 指令而不是 RewriteRule 来代理 WebSocket 请求。这是一个例子:

ProxyPass / ws://localhost:6001/
ProxyPassReverse / ws://localhost:6001/

确保删除任何可能干扰此配置的现有 RewriteRule。

检查 WebSocket 服务器的文档,了解在反向代理后面工作所需的任何其他配置。某些 WebSocket 服务器可能需要在代理中设置特定的标头或设置。

验证 SSL 证书是否有效且配置正确。您可以使用 SSL Labs 等在线 SSL 检查器来测试 SSL 配置。

希望这些建议能帮助您解决问题。如果您仍然遇到问题,请随时提供更多详细信息或日志以帮助诊断问题。

© www.soinside.com 2019 - 2024. All rights reserved.