我最近在我的 Unraid 服务器中添加了一个 WordPress 实例,但是现在当我尝试访问通过 SWAG 反向代理连接到我的个人域的 Wordpress 和 Nextcloud 实例时,经常会遇到错误“无法访问此站点 - 拒绝连接”。
这可能是什么原因造成的?
它似乎完全是随机的,我无法从我检查过的任何日志中找到任何有关发生了什么的提示。我将概述 Web 浏览器到达我的服务器所采取的每个步骤,以及我在每个步骤中所做的所有故障排除。
用户输入
cloud2.mydomain.com
或catawumpus.mydomain.com
。HTTP / HTTPS 无关紧要 - 两者都有效(HTTP 重定向到 HTTPS)。这些域名与 DuckDNS 相关联,因此它们可以跟踪我家的动态 IP 地址(不过这应该不会有太大影响,因为 DuckDNS 表示我们家的 IP 地址上次更改是在七个月前)。- 我尝试重新启动 DuckDNS 容器,但这并没有阻止错误。
请求继续发送到我们家的路由器,路由器将端口 443 和 80 转发到我的服务器。我们家有 Firewalla 设备,因此两个端口也通过该设备转发到我的服务器。
我检查了一下,我们家的路由器确实启用了基本的防火墙,但没有任何日志记录功能。它似乎只阻止特定范围的端口。这个问题不大合理,因为请求永远无法通过。
我检查了 Firewalla 的服务器日志,似乎没有阻止任何与我的域相关的内容。我确实解除了从我的服务器到 pixel.wp.com 的出站请求的阻止,但这似乎没有帮助。我还添加了一条规则,始终允许在网络上访问我的域。
当我收到“拒绝连接”错误时,似乎 Firewalla 的日志通常没有记录通往服务器的途中经过的连接。
请求到达我的服务器(运行 Unraid),然后它经过 SWAG 反向代理并被路由到请求的资源。
当我收到“拒绝连接错误”时,我在任何 SWAG 日志中都找不到该请求的任何记录。我检查了所有这些:
NGINX 访问/错误日志s:没什么
Fail2ban 日志(内置于 SWAG):确实发现它禁止我们家的 IP 地址访问我的服务器,每次六分钟,因为我的 Nextcloud Android 客户端向我的服务器发出了太多失败的请求。使用应用程序密码而不是常规登录页面登录应用程序,然后停止了。还禁用了负责监狱的程序以防万一。然而,问题仍然存在。
PHP 日志: 没有什么
LetsEncrypt 日志: 没有什么。
我确实有 Netdata 容器,所以我可以在它的日志中进行一些挖掘,但它给了我太多信息,我不知道从哪里开始寻找!
请求继续请求资源(Nextcloud 或 Wordpress)。对于我来说,将日志/故障排除到这个级别有点困难。
- WordPress 访问日志很难读取,但据我所知,任何进入 WordPress 容器的内容都会被成功处理。
- 我可以说,我每天都会收到数十封来自 Jetpack 的电子邮件,通知我我的网站已关闭,然后又恢复了。但由于电子邮件发送间隔时间很短,所以当我看到网站关闭通知时,我已经收到了网站恢复的通知。
- 我使用的是 Nextcloud AIO 映像,这使得使用 Nextcloud OCC 命令提取日志变得有些困难。我在 UI 中查看了 Nextcloud 日志,但似乎没有发现任何特别可疑的东西。
还有几个问题也可能由此引起,我之所以指出这些问题,只是为了帮助识别根本问题:
- 我会记录可能相关的问题,以防它有助于追踪主要问题:我无法使用 Nextcloud Office。我可以在其中打开文档,但大约一分钟后它似乎与服务器失去连接(因此它无法再保存文档)。
- 另一个可能相关的问题:似乎 Nextcloud Android 应用程序拒绝相信我的服务器一直在线。我可以登录,但不久之后它会通知我我的服务器处于离线状态,并且永远不会重新连接到它(即使我能够从手机正常访问 Web UI)。可能是 NC 应用程序和 Nextcloud AIO 图像存在问题(与使用官方图像相比?)
答案1
问题似乎解决了!
我联系了我的一位朋友,他指出问题似乎出在我的网站上 HTTPS 的处理方式上。这让我想到刷新我多年前的 SWAG 安装,方法是创建一个全新的 SWAG 实例,其中包含所有最新的代理配置文件,然后只复制我的域和 Cloudflare 配置文件。这似乎大大缓解了这个问题。作为一个附带好处,两个网站的加载速度似乎也快了很多。
我应该注意:我确实需要时不时地重新加载网站几次才能解决首次打开时出现的错误,但之后,整个会话过程都很顺利。对我来说已经足够好了!