本文目录导读:

排查访问故障需要系统性地逐步缩小问题范围,以下是标准的排查流程,从最简单、最常见的原因开始,逐步深入:
第一阶段:基础自查(用户端)
首先确认问题是否出在你自己、客户端或简单的网络问题上。
-
检查网址(URL)是否正确:
- 是否拼写错误?
baidu.com写成baidu.con。 - 协议是否正确?
https://与http://有时会指向不同服务。 - 端口号是否正确(如果访问非标准端口,如
xxx.com:8080)?
- 是否拼写错误?
-
确认本地网络连接:
- 能否正常访问其他网站(如百度、谷歌)?
- 如果能访问其他网站,不能访问目标网站,说明你的网络是通的,问题可能在目标服务器或中间网络。
- 如果所有网站都打不开,请检查:路由器是否亮灯、电脑是否获取了IP地址(输入
ipconfig或ifconfig查看)、是否连接了VPN或代理(关闭试试)。
-
测试域名解析(DNS):
- 打开命令提示符(Windows)或终端(Mac/Linux)。
- 输入
ping 目标域名(ping www.baidu.com),看看是否能解析出IP地址并收到回复。 ping显示“找不到主机”或无法解析,说明DNS有问题,尝试更换DNS服务器(如阿里DNS:5.5.5,腾讯DNS:29.29.29,谷歌DNS:8.8.8)。ping返回了IP地址但没有回复或超时,说明DNS没问题,问题出在IP通信或服务器。
-
检查浏览器/客户端:
- 清空浏览器缓存和Cookie(尤其是访问改版后的网站)。
- 关闭浏览器插件/扩展(特别是广告拦截、安全插件)。
- 换个浏览器(Chrome, Edge, Firefox)或换个设备(手机、平板)试试,如果能访问,说明原浏览器或设备有问题。
第二阶段:网络路径排查(技术测试)
如果基础自查没找到问题,使用网络工具探测通信路径。
-
Telnet/Test-NetConnection 检查端口:
- 访问网站本质上是访问特定端口(HTTP是80,HTTPS是443)。
- Windows:
telnet 目标域名 443(需要在“启用或关闭Windows功能”中开启Telnet客户端),如果提示“连接失败”,说明端口不通。 - PowerShell(更推荐):
Test-NetConnection www.baidu.com -port 443,会返回TcpTestSucceeded: True/False。
-
Tracert/Traceroute 追踪路由:
- 输入
tracert 目标域名(Windows)或traceroute 目标域名(Mac/Linux)。 - 它会显示从你的电脑到目标服务器经过的每一跳路由器。
- 排查点:
- 在哪一跳出现连续的超时()或者特别高的延迟(>1000ms)?这可能是网络瓶颈或中断的地方。
- 最后几跳是否到达了目标IP的归属地?如果中途跳到了别的地方或者完全走不通,可能是骨干网或服务器归属网络的问题。
- 输入
-
检查 HTTPS 证书错误:
- 如果浏览器提示“您的连接不是私密连接”、“NET::ERRCERT*”等,按F12打开开发者工具 -> Security(安全)面板查看证书详情。
- 常见原因:证书过期、证书与域名不匹配(使用IP访问但证书是给域名的)、自签名证书不被信任。
第三阶段:服务器端排查(如果你是网站管理员)
如果用户端和网络都正常,问题很可能出在服务器本身。
-
检查服务是否在运行:
- 登录服务器(SSH或远程桌面)。
- 输入
systemctl status nginx或systemctl status httpd或systemctl status mysql等,确认Web服务和数据库服务运行正常。
-
检查服务器资源:
top或htop命令查看CPU和内存使用率。df -h查看磁盘空间(磁盘满会导致服务异常)。free -m查看内存是否耗尽。- 如果资源耗尽,可能是被攻击或程序有Bug,如果是云服务器,检查控制台是否提示“CPU 100%”。
-
检查防火墙和安全组:
- 服务器防火墙(iptables/firewalld/ufw)是否放行了80和443端口?
iptables -L -n查看规则。 - 云服务器特别要检查:登录云服务商控制台,找到“安全组”或“防火墙”设置。是否允许了公网IP访问80/443端口? 这是云服务器最常被忽略的问题。
- 服务器防火墙(iptables/firewalld/ufw)是否放行了80和443端口?
-
检查应用日志:
- 错误日志是黄金信息,Web服务日志通常在
/var/log/nginx/error.log或/var/log/apache2/error.log。 - 应用日志(如Java的catalina.out, Python的log文件),搜索关键字
error、timeout、500、Connection refused,最后几千行日志里可能藏着直接原因。
- 错误日志是黄金信息,Web服务日志通常在
-
检查域名与服务器绑定:
- 在Web服务器配置文件中,是否配置了监听那个域名?Nginx 的
server_name字段,是否与访问的域名匹配?如果不匹配,可能返回默认页面或404。
- 在Web服务器配置文件中,是否配置了监听那个域名?Nginx 的
常见错误代码及含义
快速根据浏览器返回的错误码定位:
| 状态码/错误 | 可能原因 | 排查方向 |
|---|---|---|
| 400 Bad Request | 请求格式错误 | 检查URL格式、请求头(尤其是Host字段)。 |
| 401/403 Forbidden | 权限被拒绝 | 检查是否登录、是否有访问目录权限、IP是否被列入黑名单。 |
| 404 Not Found | 资源不存在 | 检查URL路径是否正确、文件是否被删除/移动。 |
| 429 Too Many Requests | 请求频率过快 | 等待一段时间再试,或检查是否有爬虫/脚本在频繁请求。 |
| 500 Internal Server Error | 服务器内部错误 | 检查应用日志!可能是程序Bug、数据库连接失败、配置文件语法错误。 |
| 502 Bad Gateway | 代理/网关服务器无响应 | 通常是后端服务(如PHP-FPM, Tomcat, Node.js)挂了或崩溃。 |
| 503 Service Unavailable | 服务暂时不可用 | 服务器过载、正在重启、维护模式。 |
| 504 Gateway Timeout | 代理等待后端响应超时 | 后端处理时间过长(慢查询、死循环),或后端服务未启动。 |
| Connection Timed Out | 连接超时 | 防火墙拦截、服务器宕机、网络中断。 |
| Refused Connection | 连接被拒绝 | 端口没开放、服务没监听在该端口、服务器进黑名单。 |
总结排查逻辑图
-
你一个人上不去 vs 所有人都上不去?
- 你一个人上不去 -> 检查你自己的网络、DNS、浏览器、VPN。
- 所有人都上不去 -> 检查服务器状态(负载、服务)、云服务器安全组、DNS记录。
-
其他网站能上 vs 所有网站都不能上?
- 其他能上 -> 检查目标服务器。
- 所有不能上 -> 检查你的本地网络(路由器、网卡、运营商)。
-
错误码是4xx还是5xx?
- 4xx -> 用户/请求端的错误(路径、权限、格式)。
- 5xx -> 服务器端的错误(崩溃、超时、资源不足)。
按照这个流程,80%以上的访问故障都能在15分钟内定位到根因,如果遇到更复杂的场景(如CDN、负载均衡、WAF防火墙),可以再补充具体细节。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。