在腾讯云轻量应用服务器(Lighthouse)上部署多个站点时出现 404 Not Found 错误,通常是由 Nginx/Apache 配置冲突、域名解析未生效、目录权限问题或默认站点拦截 导致的。
以下是针对该场景的排查步骤和解决方案:
1. 检查 Nginx 配置文件(最常见原因)
轻量服务器默认使用 Nginx。如果你安装了多个站点但只配置了一个 server 块,或者配置文件顺序不对,Nginx 可能会将请求路由到错误的默认站点(通常是第一个配置的),导致找不到对应文件。
- 检查逻辑:确认每个域名的
server_name是否唯一且正确。 - 操作示例:
进入 Nginx 配置目录(通常在/etc/nginx/conf.d/或/www/server/vhost/):ls /etc/nginx/conf.d/ # 确保你的两个站点都有独立的 .conf 文件,例如 site1.conf, site2.conf -
关键配置点:
确保每个站点的root路径指向了正确的网站根目录,且没有遗漏location块。server { listen 80; server_name example.com www.example.com; # 必须包含所有域名别名 root /var/www/example/html; # 必须指向实际存在的目录 location / { try_files $uri $uri/ =404; # 如果文件不存在,返回404 } } - 测试并重载:
修改后务必测试配置并重启服务:nginx -t systemctl reload nginx
2. 验证域名解析与防火墙
如果配置完全正确,可能是网络层面的问题导致请求被丢弃或路由错误。
- DNS 解析:
登录腾讯云控制台 -> 云解析 DNS,确认你的域名 A 记录已正确指向轻量服务器的公网 IP。
注意:DNS 生效可能有延迟(TTL),如果是刚修改过,请等待几分钟或使用ping 域名验证 IP 是否正确。 - 安全组设置:
在腾讯云控制台 -> 轻量应用服务器 -> 网络与安全 -> 安全组。
确保 80 (HTTP) 和 443 (HTTPS) 端口对0.0.0.0/0开放。如果端口被拦截,浏览器可能直接显示连接超时,但在某些X_X层下也可能表现为 404。
3. 检查目录权限与索引文件
如果 Nginx 找到了文件但无法读取,或者找不到默认首页,也会报 404。
- 目录存在性:
确认root指定的目录下确实有文件(如index.html或index.php)。ls -l /var/www/example/html/ - 权限问题:
Linux 文件系统权限可能导致 Nginx 用户(通常是www-data或nginx)无法访问文件。# 推荐做法:将网站所有者改为 nginx 用户,并赋予读执行权限 chown -R www-data:www-data /var/www/example/html chmod -R 755 /var/www/example/html - Index 指令:
检查 Nginx 配置中是否有index index.html index.php;。如果你的网站入口是index.php而配置里只有index.html,访问根目录时会报 404。
4. 排查“默认站点”干扰
在轻量服务器上,首次安装环境时通常会生成一个默认的 default.conf 或 welcome 页面。
- 现象:当你访问未配置的域名时,它可能仍然匹配到了这个默认配置,而不是你的新站点配置。
- 解决:删除或注释掉
/etc/nginx/conf.d/default.conf(如果存在),或者确保你的新站点配置文件中server_name优先级更高(Nginx 通常按加载顺序,先加载的先匹配,除非指定了listen 80 default_server)。
5. PHP 伪静态问题(如果是 WordPress/ThinkPHP 等)
如果你部署的是动态网站(如 WordPress),且访问子页面报 404,通常是 伪静态规则 未生效。
- WordPress:需要进入后台“设置”->“固定链接”,点击保存一次以重写
.htaccess或 Nginx 配置。 - Nginx 配置:需要在
location /块中添加:location / { try_files $uri $uri/ /index.php?$args; }
6. 快速诊断命令
如果以上步骤仍无法解决,请执行以下命令查看具体报错日志:
# 1. 查看 Nginx 错误日志(最直观)
tail -n 50 /var/log/nginx/error.log
# 2. 查看访问日志,确认请求是否到达服务器
tail -n 50 /var/log/nginx/access.log
# 3. 检查文件是否存在
ls -la /你的网站根目录/
总结建议:
90% 的 404 问题源于 Nginx 配置文件中 root 路径写错 或 多站点配置未正确分离(共用一个 server 块)。请优先检查 /etc/nginx/conf.d/ 下的配置文件内容,确保每个域名都有独立的 server 块且 root 路径准确无误。
CLOUD云