在腾讯云轻量应用服务器(Lighthouse)上配置多个网站共用一个 IP 地址,核心原理是利用 Nginx 或 Apache 的 虚拟主机(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.com 和 site2.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_name 和 root 路径:
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 ok 和 test is successful,则重启 Nginx:
sudo systemctl restart nginx
6. 防火墙与安全组配置
腾讯云轻量服务器自带防火墙规则,同时操作系统内部也有防火墙。
-
腾讯云控制台:
- 登录腾讯云控制台,找到你的轻量应用服务器实例。
- 点击“安全组”标签。
- 确保入方向规则允许 TCP 80 (HTTP) 和 TCP 443 (HTTPS) 端口开放。如果是生产环境,建议限制源 IP 或仅开放必要端口。
-
系统内部防火墙:
- Ubuntu (UFW):
sudo ufw allow 80/tcp - CentOS (Firewalld):
sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload
- Ubuntu (UFW):
7. 验证与 HTTPS(可选但推荐)
打开浏览器,分别访问 www.site1.com 和 www.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云枢