在腾讯云轻量应用服务器(Lighthouse)上实现多个网站共用一个 IP 地址,本质是通过 基于域名的虚拟主机(Name-based Virtual Host) 实现,核心依赖 Web 服务器(如 Nginx 或 Apache)根据 HTTP 请求头中的 Host 字段来区分不同站点。以下是完整、安全、可落地的配置步骤(以主流 Nginx 为例,适用于 Ubuntu/Debian/CentOS 系统):
✅ 前提条件
- 你已有一台腾讯云轻量服务器(已分配公网 IP);
- 已备案(中国大陆境内访问的网站必须完成工信部备案,否则域名无法解析到国内服务器);
- 多个域名均已正确解析到该服务器的公网 IP(A 记录);
- 已安装并运行 Nginx(推荐使用腾讯云镜像或官方源安装)。
🔔 提示:轻量服务器默认不开放全部端口,请确保 80(HTTP)和 443(HTTPS)端口已在腾讯云控制台「防火墙」中放行(轻量服务器的「应用管理」→「防火墙」规则中添加)。
🛠 步骤一:准备网站文件目录
为每个网站创建独立根目录(推荐结构):
sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html
# 示例首页(测试用)
echo "<h1>Welcome to site1.com</h1>" | sudo tee /var/www/site1.com/html/index.html
echo "<h1>Welcome to site2.com</h1>" | sudo tee /var/www/site2.com/html/index.html
# 设置权限(Nginx 用户通常为 www-data 或 nginx)
sudo chown -R $USER:www-data /var/www/site1.com /var/www/site2.com
sudo chmod -R 755 /var/www
🛠 步骤二:配置 Nginx 虚拟主机(Server Blocks)
⚠️ 注意:轻量服务器默认 Nginx 配置路径通常为
/etc/nginx/sites-available/(Ubuntu/Debian)或/etc/nginx/conf.d/(CentOS),请先确认你的系统类型。
✅ 方法 A(推荐,Ubuntu/Debian):
-
创建配置文件:
sudo nano /etc/nginx/sites-available/site1.com内容如下:
server { listen 80; server_name site1.com www.site1.com; root /var/www/site1.com/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } # 可选:强制 HTTPS(后续配置 SSL 后启用) # return 301 https://$server_name$request_uri; }
同理创建 /etc/nginx/sites-available/site2.com:
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
-
启用站点(创建软链接):
sudo ln -sf /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/ sudo ln -sf /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/ -
禁用默认站点(避免冲突):
sudo rm -f /etc/nginx/sites-enabled/default
✅ 方法 B(CentOS/RHEL):
直接在 /etc/nginx/conf.d/ 下创建:
sudo nano /etc/nginx/conf.d/site1.com.conf
sudo nano /etc/nginx/conf.d/site2.com.conf
内容与上面 server{} 块一致即可(无需软链接,conf.d 下 .conf 文件会自动加载)。
🛠 步骤三:语法检查 & 重载 Nginx
sudo nginx -t # 检查配置语法是否正确
# ✅ 输出 "syntax is ok" 和 "test is successful" 即成功
sudo systemctl reload nginx # 平滑重载(不中断服务)
# 或:sudo nginx -s reload
✅ 此时访问 http://site1.com 和 http://site2.com 应显示各自首页(需确保 DNS 已生效,可 ping site1.com 测试)。
🔐 步骤四(强烈推荐):为每个站点配置 HTTPS(SSL)
使用免费 Let’s Encrypt 证书(Certbot):
- 安装 Certbot:
# Ubuntu/Debian sudo apt update && sudo apt install certbot python3-certbot-nginx -y
CentOS 8+/Stream
sudo dnf install epel-release -y
sudo dnf install certbot python3-certbot-nginx -y
2. 为每个域名申请并自动配置 HTTPS:
```bash
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com
👉 Certbot 会自动修改 Nginx 配置,添加 443 监听、SSL 证书路径,并自动设置 HTTP → HTTPS 重定向(安全最佳实践)。
- 自动续期(Certbot 已配置 systemd timer,无需额外操作):
sudo certbot renew --dry-run # 测试续期
🧩 补充说明 & 注意事项
| 项目 | 说明 |
|---|---|
| 端口限制 | 轻量服务器默认仅开放 22/80/443/3389 等常用端口;若需其他端口(如 8080),需在控制台防火墙手动添加。 |
| 备案要求 | 所有面向中国大陆用户访问的域名(.cn 或通用顶级域)必须完成腾讯云备案,否则运营商会拦截访问。 |
| Web 服务器选择 | 若用 Apache:启用 a2ensite + mod_rewrite,原理类似(基于 ServerName)。 |
| 静态 vs 动态网站 | 上述配置支持静态站;如需 PHP(如 WordPress),需安装 PHP-FPM 并在 location ~ .php$ 中配置 fastcgi_pass。 |
| 日志分离 | 可在每个 server{} 块中添加:access_log /var/log/nginx/site1.com.access.log;error_log /var/log/nginx/site1.com.error.log; |
✅ 验证是否成功?
- 在浏览器访问
http://site1.com→ 显示 site1 首页 - 访问
https://site2.com→ 显示 site2 首页且地址栏有锁图标 - 使用
curl -I http://site1.com查看响应头中Server和Host是否匹配 - 检查 Nginx 错误日志:
sudo tail -f /var/log/nginx/error.log
需要我为你生成:
- ✅ 完整的 Nginx 多站点配置模板(含 PHP 支持)?
- ✅ WordPress 专用配置(含伪静态 rewrite)?
- ✅ 自动化部署脚本(一键添加新站点)?
- ✅ 故障排查清单(常见 404/502/证书错误)?
欢迎随时告诉我,我可以立即为你定制 👇
云小栈