端口问题 - 请帮助

你好;

我从 DigitalOcean 购买了一台 VPS,并使用其一键安装功能部署了 Discourse Droplet。

输入域名等信息并完成标准设置后,每当我访问 VPS 的 IP 地址(Discourse 已安装在主域名上,该域名已指向 VPS 的 IP),都会出现以下提示:

无法访问此网站

(MY-VPS-IP) 拒绝了连接。

请尝试:

  • 检查网络连接
  • [检查代理和防火墙]

ERR_CONNECTION_REFUSED

我已开放 HTTP 和 HTTPS 端口,运行 sudo ufw status 命令后显示这些端口确实处于开放状态。

我也尝试过清除浏览器缓存,以排除本地问题,但依然无效。

有任何建议或帮助吗?如果任何人有想法或需要更多信息,欢迎在下方留言。

您应该使用 Discourse 官方标准安装

Discourse 需要一个主机名,无法仅使用裸 IP 地址运行。

请确保您没有使用像 Cloudflare 这样的反向代理。

1 个赞

我使用域名进行了设置,并正确将其指向了 IP 地址,但仍然显示“连接被拒绝”。即使等待超过 24 小时后,问题依然存在。

更新:

我们安装了 Apache2 以测试端口是否正常工作,并已经开放了相关端口。

Apache2 在 IP 地址上显示正常,但一旦我们卸载 Apache2,原始问题又出现了。

我们认为这是 Docker 与端口之间的问题,但不知道如何修复。

有什么建议可以帮助解决吗?

供参考:我们也联系了 DigitalOcean,因为我们使用了他们市场中的 Discourse 安装方案。

销毁该 Droplet,并按照 Install Discourse in production with the official supported instructions 重新安装。

1 个赞

我刚刚试过了,问题依旧。

连接被拒绝。

您的 Droplet IP 和域名是什么?

docker ps 的输出是什么?

Droplet IP: 104.248.170.134(域名 robloxfrance.com 已指向该 IP。但我最近才更新 DNS 记录,将域名指向该 IP。)

Docker ps 输出:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0296e70dba0b local_discourse/app “/sbin/boot” 6 分钟前 运行中 6 分钟 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app

如果在运行设置之后才配置 DNS,证书签发步骤将会失败,并可能导致 Nginx 无法启动。

请尝试运行 ./launcher rebuild app

1 个赞

我刚试了 ./launcher rebuild app
还是不行。

curl -v localhost 的输出是什么?

*   正在尝试 127.0.0.1:80...
*   已设置 TCP_NODELAY
*   已连接到 localhost (127.0.0.1) 端口 80 (#0)
*   GET / HTTP/1.1
*   Host: localhost
*   User-Agent: curl/7.68.0
*   Accept: */*
*   
*   接收失败:连接被对端重置
*   正在关闭连接 0
curl: (56) 接收失败:连接被对端重置

更新:

我们尝试了以下命令:sudo systemctl restart docker.service

该命令在刷新网页时(启动 nginx веб-сервер)曾短暂生效,但再次刷新后,又变回了“拒绝连接”。

我们还执行了:docker run -it --rm hello-world

该命令执行顺利,无任何错误。

目前我们认为这可能是 Discourse 的问题,而非 Docker 的问题。

感谢任何帮助。

我们刚刚运行了 docker 日志命令:./launcher logs app

得到的结果如下:

如果有人能提供帮助,我们将不胜感激。

看起来您本周为该域名申请的证书数量过多。您现在需要等待一周,因为每周最多只能申请5个证书。

我们目前正在注释掉 SSL 并重新构建,以查看这样是否效果更好。

我们目前正在重新配置 VPS 上的 Discourse 安装,因此未使用 Let’s Encrypt 的邮箱。

更新:

我们重新配置了安装并执行了常规安装流程,但未添加 Let’s Encrypt 的邮箱。现在我们又回到了最初的情况,即无法建立连接。

听起来您已触达 Let’s Encrypt 的速率限制。很难找到不使用 Let’s Encrypt 的替代方案,因此您可能仍在请求证书(但如果证书即将过期,您将无法通过电子邮件收到警告)。如果我的判断正确,您可以:

  • 等到下周(除非您很急躁,否则这很简单)
  • 使用不同的域名(除非您非常喜爱当前域名或不擅长 DNS 配置,否则这很简单)
  • 参考 使用多个域名设置 Let’s Encrypt(对新手来说相当棘手)
  • 付费请人协助处理多域名问题,或者排查是否其实是其他问题
1 个赞