加油
努力

使用Nginx在腾讯云轻量服务器上如何实现多站点部署?

在腾讯云轻量应用服务器(Lighthouse)上使用 Nginx 实现多站点部署,是常见且高效的方案。以下是完整、安全、可落地的操作指南,适用于 Ubuntu/Debian 或 CentOS 系统(以 Ubuntu 22.04 为例,命令兼容性高):


✅ 一、前提准备

  1. 确认服务器环境

    • 腾讯云轻量服务器已创建,系统为 Ubuntu 22.04 / CentOS 7+(本文以 Ubuntu 为例)
    • 已绑定弹性公网 IP,并确保安全组开放端口:80(HTTP)、443(HTTPS,推荐后续配置)、22(SSH)
    • 域名已解析到该服务器公网 IP(如 site1.comsite2.com
  2. 更新系统 & 安装 Nginx

    sudo apt update && sudo apt upgrade -y
    sudo apt install nginx -y
    sudo systemctl enable nginx && sudo systemctl start nginx
    sudo ufw allow 'Nginx Full'  # 若启用 UFW 防火墙

✅ 二、多站点部署核心思路(基于 Server Name 虚拟主机)

Nginx 通过 server { ... } 块 + server_name 区分不同域名,每个站点独立配置(推荐「一个域名一个配置文件」方式,便于维护)。

📁 目录结构建议(标准化、易管理)

/etc/nginx/
├── sites-available/    # 存放所有站点配置(未启用)
│   ├── site1.com
│   ├── site2.com
│   └── default         # (可选)默认 fallback 站点
├── sites-enabled/      # 符号链接指向 sites-available 中启用的站点
├── nginx.conf          # 主配置(不建议直接改此处)

💡 注:Ubuntu 默认已含此结构;若无 sites-available/sites-enabled,手动创建:

sudo mkdir -p /etc/nginx/{sites-available,sites-enabled}
echo "include /etc/nginx/sites-enabled/*;" | sudo tee -a /etc/nginx/nginx.conf

✅ 三、部署第一个站点(以 site1.com 为例)

1️⃣ 创建网站根目录 & 示例页面

sudo mkdir -p /var/www/site1.com/html
sudo chown -R $USER:$USER /var/www/site1.com/html
sudo chmod -R 755 /var/www

# 写入测试页
cat > /var/www/site1.com/html/index.html << 'EOF'
<!DOCTYPE html>
<html><body><h1>Welcome to site1.com!</h1></body></html>
EOF

2️⃣ 创建 Nginx 配置文件

sudo nano /etc/nginx/sites-available/site1.com

内容如下(支持 HTTP + 强制 HTTPS 重定向,预留 SSL 配置位):

# /etc/nginx/sites-available/site1.com
server {
    listen 80;
    server_name site1.com www.site1.com;

    # 强制跳转 HTTPS(上线后启用,暂注释)
    # return 301 https://$server_name$request_uri;

    root /var/www/site1.com/html;
    index index.html index.htm;

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

    # 可选:禁止访问敏感文件
    location ~ /.ht {
        deny all;
    }
}

3️⃣ 启用站点

sudo ln -sf /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo nginx -t  # ✅ 检查语法(必须成功!)
sudo systemctl reload nginx

✅ 浏览器访问 http://site1.com 应看到欢迎页。


✅ 四、添加第二个站点(site2.com

重复类似步骤(替换域名和路径):

sudo mkdir -p /var/www/site2.com/html
echo "<h1>Welcome to site2.com!</h1>" | sudo tee /var/www/site2.com/html/index.html

sudo nano /etc/nginx/sites-available/site2.com

配置文件内容(仅 server_nameroot 不同):

server {
    listen 80;
    server_name site2.com www.site2.com;
    root /var/www/site2.com/html;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

启用:

sudo ln -sf /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

✅ 访问 http://site2.com 验证。


✅ 五、【强烈推荐】配置 HTTPS(Let’s Encrypt + Certbot)

⚠️ 腾讯云轻量服务器需确保:

  • 域名已正确解析到服务器 IP(ping 通)
  • 安全组放行 443 端口
  • 80 端口临时开放(Certbot 验证需要)

安装 Certbot 并申请证书(自动配置 HTTPS):

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com

✅ 执行后 Certbot 会:

  • 自动申请 Let’s Encrypt 免费证书
  • 修改 Nginx 配置,添加 listen 443 ssl
  • 自动配置 HTTP → HTTPS 重定向(✅ 推荐启用!)
  • 设置自动续期(systemd timer 已配置)

🔁 续期检查(无需手动操作):

sudo certbot renew --dry-run  # 测试续期

✅ 六、进阶优化建议

场景 方案
静态资源缓存 location 中添加:
expires 1y; add_header Cache-Control "public, immutable";
防盗链 valid_referers none blocked *.yourdomain.com; if ($invalid_referer) { return 403; }
日志分离 access_log /var/log/nginx/site1.com.access.log; error_log /var/log/nginx/site1.com.error.log;
PHP 支持(如 WordPress) 安装 php-fpm,在 location ~ .php$ 块中配置 fastcgi_pass unix:/run/php/php8.1-fpm.sock;
反向X_X(如 Node.js 应用) location / { proxy_pass http://127.0.0.1:3000; proxy_set_header ... }

✅ 七、故障排查清单

现象 检查点
❌ 访问显示 Nginx 默认页 sudo rm /etc/nginx/sites-enabled/default,确认你的配置已启用且 server_name 匹配请求头
❌ 502 Bad Gateway 后端服务(如 PHP/Node)未运行,或 proxy_pass 地址错误
❌ 403 Forbidden root 路径权限不对(ls -ld /var/www/site1.com/html),确保 www-data 可读;或 index 文件不存在
❌ HTTPS 不生效 sudo nginx -t 看是否报错;检查 listen 443 ssl 是否存在;证书路径是否正确(ssl_certificate
❌ 域名解析失败 ping site1.comdig site1.com +short 确认 DNS 解析到服务器 IP

✅ 总结:关键命令速查

# 启用新站点
sudo ln -sf /etc/nginx/sites-available/my-site.com /etc/nginx/sites-enabled/
# 测试 & 重载
sudo nginx -t && sudo systemctl reload nginx
# 查看日志(实时)
sudo tail -f /var/log/nginx/error.log
# 申请/续期证书
sudo certbot --nginx -d example.com
sudo certbot renew

如需我为你:

  • ✨ 生成完整的 site1.com / site2.com 配置模板(含 HTTPS、缓存、防盗链)
  • 🐧 提供 CentOS 7/8 的对应命令
  • 🐳 配合 Docker 多站点部署方案
  • 🌐 配置泛域名(*.example.com)或子目录多站(example.com/blog

欢迎随时告诉我,我可以立刻为你定制 👇

祝你部署顺利,站点稳定飞升!🚀

云服务器