nginx基于域名的虚拟主机通过server_name匹配host头实现单ip多域名托管;需为各域名创建独立网站目录与index.html,配置对应server块并启用,最后修改hosts文件本地验证。

配置 Nginx 基础的基于域名的虚拟主机,核心是让同一个 IP 地址能响应多个不同域名的请求,靠的是 server_name 指令匹配 HTTP 请求头里的 Host 字段。不需要额外 IP 或端口,适合大多数网站托管场景。
准备网站目录和测试页面
每个域名需要独立的根目录和首页文件,便于验证是否生效:
- 创建两个目录,比如 /var/www/site-a 和 /var/www/site-b
- 在每个目录下放一个 index.html,内容简单区分即可(如写上 “This is site-a”)
- 确保 Nginx 进程有读取权限:
sudo chown -R $USER:www-data /var/www/site-*
添加 server 块配置
推荐在 /etc/nginx/sites-available/ 下新建配置文件(如 site-a.conf),再软链到 sites-enabled:
- 第一个站点(site-a.example.com):
server {
listen 80;
server_name site-a.example.com;
root /var/www/site-a;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
- 第二个站点(site-b.example.com):
server {
listen 80;
server_name site-b.example.com;
root /var/www/site-b;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
注意:server_name 可写多个,用空格分隔(如 server_name www.site-a.com site-a.com;)
启用并验证配置
完成配置后必须检查语法、重载服务:
- 建立软链接:
sudo ln -s /etc/nginx/sites-available/site-a.conf /etc/nginx/sites-enabled/ - 测试语法:
sudo nginx -t—— 必须显示 “syntax is ok” - 重载生效:
sudo systemctl reload nginx(或nginx -s reload) - 本地测试:修改本机 hosts 文件(Windows 在
C:\Windows\System32\drivers\etc\hosts,Linux/macOS 在/etc/hosts),添加两行:
127.0.0.1 site-a.example.com 127.0.0.1 site-b.example.com
保存后直接浏览器访问这两个地址,就能看到各自对应的页面。











