Nginx虚拟主机配置通常分散在/etc/nginx/conf.d/*.conf或/etc/nginx/sites-enabled/中,需通过include指令加载;检查listen、server_name、root等字段是否合法,执行nginx -t验证语法,并用curl加Host头测试路由是否生效。
直接查配置文件和运行状态,就能快速确认虚拟主机是否生效、有无冲突或遗漏。
Nginx 虚拟主机通常不写在主配置文件里,而是分散在独立的 .conf 文件中。先定位这些文件:
include /etc/nginx/conf.d/*.conf; —— 这决定了哪些配置会被加载执行命令列出所有启用的虚拟主机配置:
ls /etc/nginx/conf.d/*.conf 2>/dev/null || echo "无 conf.d 配置"; ls /etc/nginx/sites-enabled/* 2>/dev/null || echo "无 sites-enabled 配置"逐个查看配置文件,重点确认每个 server 块的关键字段:
listen 80; 或 listen 443 ssl;)*.example.com)或泛解析是否符合预期root /var/www/example;)可用命令快速提取所有虚拟主机绑定信息:
grep -hE '^s*listen|^s*server_name' /etc/nginx/conf.d/*.conf 2>/dev/null | grep -v '#' | sed '/^[[:space:]]*$$/d'配置可能语法正确但逻辑冲突,必须执行检查:
nginx -t -q && echo "OK" || echo "ERROR"
配置生效≠访问正常,还需验证运行时行为:
ss -tlnp | grep ':80|:443',确认 nginx worker 在对应端口上监听curl -I http://127.0.0.1,看响应头中的 Server 和返回内容是否匹配预期站点curl -H "Host: www.example.com" http://127.0.0.1,模拟真实 Host 头路由