检查访问状态与错误页,核心是分别拿到“服务器返回了什么状态码”和“浏览器实际看到了什么页面”这两组证据。只看到页面打不开就下结论,很容易把DNS、证书、服务器、程序、CDN缓存混在一起。下面这份清单按顺序执行,每一步都记录结果,能较快把范围缩小到一层。
要查的是域名是否指向正确IP、目标端口是否可达。在电脑终端执行 ping 你的域名 和 nslookup 你的域名,看返回的IP是不是你预期的服务器地址。如果解析为空或指向陌生IP,问题在DNS记录或域名状态,不在网站程序。
再用 curl -I http://你的域名 和 curl -I https://你的域名 分别请求,观察首行状态码。返回 301、302 说明有跳转,要顺着 Location 头继续查;返回 000 或连接超时,通常是端口未开放、防火墙拦截或服务器未启动。这一步能区分“域名层”和“服务层”,是后续判断的前提。
要查的是服务器对这次请求的正式回应。状态码分几类,含义不同:
4xx:请求方或资源问题。404 表示路径不存在,检查链接拼写、伪静态规则、文件是否被移动;403 表示被拒绝,检查目录权限和访问控制配置。5xx:服务器端处理失败。500 多为程序报错,502、504 常见于反向代理后端无响应或超时。3xx:跳转。要确认跳转链是否形成循环,循环跳转会让浏览器报“重定向过多”。用浏览器开发者工具的 Network 面板刷新页面,点开第一条文档请求,能看到状态码、响应头和耗时。如果状态码是200但页面内容异常,问题就不在访问层,而在程序输出或模板渲染。
同一个“打不开”的现象,可能由不同层产生,错误页样式是重要线索:
如果页面显示“证书无效”“不安全”,先看证书是否过期、域名是否匹配、系统时间是否正确。这类问题与程序无关,改代码解决不了。
要查的是服务器侧记录,避免只凭前台现象猜测。查看Web服务器访问日志,找到对应时间点的请求,确认状态码、来源IP、请求路径。查看错误日志,定位具体报错行。如果使用反向代理,代理日志和后端日志都要看,因为502可能出在代理连不上后端,也可能出在后端自己崩溃。
再用 curl -I -H "Host: 你的域名" http://服务器IP 绕过DNS直接请求源站。如果这样能返回正常状态码,而用域名请求失败,问题在DNS、CDN或证书层;如果两者都失败,问题在源站本身。这一步是定位“中间层”还是“源站”的关键判断。
把每一步的结果写成简短记录:请求时间、URL、状态码、错误页来源、日志中的对应行。记录能避免反复试错,也方便交给运维或开发时说明问题。假设某次请求返回502,代理日志显示“连接后端超时”,后端进程已退出,那么结论是后端服务未运行,处理方向是重启并排查崩溃原因;如果代理日志显示“无法解析后端主机名”,则问题在代理配置的地址写错。两种现象相似,但处理动作完全不同。
下一步,按上面清单从第一步开始逐项执行,把状态码和错误页来源记下来;如果卡在某一层,就只针对那一层继续查,不要同时改动多个配置。