You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ratchet WebSocket与Apache共存时AH01084代理500错误求助

问题分析与解决方案

从错误日志的Error during SSL Handshake with remote server可以看出,核心问题有两个:

  1. 你的Ratchet服务器是无SSL的普通WebSocket服务,但Apache配置里用https:///wss://协议代理到8445端口,导致SSL握手失败
  2. 全局ProxyPass /会把所有请求转发到Ratchet,直接导致常规PHP站点无法访问

步骤1:保持Ratchet服务器配置不变

当前Ratchet代码无需修改,IoServer默认创建无SSL的WebSocket服务即可——让Apache作为SSL终结点,内部用普通HTTP与Ratchet通信。


步骤2:修正Apache虚拟主机配置

修改443端口的虚拟主机配置,仅代理WebSocket请求到Ratchet,同时解决SSL握手问题:

<IfModule mod_ssl.c>
<VirtualHost *:443>
     ServerName example.com
     ServerAlias www.example.com
     SSLEngine on

     ProxyRequests Off

     Include /etc/letsencrypt/options-ssl-apache.conf
     SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

     DocumentRoot /var/www/example.com/public_html
     ErrorLog /var/www/example.com/public_html/logs/error.log
     CustomLog /var/www/example.com/public_html/logs/access.log combined

     # 仅代理WebSocket专属路径到Ratchet
     ProxyPass /ws http://localhost:8445/ws
     ProxyPassReverse /ws http://localhost:8445/ws

     # WebSocket连接升级规则
     RewriteEngine on
     RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
     RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
     RewriteRule ^/ws/(.*)$ ws://localhost:8445/ws/$1 [P,L]

</VirtualHost>
</IfModule>

关键调整说明:

  • 移除SSLProxyEngine等SSL代理相关配置,因为内部通信用HTTP,不需要SSL握手
  • 用http://localhost:8445替代https://example.com:8445,避免跨SSL协议的握手错误
  • 指定/ws作为WebSocket专属路径,确保常规PHP站点请求(如/index.php)仍由Apache正常处理
  • 调整RewriteRule匹配/ws路径,保证WebSocket升级请求正确转发

步骤3:修改前端WebSocket连接地址

确保前端代码使用正确的WebSocket路径:

const socket = new WebSocket('wss://example.com/ws');

额外检查项

  • 确认Ratchet服务器正在运行并监听8445端口
  • 检查服务器防火墙是否允许localhost的8445端口内部通信
  • 重启Apache使配置生效:sudo systemctl restart apache2

内容的提问来源于stack exchange,提问作者Manisha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:55:10