第二章 网站与域名排错

先说一句大实话

网站排错的核心,是搞清楚“请求走到哪一步死了”。 一个用户在浏览器输入你的域名,到他看到页面,中间要经过六七个环节。任何一环出问题,表现都是“网站打不开”。所以第二章不讲“怎么建站”,只讲“怎么找出死在哪一环”。

一个请求要闯几道关

把浏览器到你的网站之间的路径画清楚,排错就有了地图:

用户浏览器
   ↓ 域名解析(DNS)
云服务商安全组
   ↓ 端口放行
服务器防火墙
   ↓ 端口放行
OpenResty(1Panel 的网站服务)
   ↓ 按域名找到对应网站配置
后端服务(PHP / Java / Node / 反向代理的目标)
   ↓ 读写文件 / 连数据库
数据库 / 存储卷

排错就是从上往下或者从下往上,一节一节测过去。 比如能 ping 通但浏览器 502,DNS 就没问题,问题在 OpenResty 和后端之间;如果能打开首页但接口 404,问题在反代路径配置。

OpenResty:所有网站的必经之路

1Panel 创建的所有网站,入口都是 OpenResty。这一点决定了排错的基本动作:

情况 说明
OpenResty 挂了 所有网站全挂,一个都打不开
单个网站配置错 只有这个网站挂,别的正常
后端服务挂了 OpenResty 报 502 或 504

记住这个规律:“全挂”和“单个挂”的排查方向完全不同。 全挂先看 OpenResty 状态,单个挂先看那个网站的配置和日志。

在哪里看 OpenResty?网站列表上方的工具栏,可以停止、启动、重启 OpenResty,还有重载(不停机应用新配置)和查看日志。排错的时候,重载比重启好用——不中断现有连接。

1Panel 支持的建站方式

排错之前,先确认这个网站是哪种类型,因为不同类型的排错重点不同:

类型 后端是什么 常见排错重点
一键部署 应用商店里的应用(WordPress、Halo 等) 应用容器状态、数据库
运行环境 PHP / Node.js / Java / Go / Python / .NET 运行环境是否正常、端口
反向代理 转发到别的服务 代理地址对不对、跨域
静态网站 纯 HTML 文件 目录权限、默认文档
子网站 复用父网站的目录 父网站是否正常
TCP/UDP 代理 OpenResty Stream 转发四层流量 端口占用、防火墙放行

建站方式决定了排错路径。比如反向代理的网站报 404,你要查的是代理地址;静态网站报 404,你要查的是目录里有没有那个文件。

这一章解决四个问题

小节 问题 一句话答案
2.1 网站打不开:502 / 504 / 一直转圈 先分清是全站挂还是单个站,再看 OpenResty 日志
2.2 HTTPS 证书申请失败与续签异常 先看证书日志的报错原文,再查域名解析
2.3 反向代理后接口 404 与跨域 代理路径、CORS 配置、WebSocket 升级头
2.4 运行环境报错与伪静态问题 PHP 版本/扩展、伪静态规则、目录权限

两个最常用的排错入口

这一章会反复用到两个地方,先记住位置:

第一个:网站日志。 在 日志审计 → 网站日志,选一个网站,能看 OpenResty 的访问日志和错误日志。90% 的网站问题,错误日志里都写得明明白白。

第二个:OpenResty 设置。 网站列表上方的工具栏。当前状态页能看到活动连接数、请求数、驻留进程;日志页支持实时追踪和按时间段筛选。具体能力取决于 OpenResty 是否正常运行和日志配置。

一个真实的工作习惯:排错的时候开两个浏览器标签,一个看网站日志的错误日志,一个改配置。改一次,切过去看日志有没有新报错。这比“改了试试、试了再猜”快十倍。

一条边界:HTTPS 相关的坑特别多

证书申请、续签、HTTPS 配置,是网站排错里问题最集中的一块。原因很简单:它依赖的东西最多——域名解析要对、DNS 服务商 API 要通、80 或 443 端口要开、网站配置不能变。任何一个环节变了,证书就可能申请失败。

而且证书失败有个恶心之处:网站还能用 HTTP 打开,你会以“网站正常”忽略它,直到某天浏览器突然红色警告。所以 2.2 节会专门讲怎么监控和排查证书问题。

本章会反复出现的概念

概念 一句话解释
OpenResty 1Panel 网站服务的核心,基于 Nginx
伪静态 把 /article/123 这种“假静态路径”转给动态程序处理
反向代理 前台把请求转给后端服务,像公司前台转接分机
CORS 浏览器的跨域限制,前后端分离必踩
ACME 账户 申请 Let's Encrypt 这类免费证书的账号
DNS 账户 调用 DNS 服务商 API 自动加解析验证的账号

更完整的网站功能说明见 1Panel 官方文档:网站。

下一节:我们从最吓人的“网站打不开”开始——502、504、浏览器转圈,三种症状各自的病根。