Appearance
配置 Nginx 虚拟主机
如果你只有一个域名,但想在同一台服务器上运行多个站点,可以通过子路径或子域名的方式来配置多个站点。以下是两种常见方法:
方法 1:使用子路径
如果你希望通过 http://example.com/site-a、http://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.html3、检查配置并重启 Nginx
bash
sudo nginx -t
sudo systemctl restart nginx4、访问测试
- 访问
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.com、http://site-b.example.com 访问不同的站点,可以按以下方式配置:
1、配置 DNS
在域名服务提供商的管理面板中,添加子域名记录(A 或 CNAME 记录),将 site-a.example.com、site-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-b 和 site-c 创建类似的配置文件,只需修改 server_name 和 root。
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 nginx5、访问测试
- 访问
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。