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

Plesk中Docker部署Discourse,Nginx代理后出现502 Bad Gateway错误

解决Plesk中Nginx反向代理Discourse Docker容器出现502 Bad Gateway的问题

从你提供的Nginx错误日志来看:

2018/04/01 20:44:48 [error] 10591#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.2.107, server: test.plesk.local, request: "GET /favicon.ico HTTP/1.1", upstream: "http://0.0.0.0:8060/favicon.ico"

问题的核心很明确:Nginx尝试连接上游的0.0.0.0:8060时被拒绝了。这是因为0.0.0.0是容器内部的监听地址,而Plesk的Nginx运行在宿主机环境,没法直接通过这个地址访问容器服务。下面是具体的排查和解决步骤:

1. 确认Docker容器的正确访问地址

首先得搞清楚Discourse容器的实际可访问地址:

  • 运行docker ps查看容器的端口映射,比如你可能会看到类似0.0.0.0:8060->80/tcp的输出,这说明容器内部的80端口映射到了宿主机的8060端口。这种情况下,宿主机可以通过127.0.0.1:8060访问容器。
  • 或者运行docker inspect <你的Discourse容器名称/ID>,找到NetworkSettings.IPAddress字段,这是容器的内部IP(比如172.17.0.2),你可以直接用这个IP加上容器内部的端口(通常是80)来访问。

2. 修改Plesk的Nginx反向代理配置

登录Plesk后台,找到test.plesk.local这个域名的Apache & Nginx Settings:

  • 找到「Additional Nginx directives」区域,把原来的proxy_pass http://0.0.0.0:8060;替换成以下两种方式之一:
    • 用宿主机回环地址:proxy_pass http://127.0.0.1:8060;
    • 用容器内部IP:proxy_pass http://<容器内部IP>:80;
  • 同时建议添加这些必要的代理请求头,避免Discourse识别请求来源出错:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
  • 点击「OK」保存配置,Plesk会自动重启Nginx生效。

3. 验证连通性

在宿主机上执行测试命令,确认容器服务能被正常访问:

  • 如果用回环地址:curl http://127.0.0.1:8060
  • 如果用容器内部IP:curl http://<容器内部IP>:80
    如果命令能返回Discourse的HTML页面内容,说明容器服务正常,此时再用主机名test.plesk.local访问应该就能解决502问题了。

4. 排查防火墙/安全组

如果上面的步骤都没解决,检查一下宿主机的防火墙规则:

  • 确保宿主机允许8060端口的本地访问(比如用ufw allow 8060/tcp,如果是iptables则对应添加放行规则)
  • 确认容器内部没有防火墙阻止来自宿主机的连接请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:04:03