使用莱卡云Linux服务器部署网站后,如果出现网页无法访问、连接超时、证书错误或502提示,可以按照“域名解析、服务监听、访问规则、网站响应、应用日志”的顺序排查。
网站访问涉及多个环节。SSH能够登录服务器,并不代表网站服务一定正常;浏览器出现错误页面,也不一定表示服务器已经宕机。
本文以Linux终端和Nginx为例。命令中的example.com、203.0.113.10和2001:db8::10均为演示内容,请替换为实际域名和服务器地址。
1. 先确认网站出现了什么错误
记录浏览器中的完整错误提示,并确认故障影响范围。
| 现象 | 优先检查方向 |
|---|---|
| 提示找不到域名或无法解析地址 | 域名状态、DNS记录和本地解析 |
| 页面一直等待,最后连接超时 | 网络路径、监听端口、安全组和防火墙 |
| 提示连接被拒绝 | 网站服务是否启动、目标端口是否监听 |
| 提示证书过期或域名不匹配 | HTTPS证书、站点配置和设备时间 |
| 出现403、404、500、502等页面 | 站点配置、访问规则、后端应用和日志 |
| 打开了默认页或其他网站 | 域名绑定、虚拟主机和实际访问地址 |
| 只有部分用户无法访问 | IPv4与IPv6、DNS缓存、CDN节点及用户网络 |
同时确认:
-
是所有页面都无法访问,还是某个路径异常。
-
HTTP和HTTPS是否表现一致。
-
是否刚修改过解析、证书、反向代理或程序配置。
-
手机移动网络与电脑宽带是否都存在问题。
这些信息可以帮助缩小排查范围。
2. 检查域名解析是否正确

优先在出现问题的客户端网络中查询解析。
查看IPv4记录:
dig example.com A +noall +answer
查看IPv6记录:
dig example.com AAAA +noall +answer
如果访问的是www等子域名,也需要检查对应名称:
dig www.example.com A +noall +answer
dig www.example.com AAAA +noall +answer
dig www.example.com CNAME +noall +answer
没有安装dig时,Debian、Ubuntu通常可以安装dnsutils,RHEL系列通常安装bind-utils。
重点核对以下情况:
| 检查项目 | 需要确认的内容 |
|---|---|
| A记录 | 是否指向预期IPv4地址 |
| AAAA记录 | 是否指向实际可用的IPv6地址 |
| CNAME记录 | 目标名称是否正确、能否继续解析 |
| 根域名与子域名 | 实际访问的名称是否配置了记录 |
| CDN代理 | 解析结果是否符合CDN接入方式 |
接入CDN后,域名可能解析到CDN边缘节点,而不是源站IP,这是正常现象。
如果配置了AAAA记录,但服务器没有可用的IPv6网站服务,部分访问可能失败。应修复IPv6链路和监听配置,或移除已经确认无效的AAAA记录。
没有配置AAAA记录的纯IPv4网站,也可以正常工作。
如果简洁查询没有返回内容,可以执行完整查询:
dig example.com A
结合返回状态判断是没有对应记录,还是解析服务发生错误。修改解析后,应考虑原记录TTL和缓存影响,不要反复改动正确记录。
3. 检查Nginx服务和监听端口

以下命令在服务器内执行。
对于通过系统服务管理的Nginx,先查看状态:
sudo systemctl status nginx --no-pager -l
检查配置:
sudo nginx -t
检查通过,说明本次配置语法及引用文件检查通过,并不代表网站内容、后端服务和网络访问全部正常。
查看80和443端口:
sudo ss -lntp '( sport = :80 or sport = :443 )'
只需要查看监听地址和端口时:
sudo ss -lnt '( sport = :80 or sport = :443 )'
常见结果:
| 监听地址 | 含义 |
|---|---|
| 0.0.0.0:80 | 在所有本机IPv4地址上监听HTTP端口 |
| 0.0.0.0:443 | 在所有本机IPv4地址上监听HTTPS端口 |
| 127.0.0.1:端口 | 仅供本机访问 |
| [::]:端口 | IPv6通配监听,IPv4是否同时可用需实际验证 |
如果网站使用自定义端口,需要查询实际端口。
使用宝塔面板、OpenResty或Docker部署时,应检查对应程序和配置,避免误查到服务器中的另一套Nginx。
Docker端口发布可能通过NAT规则实现,不能仅凭宿主机ss没有显示监听,就判断容器端口没有开放,还需要结合第8节检查。
4. 检查安全组和系统防火墙
如果网站服务正常,但外部连接超时,应继续核对网络访问规则。
如果实例提供安全组或平台防火墙功能,检查规则是否应用到了正确实例,并允许实际需要的TCP端口。
常见端口用途:
| 端口 | 用途 |
|---|---|
| TCP 80 | HTTP访问,以及部分HTTP跳转或验证场景 |
| TCP 443 | HTTPS访问 |
| 自定义TCP端口 | 按网站实际配置使用 |
使用UFW的服务器可以执行:
sudo ufw status verbose
sudo ufw status numbered
如果网站计划直接面向公网开放,并确认缺少对应规则,可以按实际需要添加:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
使用firewalld时,先确认实际区域:
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=public --list-all
public为示例,应替换为入口网卡或来源地址实际对应的区域。
确认需要放行标准HTTP和HTTPS服务后,可以添加运行时规则:
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=public --add-service=https
验证正常后,将相同命令增加--permanent参数执行,保存永久规则。
如果源站只允许CDN回源或指定管理地址访问,应保留这种访问策略,按可信来源调整规则。排查时不需要清空全部防火墙配置。
5. 使用curl检查网站和源站响应

在客户端Linux终端中,先按正常域名访问网站:
curl --noproxy '*' -sS --connect-timeout 5 --max-time 15 \
-o /dev/null -D - https://example.com/
该命令发送GET请求,显示响应头,并丢弃响应正文。--noproxy '*'表示本次测试直接连接,不使用curl代理。
重点查看HTTP状态码,以及是否出现连接、解析或证书错误。
如果网站使用CDN,可以保留域名,同时指定源站IP进行对照测试:
curl --noproxy '*' -sS --connect-timeout 5 --max-time 15 \
--resolve example.com:443:203.0.113.10 \
-o /dev/null -D - https://example.com/
--resolve只为本次请求指定连接地址,URL仍然使用域名,因此能够保留正确的站点名称和HTTPS证书校验目标。
直接访问https://服务器IP可能命中其他站点,或因证书不包含IP而报错,不适合直接代替域名测试。
对照结果时,可以参考:
| 测试结果 | 下一步 |
|---|---|
| 正常域名访问失败,源站测试正常 | 继续检查DNS、CDN、WAF和回源配置 |
| 两种方式都连接失败 | 检查源站监听、访问规则和网络路径 |
| 已返回HTTP错误页面 | 检查对应请求日志和应用状态 |
| 返回200,但浏览器仍打不开 | 检查页面内容、接口、静态资源和浏览器报错 |
源站如果只允许CDN访问,或者使用专门的源站证书,普通客户端直连失败可能符合既定策略。应在允许的测试环境中验证,不能直接认定源站故障。
6. HTTPS证书错误怎么排查?
如果HTTP可以访问,而HTTPS提示证书错误,重点检查:
-
证书是否在有效期内。
-
证书是否包含实际访问的域名。
-
example.com与www.example.com是否都已覆盖。 -
服务端是否发送了完整的中间证书链。
-
Nginx是否加载了正确站点的证书。
-
客户端系统时间是否准确。
-
使用CDN时,边缘证书与源站证书是否分别配置正确。
可以在客户端查看详细握手信息:
curl -v --connect-timeout 5 --max-time 15 \
-o /dev/null https://example.com/
根据具体错误检查证书、域名和信任链。
如果证书刚刚续期,还需要确认网站服务已经加载新证书。仅替换磁盘上的证书文件,不一定会立即改变正在运行的服务所使用的证书。
修复后应在正常证书校验开启的情况下重新测试,不能以跳过证书验证作为恢复完成的依据。
7. 根据HTTP状态码检查日志
收到HTTP错误页面,说明某个HTTP服务已经响应了请求,但响应可能来自源站、CDN、WAF或其他代理。
| 状态码 | 常见排查方向 |
|---|---|
| 403 | 访问规则、文件权限、目录索引、WAF限制 |
| 404 | 请求路径、站点目录、程序路由和伪静态配置 |
| 500 | 应用内部错误、依赖异常或程序配置问题 |
| 502 | 代理与上游通信失败或上游响应异常 |
| 503 | 服务暂时不可用、维护或过载 |
| 504 | 代理等待上游响应超时 |
日志路径以实际站点的access_log和error_log配置为准。系统包安装的Nginx常见检查方式为:
sudo tail -n 80 /var/log/nginx/error.log
sudo tail -n 80 /var/log/nginx/access.log
使用宝塔面板时,可以从对应网站的日志入口查看;使用容器时,还应检查容器日志。
排查时记录访问时间、请求域名、路径和状态码,再对照日志中的同一次请求。
如果源站访问日志中没有记录,先确认请求是否命中了正确站点,以及日志是否启用。CDN缓存直接响应的请求,也可能不会到达源站。
8. 检查反向代理和Docker应用
出现502或504时,继续检查Nginx后面的应用是否正常。
如果后端是监听本机8080端口的HTTP服务,可以在服务器内测试:
curl -sS --connect-timeout 5 --max-time 10 \
-H 'Host: example.com' \
-o /dev/null -D - http://127.0.0.1:8080/
请替换为实际上游地址、端口和请求路径。
该方法适用于HTTP上游。PHP-FPM使用的FastCGI端口或Unix套接字,不能直接当作HTTP接口测试,应检查对应服务、套接字路径和访问权限。
Docker部署可以执行:
docker ps -a --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
查看目标容器的端口映射和近期日志:
docker port web
docker logs --since 10m --tail 100 web
其中web需要替换为实际容器名称。
重点检查:
-
容器是否退出或反复重启。
-
宿主机端口与容器端口是否对应。
-
应用是否监听了容器中可访问的地址。
-
Nginx配置的上游地址是否正确。
-
两个容器是否处于能够互通的网络中。
在普通bridge网络部署中,Nginx容器里的127.0.0.1指向该容器自身。如果应用运行在另一个容器中,通常应使用共同网络中的服务名或容器名及实际端口。
仅发布到127.0.0.1的后端端口,可用于宿主机反向代理,无需为了排查而把后端或数据库直接开放到公网。
9. 修改配置前后如何避免扩大故障?
修改前,备份实际需要调整的站点配置,并保留当前错误日志。
确认问题来源后,每次只修改相关项目,例如:
-
修正错误的解析记录。
-
修复不正确的
server_name。 -
调整错误的站点目录或上游地址。
-
更新证书和证书链。
-
恢复异常应用或修复依赖。
对于由systemd管理、且正在运行的Nginx,配置修改后可以执行:
sudo nginx -t && sudo systemctl reload nginx
只有检查通过,才会执行后续重新加载。
如果Nginx没有运行,应在检查通过、端口没有冲突后启动服务。宝塔和容器环境应使用对应的管理方式,并保证检查与加载的是同一套配置。
同时留意资源问题:
df -h
df -i
free -h
磁盘空间不足、inode耗尽或内存紧张,都可能导致日志写入、临时文件、数据库或应用运行异常。
10. 网站恢复后如何验证?
从原先出现问题的网络重新访问网站,并检查:
-
根域名和实际使用的子域名是否正常。
-
HTTP到HTTPS的跳转是否符合预期。
-
HTTPS证书是否有效且域名匹配。
-
首页、关键页面、接口和静态资源是否正常。
-
已发布AAAA记录时,IPv6访问是否正常。
-
应用和网站日志是否继续出现同类错误。
-
使用CDN时,源站与边缘访问是否都恢复正常。
如果页面返回200但显示空白,应继续查看浏览器开发者工具中的网络请求和控制台错误,检查接口失败、脚本加载及资源路径。
需要提交莱卡云技术支持工单时,建议提供故障时间及所在时区、访问域名和路径、完整错误提示、是否使用CDN,以及解析、监听和相关日志结果。
提交前请遮盖密码、令牌、Cookie及其他敏感业务信息。