运维老司机带你排查"ping通但网页打不开"的7种姿势

4 阅读10分钟

运维老司机带你排查"ping 通但网页打不开"的 7 种姿势

前两天朋友突然甩来一句:"我那个网站打不开了,但是我 ping 了一下是通的啊,啥情况?" 我说:"哥,ping 通和网页能打开是两码事……" 他:"???"

估计这个困惑不止他一个人有,干脆写一篇说清楚。

写在前面

做运维这些年,"ping 通但网页打不开"这个问题我至少遇过几百次,每次新人来问我都得从头解释一遍。今天这篇文章就把所有可能的原因、判断方法、解决思路一次性梳理清楚,收藏一篇,以后排障少踩 90% 的坑

文章面向有一点网络基础但不深入的同学,不会上来就甩 TCP 握手图,尽量用大白话讲。


先搞清楚:ping 到底测的是什么?

在排查之前,必须先明白一件事——ping 和"打开网页"用的根本不是同一个协议

  • ping 走的是 ICMP 协议,本质上就是"喊一嗓子,看对方应不应"。它只能证明:你的电脑 → 对方服务器之间的网络是通的,而且对方的操作系统还活着。
  • 打开网页 走的是 HTTP 或 HTTPS 协议(基于 TCP),需要对方服务器上的"网站程序"(比如 Nginx、Apache)正常监听 80/443 端口、正常处理请求、正常返回网页内容。

打个比方:ping 通 = 你打电话到一栋写字楼的总机,有人接听。打开网页 = 你要找的那家公司的某位员工正常上班、能给你办事。总机有人不代表那位员工在啊。

明白这个,下面 7 种原因就好理解了。


姿势 1:网站服务程序挂了(Web 服务崩溃)

这是最常见的一种。服务器还开着、操作系统还在跑(所以 ping 通),但是 Nginx、Apache、IIS 这些"提供网页服务的程序"挂了、卡死了或者被重启卡在中间状态。

怎么判断?

最简单的办法:测一下 80 端口或 443 端口能不能连上

ping 测的是服务器整体存活,而 tcping 测的是"指定端口上的服务能不能连"。如果 ping 通但 tcping 80 端口不通,那基本就是 Web 服务挂了。

👉 在线 Tcping 工具 输入域名 + 端口(80 或 443),如果显示连接超时或拒绝,而 ping 工具又显示正常,就是这种情况。

怎么解决?

如果是你自己的服务器,登上去重启一下 Web 服务就行(systemctl restart nginx)。如果是别人的网站,只能等管理员处理,你刷新几次过会儿再试。


姿势 2:DNS 解析有问题

DNS 是把"域名"翻译成"IP 地址"的服务。你 ping 域名的时候 ping 通了,但浏览器访问的时候,可能因为以下几种情况就打不开:

  • 你 ping 的时候用的是缓存里的旧 IP,但浏览器用的是新解析(或反过来)
  • DNS 被污染,解析到了一个能 ping 通但根本不是这个网站的 IP
  • 不同地区/运营商的 DNS 解析结果不一样,你的 DNS 服务器返回了一个有问题的 IP

怎么判断?

用多个地区的 DNS 服务器同时查一下这个域名,看返回的 IP 是不是一致。

👉 在线 DNS 查询工具 多节点查询,如果各地返回的 IP 五花八门,或者出现明显异常的 IP(比如本应是国外网站却解析到国内 IP),就是 DNS 出了问题。

怎么解决?

最简单的:换一个 DNS 服务器。在网络设置里把 DNS 改成 223.5.5.5(阿里)、119.29.29.29(腾讯)或 1.1.1.1(Cloudflare),然后清一下本地 DNS 缓存:

  • Windows:命令行执行 ipconfig /flushdns
  • macOS:sudo dscacheutil -flushcache
  • Linux:sudo systemd-resolve --flush-caches

姿势 3:网站后端程序挂了(返回 5xx 错误)

这种情况下,Web 服务(Nginx)是好的,所以 tcping 80 端口也通,但 Nginx 后面的程序(PHP、Node.js、Java 等)挂了,返回 502、503、504 这些错误。

怎么判断?

直接发一个真正的 HTTP 请求过去,看返回什么状态码。

  • 200 = 正常
  • 5xx(500、502、503、504)= 服务器后端有问题
  • 4xx(404、403)= 路径或权限有问题(见姿势 7)

👉 在线 HTTP 测速工具 测一下,如果返回 502/503/504,说明 Web 服务壳子还在,但里面的应用程序挂了。

怎么解决?

如果是自己的网站,看后端日志(PHP-FPM、Tomcat、Node 进程等)是不是崩了或者数据库连接超时。如果是别人的,等等再试。

# 一些常见的后端日志位置
tail -f /var/log/phpX.X-fpm.log
tail -f /var/log/nginx/error.log
journalctl -u myapp -f

姿势 4:线路绕路或半通(看起来通,实际很慢)

ping 显示有回复,但延迟极高(比如几百上千毫秒),或者丢包严重(比如 50% 以上)。这种情况下浏览器虽然技术上"能"打开网页,但每个请求都要等很久,看起来就像打不开一样,你点几下就放弃了。

怎么判断?

看 ping 的 延迟丢包率,再用 MTR 看具体哪一跳出问题。

👉 先用 Ping 工具 多节点测一下,如果某些节点延迟特别高(比如 >300ms)或者丢包(比如 >5%),再用 MTR 路由追踪 看看是哪一跳卡住了。

MTR 会列出从你到服务器经过的每一个路由节点,哪一跳开始延迟暴涨或开始丢包,问题就出在那附近。

怎么解决?

  • 如果是你这一侧的运营商出口绕路:可以试试切换网络(比如手机热点对比一下),或者投诉运营商
  • 如果是中间国际链路绕路:基本只能等,或者用 CDN/代理绕开
  • 如果是服务器侧的入口拥堵:联系网站管理员,他们可能需要换 IP 或加 CDN

姿势 5:HTTPS 证书过期或不被信任

如果网站是 HTTPS 的(地址栏 https:// 开头),证书出问题也会导致网页打不开,但 ping 一点事没有(ping 不关心证书)。

常见情况

  • 证书过期没续费
  • 证书域名对不上(比如证书签的是 www.abc.com,但你访问的是 abc.com)
  • 证书是自签的不被浏览器信任
  • 你电脑的系统时间不对,导致浏览器认为证书"还没生效"或"已过期"

怎么判断?

  • 浏览器会明显提示"您的连接不是私密连接""ERR_CERT_DATE_INVALID"等等
  • 用 HTTP 测速工具看是不是返回了证书错误

👉 HTTP 测速工具 在测 HTTPS 网址时,如果证书有问题会直接报错,而不是返回 200。

怎么解决?

  • 如果是别人的网站:换浏览器试试,或者先检查一下自己电脑的时间是不是正确
  • 如果是自己的网站:赶紧续费证书,或者换免费的 Let's Encrypt

姿势 6:CDN 节点故障

很多网站用了 CDN(内容分发网络),会根据你所在的地区把你引到最近的 CDN 节点。ping 通的可能是你所在地的某个 CDN 节点(它确实活着),但这个节点和源站之间断了,导致它没法给你返回内容。

或者你被分配到的 CDN 节点本身就在抽风。

怎么判断?

用多个不同地区的节点同时测,看是不是只有你这一个地区的节点不通,其他地区都正常。如果是,大概率是你这边的 CDN 节点出问题。

👉 用 HTTP 多节点测速 选 10 个以上不同地区的节点同时测,如果"北京电信通、上海移动通、广州联通不通",这种地域性差异基本就是 CDN 节点的问题。

怎么解决?

普通用户:等等,或者用 VPN/代理切换出口 IP,绕开有问题的 CDN 节点。 网站管理员:登录 CDN 控制台看节点状态,或者切换 CDN 服务商。


姿势 7:防火墙或路径权限问题

ping 通、tcping 通、HTTP 也能连上,但返回 403 Forbidden 或 404 Not Found,网页就是打不开。

常见情况

  • 服务器防火墙拉黑了你的 IP(比如你之前频繁刷新被识别为攻击)
  • 网站做了地区限制(比如只允许中国大陆 IP 访问)
  • 你访问的具体页面被删掉了或路径写错了
  • 网站要求登录但你没登录

怎么判断?

看 HTTP 返回码:

  • 403 = 服务器知道你想访问什么,但拒绝你
  • 404 = 你访问的页面不存在
  • 451 = 因法律原因不可用
  • 429 = 你请求太频繁了被限速

👉 HTTP 测速工具 返回的状态码会告诉你具体是哪种情况。

一个小技巧:用在线工具(服务器 IP)访问能成功,但你自己浏览器访问失败——这说明网站和服务都正常,大概率是你的 IP 被针对性屏蔽了。

怎么解决?

  • 403/451:换个网络环境(手机流量、VPN)试试
  • 404:检查一下网址是不是写错了
  • 429:歇一会儿再访问

一张表速查:ping 通但网页打不开的 7 种姿势

原因判断方法用什么工具测
1. Web 服务挂了tcping 80/443 端口不通Tcping
2. DNS 解析问题各地 DNS 返回 IP 不一致DNS 查询
3. 后端程序挂了HTTP 返回 502/503/504HTTP 测速
4. 线路绕路/丢包ping 高延迟或丢包,MTR 看到具体哪一跳Ping + MTR
5. HTTPS 证书问题浏览器提示证书错误HTTP 测速(测 https)
6. CDN 节点故障部分地区不通、其他地区正常HTTP 多节点测速
7. 防火墙/权限HTTP 返回 403/404/429/451HTTP 测速

老司机的排查顺序(直接照做就行)

如果你不知道从哪开始,按这个顺序一步一步来,基本不会绕弯路:

  1. 先用 Ping 工具多节点测 —— 看延迟高不高、丢包严不严重
  2. 再用 Tcping 测 80/443 端口 —— 排除 Web 服务挂了
  3. 接着用 HTTP 工具看状态码 —— 区分是 5xx(后端问题)还是 4xx(权限问题)
  4. 如果状态码异常或者地区差异大,用 DNS 查询看域名解析是否正常
  5. 如果是延迟/丢包问题,用 MTR 路由追踪定位是哪一跳出问题

测完之后,把每一步的关键数据(延迟、丢包率、HTTP 状态码、各节点结果)记下来,基本就能拼出一张完整的"问题地图"。


写在最后

"ping 通但网页打不开" 不是一个错误,而是一种信号——它告诉你:问题不在最底层的网络连通性,而在更上层的某个环节。可能是 DNS、可能是 Web 服务、可能是后端程序、可能是证书、可能是 CDN、也可能是防火墙。

掌握了这套排查思路,你以后再遇到网站打不开,就不会只会傻乎乎地刷新了。先 ping、再 tcping、再 HTTP,三步定位法基本能覆盖 90% 的情况。

如果排查完还是搞不清楚,把多节点测速结果截图发给网站管理员或者客服,他们一看就懂——这比你描述"我打不开你们网站"有用一万倍。


📝 原文首发于个人博客 Biuping.com,欢迎来玩。文中提到的多节点测速、Ping、Tcping、HTTP、DNS、MTR 工具,本站都有免费在线版本可用,无需注册。

如果觉得有帮助,点个赞👍 + 收藏⭐ 让更多人看到,谢谢!