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

Docker Compose多Etherpad实例Apache反向代理故障求助

问题排查与解决方案

核心问题定位

从Apache日志的Connection refused: AH00957: http: attempt to connect to 127.0.0.1:9002报错,结合你的Docker Compose配置,最直接的原因是Apache反向代理的后端端口配置错误:

在Docker Compose中,etherpad-moodle和etherpad-redmine容器的内部监听端口都是9001(宿主机映射的9002、9003是对外暴露的端口),但你在Apache配置里错误地用了9002、9003作为容器内部通信的端口,导致Apache无法连接到容器内的服务。

修复步骤

1. 修正Apache反向代理配置

将Apache配置中moodle和redmine对应的代理端口从9002、9003改为容器内部的9001:

# 修正WebSocket重写规则
RewriteRule ^/moodle/socket.io/(.*) ws://etherpad-moodle:9001/socket.io/$1 [P,L]
RewriteRule ^/redmine/socket.io/(.*) ws://etherpad-redmine:9001/socket.io/$1 [P,L]

# 修正ProxyPass配置
ProxyPass /moodle/ http://etherpad-moodle:9001/
ProxyPassReverse /moodle/ http://etherpad-moodle:9001/
ProxyPass /redmine/ http://etherpad-redmine:9001/
ProxyPassReverse /redmine/ http://etherpad-redmine:9001/

2. 验证容器网络连通性

在apache2-frontal容器内部测试是否能访问另外两个Etherpad容器:

# 进入apache容器
docker exec -it <apache-container-name> bash

# 测试连接etherpad-moodle
curl http://etherpad-moodle:9001

# 测试连接etherpad-redmine
curl http://etherpad-redmine:9001

如果能返回Etherpad的页面内容,说明网络连通正常;如果失败,检查Docker网络配置(确认所有服务都在etherpad网络下)。

3. 检查Etherpad实例的信任代理设置

确保每个Etherpad的settings.json中配置了信任反向代理,避免跨域或路径问题:

"trustProxy": true,
"canonicalDomain": "etherpad.mydomaine.com",
"canonicalPort": 443,
"canonicalProtocol": "https"

4. 重启Apache服务

修正配置后,重启Apache容器使配置生效:

docker-compose restart apache2-frontal

额外排查点

  • 确认Apache容器已加载必要模块:mod_proxy、mod_proxy_http、mod_proxy_wstunnel、mod_rewrite,这些是反向代理WebSocket和HTTP请求的必需模块。
  • 检查Etherpad容器的日志,确认服务是否正常启动(docker-compose logs etherpad-moodle),排除容器内部服务启动失败的可能。

内容的提问来源于stack exchange,提问作者Aurélien Grimpard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:57:33