加油
努力

在腾讯云轻量服务器上怎么配置多个网站共用一个IP地址?

在腾讯云轻量应用服务器(Lighthouse)上实现多个网站共用一个 IP 地址,本质是通过 基于域名的虚拟主机(Name-based Virtual Host) 实现,核心依赖 Web 服务器(如 Nginx 或 Apache)根据 HTTP 请求头中的 Host 字段来区分不同站点。以下是完整、安全、可落地的配置步骤(以主流 Nginx 为例,适用于 Ubuntu/Debian/CentOS 系统):


✅ 前提条件

  1. 你已有一台腾讯云轻量服务器(已分配公网 IP);
  2. 已备案(中国大陆境内访问的网站必须完成工信部备案,否则域名无法解析到国内服务器);
  3. 多个域名均已正确解析到该服务器的公网 IP(A 记录);
  4. 已安装并运行 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):

  1. 创建配置文件:

    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;
    }
}
  1. 启用站点(创建软链接):

    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/
  2. 禁用默认站点(避免冲突)

    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.comhttp://site2.com 应显示各自首页(需确保 DNS 已生效,可 ping site1.com 测试)。


🔐 步骤四(强烈推荐):为每个站点配置 HTTPS(SSL)

使用免费 Let’s Encrypt 证书(Certbot):

  1. 安装 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 重定向(安全最佳实践)。

  1. 自动续期(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 查看响应头中 ServerHost 是否匹配
  • 检查 Nginx 错误日志:sudo tail -f /var/log/nginx/error.log

需要我为你生成:

  • ✅ 完整的 Nginx 多站点配置模板(含 PHP 支持)?
  • ✅ WordPress 专用配置(含伪静态 rewrite)?
  • ✅ 自动化部署脚本(一键添加新站点)?
  • ✅ 故障排查清单(常见 404/502/证书错误)?

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

云服务器