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

在腾讯云轻量应用服务器(Lighthouse)上配置多个网站共用一个 IP 地址,核心原理是利用 NginxApache虚拟主机(Virtual Host) 功能,通过 域名绑定(Server Name) 来区分不同的站点。

由于轻量服务器通常只有一个公网 IP,所有站点的流量都汇聚到这个 IP 上,Web 服务器需要依靠客户端请求中的 Host 头字段来判断用户访问的是哪个域名,从而将请求路由到对应的网站目录。

以下是基于主流 Linux 发行版(如 Ubuntu/CentOS)和 Nginx 的具体实施步骤:

1. 前置准备:域名解析

在配置服务器之前,必须确保你的域名已经正确指向了该轻量服务器的公网 IP。

  • 登录你的域名注册商控制台。
  • 为每个需要部署的网站添加一条 A 记录
    • 例如:www.site1.com -> <你的轻量服务器 IP>
    • 例如:www.site2.com -> <你的轻量服务器 IP>
  • 等待 DNS 生效(通常需要几分钟到几小时)。

2. 安装 Web 服务软件

轻量服务器默认可能未安装 Nginx 或 Apache。推荐使用 Nginx,因其性能更好且配置更直观。

以 Ubuntu 为例:

sudo apt update
sudo apt install nginx -y

以 CentOS 为例:

sudo yum install nginx -y
# 或
sudo dnf install nginx -y

启动并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

3. 创建网站目录结构

为了管理方便,建议为每个网站创建独立的目录。假设我们要部署两个网站:site1.comsite2.com

# 创建目录
sudo mkdir -p /var/www/site1/html
sudo mkdir -p /var/www/site2/html

# 创建简单的测试页面
echo "<h1>Welcome to Site 1</h1>" | sudo tee /var/www/site1/html/index.html
echo "<h1>Welcome to Site 2</h1>" | sudo tee /var/www/site2/html/index.html

# 修正权限(确保 www-data 或 nginx 用户可读取)
# Ubuntu 默认用户通常是 www-data
sudo chown -R www-data:www-data /var/www/site1/html
sudo chown -R www-data:www-data /var/www/site2/html

(注:CentOS 下用户可能是 apache 或 nginx,请根据实际情况调整)

4. 配置 Nginx 虚拟主机

这是最关键的一步。我们需要修改 Nginx 的配置文件,定义不同域名对应的根目录。

方法 A:使用默认配置(推荐新手)

进入 Nginx 配置目录:

cd /etc/nginx/sites-available/

复制默认模板作为新站点的配置(这里以 site1 为例):

sudo cp default site1.conf
sudo nano site1.conf

编辑内容如下(注意替换域名和路径):

server {
    listen 80;
    server_name www.site1.com site1.com; # 填写你的第一个域名

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

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

保存退出后,再创建一个 site2.conf,内容类似,只需修改 server_nameroot 路径:

server {
    listen 80;
    server_name www.site2.com site2.com; # 填写你的第二个域名

    root /var/www/site2/html;
    index index.html index.htm;

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

方法 B:集中管理(进阶)

如果你习惯将所有配置放在主配置文件中,可以直接编辑 /etc/nginx/nginx.conf 或在 conf.d/ 目录下新建文件。只要确保每个 server 块中的 listen 80; 相同,但 server_name 唯一即可。

5. 启用配置并重启服务

如果使用的是 sites-available 模式,需要先软链接到 sites-enabled

# 创建符号链接
sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/

# 移除默认的旧配置(避免冲突,可选)
sudo rm /etc/nginx/sites-enabled/default

检查配置语法是否正确:

sudo nginx -t

如果显示 syntax is oktest is successful,则重启 Nginx:

sudo systemctl restart nginx

6. 防火墙与安全组配置

腾讯云轻量服务器自带防火墙规则,同时操作系统内部也有防火墙。

  1. 腾讯云控制台

    • 登录腾讯云控制台,找到你的轻量应用服务器实例。
    • 点击“安全组”标签。
    • 确保入方向规则允许 TCP 80 (HTTP) 和 TCP 443 (HTTPS) 端口开放。如果是生产环境,建议限制源 IP 或仅开放必要端口。
  2. 系统内部防火墙

    • Ubuntu (UFW): sudo ufw allow 80/tcp
    • CentOS (Firewalld): sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload

7. 验证与 HTTPS(可选但推荐)

打开浏览器,分别访问 www.site1.comwww.site2.com,应该能看到各自对应的欢迎页面。

关于 HTTPS:
虽然问题只问了多网站共存,但在实际生产中,强烈建议配置 SSL 证书。你可以使用 Certbot 自动申请 Let’s Encrypt 免费证书。

# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y

# 为所有域名一次性申请
sudo certbot --nginx -d www.site1.com -d site1.com -d www.site2.com -d site2.com

Certbot 会自动修改你的 Nginx 配置,将 HTTP 强制跳转至 HTTPS,并自动续期。

总结

在同一个 IP 上托管多个网站,关键在于 DNS 解析的一致性Nginx 虚拟主机配置的准确性。只要 server_name 配置无误,Nginx 就能根据请求头精准分发流量。这种方案成本低、效率高,是轻量服务器最常见的部署架构。

未经允许不得转载:CLOUD云枢 » 在腾讯云轻量服务器上怎么配置多个网站共用一个IP地址?