361 361Sale WordPress Care by Openbyt · WordPress 修复与运维

通过服务器日志解决 Error 521 报错的方法

托尼屎大颗
通过服务器日志解决 Error 521 报错的方法

你正在用 Cloudflare 给自己的网站加速,突然弹出一个“Error 521 – Web Server Is Down”的页面,这其实是个挺常见的问题,要搞清楚发生了什么面,就去看服务器日志

什么是 Error 521?

Cloudflare 已经成功联系上了你的服务器 IP,但服务器没给它任何回应,像是“门口有人敲门,屋里没人答应”。大概率是以下几种情况:

接下来咱们看日志怎么一步步帮你揭开谜底。

第一步:确定你在哪种环境下运行网站

这个很关键。不同环境,日志位置也不一样。

总之,搞清楚你的 Web 服务软件和系统架构,才能顺利找日志。

第二步:看访问日志 access.log

这个日志记录的是“谁访问了你的网站”和“访问结果”。

你可以用命令查看最近几分钟的请求:

tail -n 100 /var/log/nginx/access.log

如果你发现 Cloudflare 的 IP 发出请求了,但服务器返回了 502、499 或直接没有响应,那么说明请求到了,但没被处理好。

第三步:重点查看错误日志 error.log

这才是排查 Error 521 的重头戏。

看命令:

tail -n 100 /var/log/nginx/error.log

你可能会看到类似的内容:

[error] 12345#0: *67 connect() failed (111: Connection refused) while connecting to upstream

看到这句“Connection refused”了吗?就是服务器不理 Cloudflare 的根本原因。

或者还有这种:

[crit] 23456#0: *89 SSL_do_handshake() failed

这就可能是 SSL 设置有问题,Cloudflare 和服务器之间的 HTTPS 没办法连接。

第四步:对照时间点找线索

你不可能从一大堆日志中翻完所有内容。所以你要做的是:

  1. 记下出现 Error 521 的大概时间
  2. 去日志里搜索那个时间点附近的记录
  3. 看看有没有特别频繁的请求、异常的状态码、重启记录等

这时候如果你看到某个插件请求太频繁、某个端口报错,那就基本锁定问题范围了。

第五步:防火墙和端口也查一查

别光盯着日志,有时候是服务器拦了 Cloudflare 的 IP。你可以看看你的防火墙设置:sudo ufw status

或者:iptables -L

确认 80 和 443 是开放的,同时确保没有把 Cloudflare 的 IP 段封掉。

Cloudflare 的官方文档有所有 IP 段列表建议直接全加白名单。

第六步:重启一下 Web 服务试试看

有时候 Web 服务突然挂掉了,简单一招就能搞定:

sudo systemctl restart nginx

或者用 Apache:

sudo systemctl restart apache2

重启之后再看看日志,有没有新的提示。

第七步:开启更详细的日志(可选)

如果普通日志看不出问题,可以临时提高日志级别,比如把 nginx 的日志级别设成 debug,再重现一次访问异常,再回来看日志,很可能就能看到关键线索了。

当然,调试完记得改回去,不然日志会疯狂占用硬盘空间。

总结

解决 Error 521 的核心就是搞清楚你用的是什么服务器,找到 access.log 和 error.log,锁定出问题的时间点,然后顺着信息一点点往下查。配合重启服务、检查防火墙、白名单设置,基本都能搞定。

需要工程师帮你判断?

把症状、错误提示和最近改动发过来。

我们先判断风险、可能原因和安全下一步,再决定是否需要登录后台或服务器。

开始初诊

需要把这篇文章里的排查落到你的网站上吗?

把网址、错误提示、最近改动和影响范围发过来。我们先判断风险、备份状态和安全下一步;涉及数据库、支付、订单或安全问题时,不建议直接在生产站连续试错。

免费初诊 · 无需注册 · 先判断风险 提交后会生成工单编号
初诊阶段不要提交后台、主机、数据库或支付账号密码。
紧急宕机、结账失败、安全跳转优先复核;普通问题通常 1 个工作日内回复。 初诊阶段不需要后台密码;需要权限时会单独确认最小权限和回滚方式。
提交前提醒先保留备份和错误提示,不要在生产站连续试错。