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

Apache 443端口WebSocket每分钟断开,如何配置避免超时?

解决Apache反向代理WebSocket的超时断开问题

你的问题是Apache反向代理WebSocket时,默认代理超时时间为60秒,导致客户端每分钟被迫断连重连。本地直连后端服务无此问题,说明问题出在Apache的代理超时配置上,以下是具体修改方案:

需要添加的关键配置项

在虚拟主机配置中,新增针对长连接的超时设置:

  • ProxyTimeout 3600:设置代理连接的超时时间(示例为1小时,可根据需求调整),覆盖默认的60秒超时
  • ProxyWebsocketFallbackToProxyHttp Off:禁止WebSocket连接降级为HTTP,确保长连接稳定性
  • Timeout 3600:全局请求超时时间,与ProxyTimeout配合保障长连接不被强制断开
  • KeepAlive On + KeepAliveTimeout 3600:开启长连接并设置超时时间,维持客户端与Apache的连接

修改后的完整虚拟主机配置

<IfModule mod_ssl.c>
<VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName mydomain.com

    # 新增长连接与超时配置
    KeepAlive On
    KeepAliveTimeout 3600
    Timeout 3600
    ProxyTimeout 3600
    ProxyWebsocketFallbackToProxyHttp Off

    SSLEngine on
    SSLProxyEngine on
    SSLProtocol -all -SSLv1 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
    SSLCipherSuite HIGH:aNULL:eNULL:EXPORT:DES:RC3:!MD5:!PSK:!SRP:!CAMELLIA
  
  <Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
  </Directory>

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

</VirtualHost>
</IfModule>

配置说明

  • ProxyTimeout:专门控制Apache与后端WebSocket服务之间的连接超时,必须设置足够大的值避免主动断开
  • ProxyWebsocketFallbackToProxyHttp Off:防止WebSocket连接出现短暂波动时,Apache自动切换到HTTP协议,导致长连接失效
  • Timeout:设置Apache处理所有请求的最大超时时间,确保不会提前终止WebSocket连接
  • KeepAlive相关配置:维持客户端与Apache之间的TCP长连接,减少重复握手开销,同时避免连接被过早回收

修改完成后,重启Apache服务生效:

sudo systemctl restart apache2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:55:13