云服务器重启以后,SSH 可以正常连接,但网站却打不开,这类情况比服务器彻底离线更容易让人判断错。机器在线只说明操作系统和网络基本可达,并不代表 Nginx、数据库、容器和数据盘都已经恢复。
我更建议把它看成一条启动链路故障,从域名和端口开始逐层往后查。本文会讲清楚 服务器重启后网站打不开的排查顺序,以及怎样避免下次重启再次中断。

一、先判断故障停在哪一层
不要一上来就重装 Nginx。先从自己电脑测试域名和服务器:
nslookup example.com
curl -I --connect-timeout 10 https://example.com
再登录服务器检查时间、地址和监听端口:
uptime
ip addr
sudo ss -lntp
域名解析到了旧 IP,问题在 DNS;80、443 没有监听,问题多半在 Web 服务;端口存在但返回 502,通常还要继续检查 PHP、Node.js、Java 或其他后端应用。
二、检查Nginx或Apache是否启动
Nginx 可以这样检查:
sudo systemctl status nginx --no-pager -l
sudo journalctl -u nginx -b --no-pager -n 100
sudo nginx -t
Apache 在 Ubuntu 上的服务名多为 apache2,在 Rocky Linux、AlmaLinux 上常见为 httpd:
sudo systemctl status apache2 --no-pager -l
sudo systemctl status httpd --no-pager -l
inactive 可能只是服务没有设置开机启动;failed 则需要看日志。配置语法错误、证书文件路径失效、端口被其他程序占用,都可能让 Web 服务在重启后启动失败。
确认配置没问题后再启动并设置自启:
sudo systemctl enable --now nginx
三、别漏掉PHP、数据库和应用进程
Nginx 正常不等于网站完整。WordPress 常依赖 PHP-FPM 和 MySQL,反向代理站点还依赖后端应用。可以先列出失败服务:
systemctl --failed
再按实际环境检查:
systemctl status php8.3-fpm --no-pager
systemctl status mysql --no-pager
systemctl status mariadb --no-pager
PHP-FPM 的版本号可能不同,应通过 systemctl list-unit-files | grep fpm 查实际服务名。看到 Nginx 返回 502 时,重点检查后端是否监听在配置指定的 Socket 或端口,不要反复重启 Nginx。
四、Docker网站要检查重启策略和挂载
容器部署的网站先运行:
docker ps -a
docker compose ps
docker logs --tail 100 容器名
容器停在 Exited,可能没有设置重启策略,也可能启动后因为数据库、配置文件或挂载路径缺失再次退出。restart: always 和 restart: unless-stopped 能控制自动启动,但不能修复容器内部的应用错误。
如果 Compose 文件位于数据盘,还要先确认数据盘已经挂载。否则 Docker 可能在空目录上创建新文件,表面上容器启动了,实际使用的却不是原来的数据。
五、检查数据盘和fstab
网站文件或数据库放在独立云硬盘时,重启后挂载失败是一个高频原因:
lsblk -f
findmnt
df -hT
sudo systemctl --failed
对照 /etc/fstab 的 UUID:
sudo blkid
sudo cat /etc/fstab
设备名从 /dev/vdb 变成别的名称、UUID 写错、网络存储尚未就绪,都可能导致挂载失败。修改 fstab 前先备份,并用下面的命令测试:
sudo mount -a
命令有报错时不要继续重启。先修正挂载项,确认网站目录和数据库目录里的内容与权限都正确。
六、端口监听了,外部仍打不开怎么办
先从服务器本机访问服务:
curl -I http://127.0.0.1
curl -Ik https://127.0.0.1
本机正常、外部失败时,再检查系统防火墙、云平台安全规则和公网 IP。Ubuntu 常用 ufw status verbose,使用 firewalld 的系统可以运行 firewall-cmd --list-all。
如果重启同时伴随实例重建或公网 IP 释放,DNS 可能仍指向旧地址。此时应该核对实际公网 IP,而不是只清浏览器缓存。
七、建立一份重启后的验收清单
每次维护重启后,我会依次确认:
- 数据盘已经挂载,磁盘空间正常。
- Web、数据库、PHP或应用服务均为
active。 - 80、443和后端端口按预期监听。
- 本机访问、域名访问和关键业务页面均正常。
- systemd 与应用日志没有持续新增错误。
这份清单比只确认首页能打开更可靠。首页可能来自 CDN 缓存,而登录、下单、上传和后台任务仍然失败。
八、怎样避免下次重启再次中断
先为关键服务设置正确的开机启动,再处理服务之间的依赖。数据库和数据盘未就绪前,应用不应盲目启动;容器环境则要保存 Compose 文件、环境变量和挂载说明。
另外,正式网站需要可用的备份与监控。重启之前记录当前配置,重启之后做业务验收,才能把一次人工排查变成可重复的维护流程。
常见问题
问:SSH正常,为什么网站还是打不开?
答:SSH和网站是不同服务。Web服务、数据库、应用或数据盘任一环节未恢复,都可能导致网站不可用。
问:Nginx显示active,但网站返回502怎么办?
答:继续检查PHP-FPM或反向代理后端的进程、Socket和端口,502通常不是Nginx自身未启动。
问:设置systemctl enable后就一定能自动恢复吗?
答:不能。服务配置错误、依赖未就绪或数据盘未挂载时,自启仍会失败。
问:是否应该直接重启第二次?
答:先查看本次启动日志和失败服务。反复重启可能让关键错误被后续日志覆盖。


