宝塔面板博客官方技术博客
宝塔面板

网站打不开怎么排查?按「域名→服务器→端口→程序」四层定位

网站打不开,第一个要做的不是重装环境,而是判断问题出在哪一层。绝大多数情况下,责任层只有一层,找准了改一处就好;盲目重启、重装、换机,只会把问题越搅越乱。

把链路拆开,从外到内一共四层:

层次 检查什么 典型判断依据
1. 域名解析 域名是否指向正确的服务器 IP ping 域名能解析出 IP 且和服务器一致
2. 服务器状态 服务器是否存活、能否登录 SSH 能连上、ping 服务器 IP 通
3. 端口放行 80/443 是否被防火墙或安全组挡住 宝塔端口规则状态、netstat 有监听
4. Web 服务与程序 Nginx/Apache 与后端程序是否正常 nginx -t、错误日志、HTTP 状态码

下面按这个顺序逐层做。

第一层:先确认域名解析对不对

要排除的:域名根本没指向这台服务器,或者指向了旧 IP。

# 看域名解析到什么 IP
ping -c 4 yourdomain.com

ping 会把域名解析成 IP 并显示在输出第一行。拿这个 IP 和你的服务器公网 IP 对一下:

  • IP 不一致 → 问题在 DNS。去域名服务商检查 A 记录,改完等生效(TTL 内)。
  • 提示无法解析域名 → 记录没添加或填错了。这种情况浏览器会报 DNS_PROBE_FINISHED_NXDOMAIN 之类的错误,和服务器毫无关系,改服务器是白费力气。
  • IP 一致 → 继续往下。

换域名访问试试也是个快速验证:如果用 IP 能打开、用域名打不开,那基本可以锁定在解析或域名绑定环节。

如果解析没问题但仍打不开,再确认站点里有没有绑定这个域名:宝塔面板 网站 → 点站点域名 → 在域名管理窗口里核对。

第二层:确认服务器本身是否活着

服务器都连不上,后面几层不用看了。

# 1. 测服务器是否可达
ping -c 4 你的服务器IP

# 2. 直接 SSH 登录试试
ssh root@你的服务器IP
  • ping 不通,SSH 也连不上 → 服务器可能欠费停机、被云厂商封禁,或者宿主机故障。先去云服务商控制台看实例状态。注意部分厂商默认禁 ping,所以 ping 不通不代表服务器挂了,以 SSH 能否登录为准。
  • SSH 能登录 → 服务器是活的,问题在上面几层。

登录后,如果面板也一并打不开,可以用命令查面板信息:

/etc/init.d/bt default

这条命令会输出面板地址、用户名、密码。如果面板服务本身异常,用 bt 命令处理:

bt

在菜单里选择 1 重启面板服务,或选 16 修复面板。

提示:面板打不开和网站打不开是两件事。面板走自己的端口(默认 8888),网站走 80/443,是两套独立服务。面板能打开、网站打不开,说明服务器和网络都没问题,直接跳到第四层去查网站本身。

第三层:确认端口有没有放行

这是「网站打不开」最常见的原因,而且经常被忽略——容易在宝塔防火墙里放行了,却忘了云服务商的安全组。

看端口在服务器上有没有被监听

netstat -tunlp | grep 80

有输出说明有服务在监听 80 端口。没有任何输出,说明 Web 服务没起来,问题在第四层。

看宝塔的端口规则状态

宝塔面板 安全 → 系统防火墙 → 端口规则列表,每条规则的状态含义是:

端口规则列表

状态 含义 怎么处理
正常 端口已放行且服务在监听 无需处理
未使用 端口无服务监听,或服务未启动 去检查服务是否安装、是否启动
外网不通 规则生效了,但外部访问仍不通 按下方的四种原因逐一排查

状态是**「外网不通」**时,宝塔官方给出四种可能:

  1. 服务未监听外网 IP(比如只监听了 127.0.0.1)
  2. 云服务商安全组未放行
  3. 规则未生效——可以尝试删除该规则后重新添加
  4. 该端口本就不需要外部访问,可以忽略

去云服务商控制台放行

这一步在宝塔面板里做不了,必须去云厂商控制台:

  • 腾讯云:轻量应用服务器在「管理实例防火墙」里放行;云服务器在「安全组」里添加规则
  • 阿里云:ECS 在安全组里放行,轻量应用服务器在防火墙里放行
  • 华为云:云服务器在「安全组规则」里配置

需要放行的常用端口:

端口 用途 是否必须
80 HTTP 必须
443 HTTPS 用 HTTPS 就必须
8888 phpMyAdmin(面板默认端口也是 8888) 不用可不放行
21 / 20 FTP 用 FTP 才需要
3306 MySQL 外部连接 不需要外连数据库就别放

注意:3306 不要随便对全网放行。数据库暴露在公网是被入侵的高发原因,确实需要远程连接时,来源限制为固定 IP 更安全。

第四层:查 Web 服务和程序

走到这里,域名、服务器、端口都是通的,问题在服务或程序本身。

先看 HTTP 状态码,它能直接告诉你方向

用 curl 拿到响应头,状态码就是线索:

curl -I http://yourdomain.com
状态码 含义 往哪查
200 正常 那就不是服务端问题,查本地网络或浏览器缓存
301 / 302 跳转 跳转目标是否可达、是否形成循环
403 拒绝访问 目录权限、网站加固规则、防篡改插件
404 找不到页面 站点根目录、默认文档、伪静态规则
502 / 504 后端无响应或超时 Nginx 通了,后端程序(PHP/Node/Python)挂了
一直转圈无响应 连接超时 回到第三层查端口

特别注意 502/504:这两个码说明 Nginx 本身是好的,反向代理过去之后后端没给响应。所以不是“网站打不开”,而是“网站背后的程序挂了”,重点查后端进程、端口和内存占用。

检查服务状态和配置

# 检查 Nginx 配置语法(改过配置后必做)
nginx -t

配置有语法错误时 Nginx 无法正常加载。如果站点是 PHP 项目,还要确认 PHP-FPM 是否在运行;是 Node/Python 项目,检查反向代理指向的后端端口是否和程序实际监听的一致。

看站点日志定位具体报错

宝塔面板 网站 → 点站点域名 → 弹窗左侧导航选 网站日志,分三块:

网站日志

  • 响应日志:记录每个请求的客户端 IP、请求时间、请求方法、资源路径、响应状态码、响应字节数、Referer、User-Agent。看得出来是谁在访问、返回了什么码。
  • 错误日志:网站运行中发生的错误信息,定位程序问题主要看这里。

错误日志

  • 日志安全分析:异常请求和攻击特征分析。

响应日志

说明:响应日志里的 IP 归属地 显示是企业版功能。非企业版能看到 IP,但不显示归属地。

还要确认默认文档

如果访问首页返回 404 或目录列表,检查 默认文档 配置。

默认文档配置

宝塔创建的站点默认包含这几个:index.php、index.html、index.htm、default.php、default.htm、default.html。网站根目录里没有这些文件名,访问根路径自然就找不到入口。

一套可直接照做的排查顺序

总结成清单,下次直接按顺序执行:

# 1. 域名解析对不对
ping -c 4 yourdomain.com

# 2. 服务器活不活
ping -c 4 服务器IP
ssh root@服务器IP
netstat -tunlp | grep 80

# 3. HTTP 返回什么
curl -I http://yourdomain.com

配合面板上的两处检查:安全 → 系统防火墙 看端口状态;网站 → 站点 → 网站日志 看错误日志。

四层里哪一层断了,问题就在哪一层。能定位到层,就已经解决了排查里最难的部分。

补充:让故障先被通知到,而不是先被用户发现

网站打不开这类问题,被动等用户反馈已经晚了一步。宝塔面板 网站 → 点站点域名 → 网站告警,可以配置拨测告警:

网站拨测告警

按设定周期主动探测站点可用性,异常时通过邮件、微信、钉钉等渠道推送。

两种检测方式:

  • 本地测试:本机发请求,结果可能受本机网络影响
  • 多节点测试:通过宝塔部署在全国的多个节点探测,覆盖更全面(需企业版)

提示:排查类文章只能解决“已经坏了怎么办”。真正省事的是在坏的第一时间收到通知,尤其是在夜里和周末。

常见问题

宝塔面板能打开,但网站打不开,是哪里出了问题?

面板和网站是两套独立服务。面板走它自己的端口(默认 8888),网站走 80/443。如果面板能开而网站不能,说明服务器本身没问题,问题在网站这一侧——先看 80/443 端口有没有放行,再看 Nginx/Apache 是否在运行,最后看站点配置和程序日志。

为什么本机 curl 能访问,外网却打不开?

最常见的原因是云服务商安全组没有放行 80/443。本机请求走的是回环地址,不经过安全组,所以能通;外网请求要先过安全组才能到服务器。其次检查 Web 服务是否只监听了 127.0.0.1,这会导致同样的现象。

宝塔防火墙里端口状态显示「外网不通」是什么意思?

表示端口规则本身已生效,但外部访问仍不通。宝塔给出四种可能:服务未监听外网 IP、云服务商安全组未放行、规则未生效(可尝试删除后重新添加)、以及该端口本就不影响访问时可以忽略。

网站返回 502 是什么问题?

502 说明 Nginx 本身是通的,但它把请求转发给后端(PHP-FPM、Node、Python 等)时没拿到正常响应。所以 502 不是「网站打不开」,而是「网站背后的程序挂了」。重点查后端服务是否在运行、端口是否正确、以及站点错误日志里的具体报错。

改了面板端口后连不上面板了怎么办?

通过 SSH 登录服务器执行 bt 命令,选择 8 改回原来的端口。注意云服务器需要提前在安全组放行新端口,否则改完就进不去了。