如何在轻服务器上配置多个网站共存?

云计算

在轻量级服务器(如Nginx或Apache)上配置多个网站共存,通常称为“虚拟主机”(Virtual Hosts),是通过 基于域名的虚拟主机 实现的。以下以最常用的 Nginx 和 Apache 为例,介绍如何在同一台轻服务器上配置多个网站。


✅ 前提条件

  1. 你有一台轻服务器(如腾讯云轻量应用服务器、阿里云ECS等)
  2. 已安装 Web 服务器(Nginx 或 Apache)
  3. 拥有多个域名,并已将这些域名解析到服务器公网 IP
  4. 网站文件分别存放于不同目录

方法一:使用 Nginx 配置多站点

步骤 1:准备网站文件目录

假设你要托管两个网站:

  • site1.com/var/www/site1
  • site2.com/var/www/site2

创建目录并放入测试页面:

sudo mkdir -p /var/www/site1 /var/www/site2
echo "<h1>Site 1 - site1.com</h1>" | sudo tee /var/www/site1/index.html
echo "<h1>Site 2 - site2.com</h1>" | sudo tee /var/www/site2/index.html

步骤 2:创建 Nginx 虚拟主机配置文件

/etc/nginx/sites-available/ 目录下创建配置文件:

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

内容如下:

server {
    listen 80;
    server_name site1.com www.site1.com;

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

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

同样创建 site2.com 的配置:

sudo nano /etc/nginx/sites-available/site2.com
server {
    listen 80;
    server_name site2.com www.site2.com;

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

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

步骤 3:启用站点(创建符号链接)

将配置文件链接到 sites-enabled

sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/

步骤 4:测试并重启 Nginx

sudo nginx -t           # 测试配置是否正确
sudo systemctl reload nginx   # 重新加载配置

✅ 完成!现在访问 site1.comsite2.com 将显示不同的网站。


方法二:使用 Apache 配置多站点

步骤 1:准备网站目录(同上)

sudo mkdir -p /var/www/site1 /var/www/site2
echo "<h1>Site 1 - site1.com</h1>" | sudo tee /var/www/site1/index.html
echo "<h1>Site 2 - site2.com</h1>" | sudo tee /var/www/site2/index.html

步骤 2:创建虚拟主机配置文件

/etc/apache2/sites-available/ 下创建:

sudo nano /etc/apache2/sites-available/site1.com.conf

内容:

<VirtualHost *:80>
    ServerName site1.com
    ServerAlias www.site1.com
    DocumentRoot /var/www/site1

    <Directory /var/www/site1>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>

同理创建 site2.com.conf

sudo nano /etc/apache2/sites-available/site2.com.conf
<VirtualHost *:80>
    ServerName site2.com
    ServerAlias www.site2.com
    DocumentRoot /var/www/site2

    <Directory /var/www/site2>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/site2_error.log
    CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>

步骤 3:启用站点

sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf

步骤 4:重启 Apache

sudo systemctl restart apache2

✅ 多个网站即可通过域名访问。


🔐 可选:为每个网站配置 HTTPS(推荐)

使用 Let’s Encrypt 免费证书(需域名已正确解析):

sudo apt install certbot python3-certbot-nginx   # Nginx 版
# 或
sudo apt install certbot python3-certbot-apache  # Apache 版

# 为 site1.com 申请证书
sudo certbot --nginx -d site1.com -d www.site1.com
# 或
sudo certbot --apache -d site1.com -d www.site1.com

Certbot 会自动修改配置文件启用 HTTPS。


🧩 注意事项

  1. 防火墙开放 80/443 端口

    sudo ufw allow 'Nginx Full'   # 或 'Apache Full'
  2. DNS 解析:确保每个域名 A 记录指向服务器公网 IP。

  3. 避免端口冲突:所有站点共享 80/443 端口,靠域名区分。

  4. 默认站点:可设置一个 default_server 处理未匹配的请求。


✅ 总结

步骤 内容
1 准备不同网站的根目录
2 配置 Web 服务器虚拟主机(Nginx/Apache)
3 启用配置并重启服务
4 DNS 解析 + 可选 HTTPS

这样就能轻松实现一台轻服务器运行多个独立网站!

如果你提供具体环境(如 Ubuntu + Nginx),我可以给出完整配置示例。

未经允许不得转载:CLOUD云枢 » 如何在轻服务器上配置多个网站共存?