Linux 云服务器重启以后,偶尔会出现服务器本身能够正常连接,但网站却突然打不开的情况。
常见表现包括:
网站一直加载;
浏览器提示连接超时;
出现 502 Bad Gateway;
出现 503 Service Unavailable;
Nginx 或 Apache 无法启动;
Docker 容器没有恢复;
数据库服务没有启动;
网站目录所在的数据盘没有自动挂载。
这种情况下,不建议一开始就重新安装服务器或者修改大量配置。
可以按照下面的顺序逐项排查。
一、先确认服务器是否已经正常启动
首先确认云服务器当前状态为运行中。
然后通过 SSH 登录服务器。
例如:
ssh root@服务器IP -p SSH端口
如果 SSH 也无法连接,需要先排查服务器本身、SSH 端口或者网络情况,而不是继续检查网站。
如果 SSH 可以正常登录,说明服务器操作系统基本已经启动,可以继续排查 Web 服务。
二、检查服务器当前时间和运行时间
执行:
uptime
可以确认服务器是否确实刚刚完成重启。
再执行:
date
确认系统时间是否正常。
部分网站、HTTPS、Token 或数据库连接可能受到系统时间明显错误的影响。
如果服务器时间异常,应先检查时区和时间同步服务。
三、检查是否存在启动失败的服务

这是服务器重启后非常值得优先检查的一步。
执行:
systemctl --failed
如果没有异常服务,通常会显示没有 failed units。
如果看到类似:
nginx.service loaded failed failed
php8.2-fpm.service loaded failed failed
说明对应服务启动失败。
可以进一步查看:
systemctl status nginx --no-pager
如果是 PHP-FPM,可以根据实际 PHP 版本检查。
例如:
systemctl status php8.2-fpm --no-pager
如果是 MySQL:
systemctl status mysql --no-pager
或者部分系统使用:
systemctl status mariadb --no-pager
重点查看 Active 状态以及最后几行错误提示。
四、检查 Nginx 或 Apache 是否运行
如果网站使用 Nginx,可以执行:
systemctl status nginx --no-pager
正常情况下应该看到:
Active: active (running)
如果没有运行,可以先检查配置:
nginx -t
如果配置检查正常,再尝试启动:
systemctl start nginx
如果服务器使用 Apache,Debian 或 Ubuntu 常见服务名称为:
systemctl status apache2 --no-pager
CentOS、Rocky Linux、AlmaLinux 等系统常见:
systemctl status httpd --no-pager
请根据实际环境判断。
五、检查 80 和 443 端口是否监听

网站通常需要监听:
80
以及:
443
可以执行:
ss -lntp | grep -E ':80|:443'
如果 Nginx 正常工作,通常可以看到类似:
LISTEN 0 511 0.0.0.0:80
LISTEN 0 511 0.0.0.0:443
如果完全没有相关输出,说明 Web 服务可能没有正常监听网站端口。
此时应该继续检查 Nginx、Apache 或其他反向代理服务。
如果端口已经正常监听,可以在服务器本机测试:
curl -I http://127.0.0.1
如果能够返回:
HTTP/1.1 200 OK
或者其他正常 HTTP 状态码,说明 Web 服务本机访问基本正常。
六、本机正常但公网打不开怎么办?
如果:
curl -I http://127.0.0.1
能够正常返回,但通过公网 IP 或域名无法打开,就需要继续检查网络入口。
可以查看系统防火墙。
如果使用 UFW:
ufw status
如果使用 firewalld:
firewall-cmd --list-all
如果使用 nftables:
nft list ruleset
另外还需要确认云平台安全组是否仍然允许网站使用的端口。
通常网站至少需要根据实际业务开放:
80/TCP
443/TCP
如果重启之前网站正常、重启以后公网异常,也不要随意大范围放行所有端口。
应该先确认具体被拦截的位置。
七、出现 502 Bad Gateway 怎么办?
如果网站能够打开,但提示:
502 Bad Gateway
通常说明 Nginx 本身可以正常提供服务,但后端程序没有正常响应。
如果是 PHP 网站,可以检查 PHP-FPM。
例如:
systemctl status php8.2-fpm --no-pager
实际服务名称需要根据安装的 PHP 版本修改。
也可以查看当前 PHP-FPM 服务:
systemctl list-units --type=service | grep php
如果 PHP-FPM 没有启动,可以查看日志和具体错误。
例如:
journalctl -u php8.2-fpm -n 100 --no-pager
如果网站使用其他后端,例如 Node.js、Java 或 Python,也需要检查对应服务是否已经重新启动。
八、检查数据库是否正常启动
部分网站 Web 服务正常,但数据库没有启动,也会导致网站报错或者无法正常加载。
MySQL 可以检查:
systemctl status mysql --no-pager
MariaDB 可以检查:
systemctl status mariadb --no-pager
如果数据库启动失败,可以查看日志:
journalctl -u mysql -n 100 --no-pager
或者:
journalctl -u mariadb -n 100 --no-pager
数据库启动失败常见方向包括:
磁盘空间不足;
数据盘未挂载;
配置错误;
权限问题;
异常关机后的恢复过程;
其他服务占用端口。
不要直接删除数据库文件尝试修复。
九、Docker 网站重启后打不开怎么办?
如果网站通过 Docker 或 Docker Compose 部署,可以先查看容器状态:
docker ps -a
如果使用 Compose:
docker compose ps
重点观察容器是否显示:
Up
Exited
Restarting
或者其他异常状态。
如果容器没有运行,可以查看日志:
docker logs --tail 100 容器名称
如果是 Compose 项目,也可以进入项目目录后执行:
docker compose logs --tail 100
如果容器在服务器重启后没有自动启动,还需要检查 Compose 中是否配置了合适的重启策略。
例如:
restart: unless-stopped
不过不要只是增加自动重启配置。
如果容器本身因为数据库、权限或配置问题启动失败,即使设置自动重启,也只会不断进入 Restarting 状态。
十、检查 Docker 服务本身
如果所有 Docker 容器都没有运行,可以先检查 Docker 服务:
systemctl status docker --no-pager
如果 Docker 没有启动:
systemctl start docker
再检查:
docker ps -a
如果希望 Docker 服务随系统启动,可以确认:
systemctl is-enabled docker
如果显示没有启用,可以根据实际需要执行:
systemctl enable docker
十一、检查网站数据盘是否自动挂载

这是服务器重启以后比较容易被忽略的问题。
假设:
网站文件;
MySQL 数据;
Docker 数据;
用户上传文件
位于额外数据盘。
如果重启以后数据盘没有自动挂载,Nginx 或数据库就可能找不到原来的文件。
首先执行:
lsblk -f
再查看当前挂载:
findmnt
例如网站数据原本位于:
/data
可以执行:
findmnt /data
如果没有正常返回挂载信息,就需要继续检查数据盘。
同时可以检查:
cat /etc/fstab
确认开机自动挂载配置。
修改 /etc/fstab 前一定要谨慎。
配置错误可能导致服务器下次启动异常。
如果需要验证当前配置,可以在确认重要数据已备份后使用:
mount -a
如果出现报错,应先修正挂载配置。
十二、检查网站目录是否存在
如果数据盘已经挂载,可以继续检查网站目录。
例如:
ls -lah /www/wwwroot/
或者根据实际网站路径:
ls -lah /data/www/
确认:
网站目录存在;
网站文件没有丢失;
目录权限正常;
实际挂载位置正确。
如果 Nginx 配置中的网站目录不存在,也可能导致网站访问异常。
可以通过:
nginx -T
查看当前加载的 Nginx 配置。
输出内容可能较多,可以结合网站域名搜索。
例如:
nginx -T 2>&1 | grep -n "example.com"
十三、检查磁盘空间是否已满
服务器重启以后部分服务无法启动,也可能只是磁盘空间已经不足。
执行:
df -h
如果看到某个重要分区已经达到:
100%
MySQL、Docker、PHP 和其他程序都可能因为无法写入数据而启动失败。
还可以检查 inode:
df -i
如果 inode 使用率达到 100%,同样可能出现:
No space left on device
即使 df -h 看起来还有一定剩余空间。
十四、检查域名是否仍然解析到正确地址
如果直接访问服务器 IP 正常,但域名打不开,需要检查域名解析。
可以执行:
getent hosts 你的域名
确认解析结果是否与当前服务器地址一致。
如果服务器迁移、重装或产品发生变化,应以客户中心当前显示的信息为准。
如果刚刚修改 DNS,解析更新还可能需要一定时间。
十五、检查网站服务是否设置开机自启
如果已经确认某个服务每次重启服务器以后都不会自动运行,可以检查:
systemctl is-enabled nginx
如果返回:
disabled
并且确认该服务确实需要开机启动,可以执行:
systemctl enable nginx
MySQL:
systemctl enable mysql
PHP-FPM 需要根据实际版本:
systemctl enable php8.2-fpm
Docker:
systemctl enable docker
只对实际需要开机运行的服务启用自启动。
十六、快速排查表
| 问题现象 | 优先检查 | 常见原因 |
|---|---|---|
| SSH 也连接不上 | 服务器状态、SSH、网络 | 系统或网络尚未恢复 |
| 网站完全打不开 | 80/443、Nginx | Web 服务未启动 |
| 出现 502 | PHP-FPM、后端应用 | 后端服务没有启动 |
| 出现数据库错误 | MySQL / MariaDB | 数据库未启动 |
| Docker 网站打不开 | docker ps -a |
容器未恢复或启动失败 |
| 重启后网站目录消失 | lsblk、findmnt |
数据盘没有自动挂载 |
| 服务启动失败 | systemctl --failed |
配置、权限或依赖异常 |
| 本机正常公网不通 | 防火墙、安全组 | 网络入口未放行 |
| IP 能打开但域名不行 | DNS | 域名解析异常 |
| 服务经常重启后不运行 | systemctl is-enabled |
未配置开机自启 |
建议按照:
服务器状态 → failed 服务 → Web 服务 → 80/443 → PHP → 数据库 → Docker → 数据盘 → 磁盘空间 → DNS
的顺序进行排查。
十七、仍然无法解决怎么办?
如果已经完成以上检查,网站仍然无法访问,可以通过莱卡云客户中心提交工单。
建议提供:
服务器 IP;
操作系统;
问题发生时间;
网站使用 Nginx 还是 Apache;
是否使用 Docker;
具体浏览器错误;
是否出现 502、503 等状态码。
如果方便,还可以提供以下命令输出:
systemctl --failed
ss -lntp
df -h
如果运行 Docker:
docker ps -a
请不要在公开截图或聊天中提供服务器密码、数据库密码、Token、私钥等敏感信息。
总结
云服务器重启后网站打不开,并不一定是网站文件损坏。
更常见的原因包括:
Nginx 或 Apache 没有启动;
PHP-FPM 或数据库启动失败;
Docker 容器没有恢复;
80/443 端口没有监听;
数据盘没有自动挂载;
磁盘空间不足;
网站依赖服务没有配置开机自启。
建议首先执行:
systemctl --failed
检查失败服务。
然后通过:
ss -lntp | grep -E ':80|:443'
确认网站端口监听情况。
如果网站数据位于额外数据盘,还应该通过:
lsblk -f
和:
findmnt
确认数据盘已经正常挂载。
按照这个顺序逐层排查,通常可以较快定位服务器重启后网站无法访问的具体原因。