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

在腾讯云轻量应用服务器(Lighthouse)上部署多个站点出现 404 错误,是一个常见问题。通常不是服务器本身的问题,而是 Web 服务器(如 Nginx、Apache)的配置或站点部署路径设置不当导致的。以下是排查和解决该问题的完整指南:


🔍 一、常见原因分析

  1. Nginx/Apache 虚拟主机配置错误

    • 未正确配置 server 块(Nginx)或 VirtualHost(Apache)
    • 域名未绑定到正确的站点目录
    • 默认站点覆盖了其他站点
  2. 文件路径错误

    • 站点文件未放在配置中指定的 root 目录
    • 权限问题导致无法访问文件
  3. 未启用站点或配置未重载

    • 配置文件写好了但未启用(如 Nginx 的 sites-enabled
    • 修改配置后未重启或重载服务
  4. 域名解析或端口问题

    • 域名未正确解析到服务器 IP
    • 防火墙或安全组未开放 80/443 端口
  5. .htaccess 或 URL 重写规则冲突(尤其 PHP 框架)

    • ThinkPHP、Laravel 等框架需要正确配置 rewrite 规则

✅ 二、解决方案(以 Nginx + 多站点为例)

1. 确保站点文件路径正确

假设你要部署两个站点:

  • 站点 A:example1.com/var/www/site1
  • 站点 B:example2.com/var/www/site2

确保文件已上传到对应目录,并包含 index.htmlindex.php

ls /var/www/site1/index.html
ls /var/www/site2/index.php

2. 创建 Nginx 虚拟主机配置

进入 Nginx 配置目录:

cd /etc/nginx/sites-available

创建站点 A 的配置文件:

sudo nano example1.com

内容如下:

server {
    listen 80;
    server_name example1.com www.example1.com;

    root /var/www/site1;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
}

同理创建 example2.com 配置文件,修改 server_nameroot 路径。

3. 启用站点(创建软链接)

sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/

⚠️ 注意:删除默认站点(防止冲突):

sudo rm /etc/nginx/sites-enabled/default

4. 测试配置并重启 Nginx

sudo nginx -t        # 测试语法
sudo systemctl reload nginx
# 或
sudo systemctl restart nginx

5. 检查域名解析

确保 example1.comexample2.com 的 DNS A 记录指向你的轻量服务器公网 IP。

6. 检查安全组

登录腾讯云控制台:

  • 进入「轻量应用服务器」→ 选择实例 →「防火墙」
  • 确保放行 80 (HTTP)443 (HTTPS) 端口

🛠 三、调试 404 问题的方法

1. 检查 Nginx 错误日志

sudo tail -f /var/log/nginx/error.log

访问网站时查看是否有 file not foundpermission denied

2. 手动测试文件是否存在

curl -I http://example1.com/index.html

看是否返回 200,还是 404。

3. 检查文件权限

sudo chown -R www-data:www-data /var/www/site1
sudo chmod -R 755 /var/www/site1

4. 确认默认站点未覆盖

运行:

sudo nginx -T | grep "server_name"

查看所有已加载的 server 块,确认你的域名被正确识别。


💡 四、常见框架特殊配置

Laravel / ThinkPHP 等

需要设置 root 指向 public 目录,并配置 rewrite:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

✅ 五、总结检查清单

检查项 是否完成
域名已解析到服务器 IP ✅ / ❌
安全组开放 80/443 端口 ✅ / ❌
站点文件放在正确目录 ✅ / ❌
Nginx 配置正确(server_name, root) ✅ / ❌
配置已启用(sites-enabled) ✅ / ❌
Nginx 重载或重启 ✅ / ❌
错误日志无异常 ✅ / ❌

📞 如仍无法解决

请提供以下信息,我可以进一步帮你诊断:

  1. 你使用的 Web 服务器(Nginx/Apache)
  2. 你的配置文件内容(脱敏域名)
  3. 访问时的具体 404 是 Nginx 默认页还是自定义页?
  4. error.log 中的错误信息

希望以上内容能帮你解决多站点 404 问题!如果提供更多信息,我可以给出更精准的配置建议。

未经允许不得转载:ECLOUD博客 » 腾讯云轻量级服务器部署多个站点404?