腾讯云轻量级服务器部署多个站点404?

在腾讯云轻量应用服务器(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.htmlindex.php)。

    ls -l /var/www/example/html/
  • 权限问题
    Linux 文件系统权限可能导致 Nginx 用户(通常是 www-datanginx)无法访问文件。

    # 推荐做法:将网站所有者改为 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.confwelcome 页面。

  • 现象:当你访问未配置的域名时,它可能仍然匹配到了这个默认配置,而不是你的新站点配置。
  • 解决:删除或注释掉 /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 路径准确无误。