# 网站宕机：根据现象找到原因

Source: https://support.kapsulehost.com/zh-cn/site-down-triage

这是一份针对无法加载的网站、跨越所有产品的排查树。KapsuleHost 运营着多种产品，找到原因最快的方法不是去猜是哪个产品出了问题，而是仔细看浏览器在屏幕上到底显示了什么。下面每个分支都以您能在一分钟内亲自看到或测试的东西为依据，而且每个分支都会排除其他分支。

请从上到下进行。前四个问题能排除排查树的大部分，之后的分支设计为互不重叠：您应该恰好落在其中一个。

## 划分整棵树的四个问题

在更改任何东西之前先回答这些问题。每个问题都是您可以自己进行的测试，每一个都能排除一整类原因。

**1. 是一个平静的页面，还是一个错误？** 如果出现一个整洁的页面，说明网站已暂停，那根本不是技术故障。这是账单状态，解决办法在您的账户里，而不在您的代码里。请直接前往下面的分支 A。

**2. 用移动数据和用 Wi-Fi 都失败吗？** 关掉手机的 Wi-Fi，通过移动网络加载网站。如果用移动数据能加载而用 Wi-Fi 不能，网站本身没有任何问题：故障在于您的本地网络、路由器，或您设备上过时的 DNS 缓存。如果两者都失败，问题是真实存在的，您的访客也会遇到。

**3. 是一个页面，还是所有页面？** 依次尝试首页、一个内页，以及一个故意编造的地址，例如 `/this-page-does-not-exist`。这三者中哪些能正常工作，以及编造的地址返回什么，是本指南中信息量最大的一项测试。下面有两个分支仅凭它就能判定。

**4. 您看到的是错误，还是别人的网站？** 无法加载的网站和加载了错误内容的网站是完全不同的问题。如果出现的是您的旧网站，那么什么都没坏：您的域名仍然指向旧主机。这是分支 D，也是最常被误读的现象。

> **Note:** 有一项测试值得跳过：在地址后面加上 `?cachebust=1`，在我们的网络上并不会产生人们以为的效果。我们的边缘节点会把查询字符串排除在缓存键之外，所以该地址返回的仍是之前的缓存副本。要强制获取新的响应，请改为添加一个随机的路径段，例如 `yourdomain.com/anything-random-here`。这是经过测量的行为，不是猜测，在分支 H 中很重要。

## 第零步：确认是不是我们的问题

在继续阅读之前，先查看平台是否在报告问题。我们的状态页是公开的，无需登录，并持续更新：

[status.kapsulehost.com](https://status.kapsulehost.com)

您也可以从 KPanel 侧边栏底部的 **系统状态** 进入。

不要只看标题。找到与您网站所用产品对应的那一行，因为各行是独立出故障的：

| 如果您的网站是 | 请关注这一行 |
|---|---|
| 网站或 WordPress 站点 | **网站托管** 或 **Managed WordPress** |
| 位于我们的 CDN 之后 | **Kapsule CDN** |
| 使用我们的域名服务器 | **高级 DNS** |
| 只在 HTTPS 下失败 | **SSL 证书** |

> **Note:** 状态页全部正常并不代表您的网站没问题。它说明共享平台没问题，这其实很有用：它告诉您原因在您自己的账户、配置或代码中，并让您直接进入下面的分支。状态页报告的是我们的组件，从不报告您的单个网站。

如需了解您自己具体项目而非平台的可用性，请参阅 [正常运行时间监控](https://support.kapsulehost.com/zh-cn/site-uptime-monitoring)。正常运行时间监控衡量的是可达性，而不是正确性：一个很快返回损坏页面的网站仍然算作在线。

## A：一个平静的暂停页面，而不是错误

**您看到的：** 网站没有报错。加载出一个刻意设计得很平静的页面，标题是"此网站目前已暂停。"它说明托管处于暂停状态、没有任何数据丢失，并提供一个登录按钮。

**含义：** 这是账单状态，不是技术故障。服务器是健康的，是在有意这样响应。无论清除多少次缓存、重新指向 DNS 还是重新部署，都不会改变它。

**该怎么做：** 登录并结清账户。付款完成后几分钟内网站就会恢复，您的数据从未被动过。请从 [您的账户为何被暂停](https://support.kapsulehost.com/zh-cn/account-suspended) 开始，如需了解哪一天会发生什么的完整时间表，请参阅 [停止付款会发生什么](https://support.kapsulehost.com/zh-cn/unpaid-account-timeline)。

**这也能缩小产品范围。** 只有托管订阅下的网站才会显示暂停页面。所以暂停页面既告诉您是哪类问题，也告诉您涉及的是哪个产品。

> **Tip:** 对于搜索引擎而言，暂停页面被有意标记为临时状态，并请求它们不要收录。短暂的暂停不会让您丢掉排名。证书验证不受其影响，所以在您处理账单期间续期仍会正常进行，HTTPS 也不会中断。

**恢复服务并不是即时的。** 付款会立即更新您的账户，但解除 Web 服务器封锁的是一个后台协调任务，它每隔几分钟运行一次。如果付款后暂停页面仍然存在，请等待几分钟，并在隐私窗口中重新加载，然后再提交工单。

## A2：您无法登录，但网站正常

**您看到的：** 与分支 A 相反。访客能完全正常地访问网站，但您进不了 KPanel。登录页面显示"您的账户已被暂停。请联系支持。"

**含义：** 这也是账单问题，而且是大多数人会误读的情况。有几种账户级暂停根本不会影响网站：手动支付的年度发票、由我们团队发起的暂停，以及通过经销商计费的账户，都会锁定控制面板，而所有网站继续提供服务。网站本身不会告诉您发生了这种情况，这正是值得在这里点明的原因。

**该怎么做：** 结清发票是必要的，但在这些情况下，仅此一项往往不足以恢复控制面板访问。请用账户邮箱给 [support@kapsulehost.com](mailto:support@kapsulehost.com) 发邮件，说明您已付款，并请求恢复访问。请附上发票编号。

> **Note:** 如果暂停生效时您已经登录，您现有的会话会一直有效直到过期。现在能使用控制面板并不能证明账户状态良好。请直接查看 **账单**，而不要凭仍处于登录状态来做判断。

## C：每个地址都返回首页

**您看到的：** 首页能加载。内页也返回首页而不是它们自己的内容，一个故意编造的地址（例如 `/this-page-does-not-exist`）同样以首页响应，而不是 404。

**什么时候是正确的：** 您的应用采用客户端路由，只是您的路由器没有匹配到这个地址。故障在您的前端代码里，而不在托管上。

**什么时候是错误的：** 您用的不是客户端路由框架，而一个错误的地址却在悄悄地用首页响应。这值得修复，因为这样一来，损坏的内部链接在每次抓取中都能存活下来，而搜索引擎会对此不利处理。请检查项目的框架预设：您选择的预设优先于我们检测到的，所以选错预设恰好会产生这种现象。

**其他所有情况下的正常行为：** 如果构建中包含自己的 `404.html`，未知地址会返回它，并带有真正的 404 状态；如果没有，则返回我们自己的 404 页面。

## D：出现的是您的旧网站，而不是新网站

**您看到的：** 有东西加载出来了，但不对。那是您以前的网站、旧主机的停放页面，或者一个您不认识的"即将推出"页面。没有任何报错。

**含义：** 您的域名仍然指向旧主机。请求根本没有到达 KapsuleHost，所以您在我们这边做的任何更改都无法影响访客看到的内容。这是托管中最常被误读的现象，因为一个能正常显示的页面会让人觉得有了进展。

**如何在一个地方确认：**

- 对于在我们这里注册的域名，打开 **域名**，然后打开该域名。那里的卡片会明确告诉您五种情况中哪一种属实，其中包括"未指向此处"，内容为："我们检查的所有解析器返回的域名服务器都不是我们的，因此该域名的流量没有到达 KapsuleHost。"如果显示的是"传播中"，它会说明已有多少个解析器一致，并且通常会在几小时内自行完成。

**该怎么做：** 在管理该域名的地方修改记录，然后等待。

## E：浏览器根本找不到这个域名

**您看到的：** 浏览器根本无法到达服务器。它提示找不到该地址，或找不到服务器 IP 地址，而且在移动数据和 Wi-Fi 下、在隐私窗口中、对其他人来说都以同样的方式失败。

**含义：** 这个名称对任何人都无法解析。没有可供跟随的记录，所以请求不是慢或被拒绝，而是根本无处可去。常见原因是域名已过期、域名从未设置过域名服务器、某条记录被删除，或者这个名称只是输入到了我们的控制面板中，却从未在注册商那里创建过。

**该怎么做（按顺序）：**

1. 检查域名是否已过期。打开 **域名** 查看该域名的状态。过期的域名无论托管多么健康都会停止解析，续费是唯一的解决办法。我们的时钟与注册局的时钟并不相同：请参阅 [域名续费与过期](https://support.kapsulehost.com/zh-cn/domains-renewal-expiry)。
2. 在域名卡片上检查委派情况。如果那里显示"无响应"，说明没有任何解析器能找到该域名，这通常意味着它是新注册的、已过期，或者没有设置域名服务器。

关于每种记录类型的作用，请参阅 [DNS 基础](https://support.kapsulehost.com/zh-cn/dns-basics) 和 [CNAME 记录](https://support.kapsulehost.com/zh-cn/cname-records)。

## F：出现证书警告而不是网站

**您看到的：** 浏览器没有加载页面，而是用安全警告拦住了它，提示连接不是私密的。警告背后的网站本身是健康的：这是证书的问题，而不是服务器的问题。

**含义：** 要么还没有为这个确切的主机名签发证书，要么现有的证书已过期，要么它覆盖的名称与您输入的不同。一种非常常见的情况是 `www.yourdomain.com` 和 `yourdomain.com` 没有同时被覆盖，所以一个能用、另一个不能用。请明确测试两种写法：如果一个能加载而另一个出现警告，那是这一个名称的证书和记录问题，而不是服务器问题。

**对于托管上的网站，不要相信站点概览页面。** 概览页面只把证书显示为"有效"或"待处理"，而对于已过期或签发失败的证书，它显示的也是"待处理，证书签发中"。这恰恰在最不该让人安心的时刻让人安心。请进入站点，然后打开 **安全**，那里显示真实状态：证书还剩多少天，以及一个 **立即续费** 按钮。那个页面才是如实反映情况的地方，也是您应该查看的地方。

签发证书需要 DNS 先正确，所以如果分支 D 或 E 适用，请先修复它们，再重新签发任何证书。请参阅 [SSL 证书](https://support.kapsulehost.com/zh-cn/ssl-certificates)；如果挂锁不是缺失而是损坏，请参阅 [修复混合内容警告](https://support.kapsulehost.com/zh-cn/ssl-mixed-content)。

## G：5xx 错误页面

**您看到的：** 一个带数字的真正 HTTP 错误：500、502、503 或 504。域名已解析，证书已被接受，服务器也做出了响应。这已经排除了排查树的很大一部分。

**含义：** 请求到达了我们这里，而其后的应用出错了或没有及时响应。数字很重要：500 是您的应用抛出了错误，502 和 504 与 Web 服务器背后的进程无法访问或响应太慢有关，503 则是有意的拒绝，在托管上，分支 A 中暂停页面的底层就是这样的状态。

**该怎么做：** 看清数字，然后查看您自己的日志。打开站点，然后打开 **日志**，查看最近的条目：PHP 致命错误会指明文件和行号，从而找出负责的插件或代码。各状态码的详细说明见 [HTTP 错误代码](https://support.kapsulehost.com/zh-cn/http-error-codes)，常见的应用层面原因见 [我的网站无法加载](https://support.kapsulehost.com/zh-cn/website-not-loading)。

如果问题是在您做了某项更改之后立刻出现的，那项更改就是首要怀疑对象，而恢复比调试更快。请参阅 [从备份恢复](https://support.kapsulehost.com/zh-cn/restoring-from-backup)。

## H：网站能加载，但内容错误或过时

**您看到的：** 网站能用，但提供的内容已经过时：一个您删除了的页面、一份旧的样式表、一个一小时前部署却没有显示出来的修复，或者一个您已经修好的损坏页面。

**含义：** 您拿到的是我们边缘节点上的缓存副本，而不是网站给出的新响应。当其后的源站无法访问时，我们的 CDN 会有意继续提供最后一份正常的副本，这通常是一种体贴，偶尔也会让人困惑，因为这意味着一个看起来正常的网站背后，源站可能实际上已经宕机。

**如何证明是缓存而不是您的网站：** 加载一个无法被缓存的随机路径，例如 `yourdomain.com/anything-random-here`。不要使用 `?cachebust=1`：我们的边缘节点在决定从缓存中提供什么内容时会忽略查询字符串，所以它返回的是缓存副本，什么也证明不了。如果随机路径表现出新的行为而您的真实页面没有，那您看到的就是缓存。在浏览器开发者工具中，响应头 `cdn-cache` 会显示 `HIT`、`MISS` 或 `BYPASS`，直接回答了同一个问题。

**该怎么做：** 清除缓存。请参阅 [清除 CDN 缓存](https://support.kapsulehost.com/zh-cn/cdn-cache-purge)。同时清除所有缓存插件和站点缓存，然后在隐私窗口中检查，以免被您自己的浏览器缓存误导。[站点缓存](https://support.kapsulehost.com/zh-cn/site-cache) 按顺序介绍了各层缓存。

> **Note:** 带宽不是原因。我们的 CDN 带宽对您是不限量的：超出预期用量永远不会让您的网站暂停，永远不会把您的主机名从边缘节点移除，也永远不会悄悄把您切换到更慢的路径。如果您的网站慢或内容过时，请查看缓存和网站本身，而不是您用了多少流量。

## 仍然无法解决时要发给支持团队的内容

如果您已经按上述步骤排查过，仍然无法确定故障所在，一条写得好的消息能省去一整天的来回沟通。请包含：

- 您正在加载的确切地址，带上 `https://`，并与您输入的一样注明是否带 `www`。
- 确切的错误，以文本形式复制，而不是描述它。如果是一行以 `{"error":` 开头的文本，请原样发送那一行，因为它指明了原因。
- 您落在了上面哪个分支，以及控制面板页面上显示了什么。
- 是否在移动数据和 Wi-Fi 下都失败，以及是否对其他人也失败。
- 问题何时开始，以及那段时间前后有什么变化。

请发邮件至 [support@kapsulehost.com](mailto:support@kapsulehost.com)，或在 KPanel 的 **支持** 中提交工单。请参阅 [提交支持工单](https://support.kapsulehost.com/zh-cn/opening-a-support-ticket)。

## 相关阅读

- [我的网站无法加载：诊断清单](https://support.kapsulehost.com/zh-cn/website-not-loading)
- [KapsuleHost 上的 HTTP 错误代码](https://support.kapsulehost.com/zh-cn/http-error-codes)
- [您的账户为何被暂停](https://support.kapsulehost.com/zh-cn/account-suspended)
- [SSL 证书](https://support.kapsulehost.com/zh-cn/ssl-certificates)
- [域名服务器](https://support.kapsulehost.com/zh-cn/nameservers)
- [状态与正常运行时间](https://support.kapsulehost.com/zh-cn/status-and-uptime)
