Skip to content

配置 Nginx 虚拟主机

如果你只有一个域名,但想在同一台服务器上运行多个站点,可以通过子路径或子域名的方式来配置多个站点。以下是两种常见方法:

方法 1:使用子路径

如果你希望通过 http://example.com/site-ahttp://example.com/site-b 访问不同的站点,可以按以下方式配置:

1、编辑 Nginx 配置文件

在 Nginx 的配置目录下创建或修改主配置文件(例如 /etc/nginx/sites-enabled/default):

bash
sudo nano /etc/nginx/sites-enabled/default

填入以下内容:

nginx
server {
    listen 80;
    server_name example.com;

    # 站点 A 的配置
    location /site-a {
        root /var/www/site-a;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }

    # 站点 B 的配置
    location /site-b {
        root /var/www/site-b;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }

    # 站点 C 的配置
    location /site-c {
        root /var/www/site-c;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }
}

2、创建站点目录

为每个站点创建根目录并放置文件:

bash
sudo mkdir -p /var/www/site-a /var/www/site-b /var/www/site-c

# 创建测试文件
echo "Welcome to Site A" | sudo tee /var/www/site-a/index.html
echo "Welcome to Site B" | sudo tee /var/www/site-b/index.html
echo "Welcome to Site C" | sudo tee /var/www/site-c/index.html

3、检查配置并重启 Nginx

bash
sudo nginx -t
sudo systemctl restart nginx

4、访问测试

  • 访问 http://example.com/site-a,应该显示 Welcome to Site A
  • 访问 http://example.com/site-b,应该显示 Welcome to Site B
  • 访问 http://example.com/site-c,应该显示 Welcome to Site C

方法 2:使用子域名

如果你希望通过 http://site-a.example.comhttp://site-b.example.com 访问不同的站点,可以按以下方式配置:

1、配置 DNS

在域名服务提供商的管理面板中,添加子域名记录(ACNAME 记录),将 site-a.example.comsite-b.example.com 等指向你的服务器 IP。

2、编辑 Nginx 配置文件

为每个子域名创建独立的虚拟主机配置:

bash
sudo nano /etc/nginx/sites-available/site-a

填入以下内容(为 site-a 配置):

nginx
server {
    listen 80;
    server_name site-a.example.com;

    root /var/www/site-a;
    index index.html index.htm;

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

site-bsite-c 创建类似的配置文件,只需修改 server_nameroot

3、启用站点配置

通过符号链接将站点配置文件链接到 sites-enabled

bash
sudo ln -s /etc/nginx/sites-available/site-a /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site-b /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site-c /etc/nginx/sites-enabled/

4、检查配置并重启 Nginx

bash
sudo nginx -t
sudo systemctl restart nginx

5、访问测试

  • 访问 http://site-a.example.com,应该显示 Welcome to Site A
  • 访问 http://site-b.example.com,应该显示 Welcome to Site B
  • 访问 http://site-c.example.com,应该显示 Welcome to Site C