一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

运维巡检中 Nginx 虚拟主机如何查

时间:2026-09-04 18:57:49 编辑:袖梨 来源:一聚教程网

Nginx虚拟主机配置通常分散在/etc/nginx/conf.d/*.conf或/etc/nginx/sites-enabled/中,需通过include指令加载;检查listen、server_name、root等字段是否合法,执行nginx -t验证语法,并用curl加Host头测试路由是否生效。

直接查配置文件和运行状态,就能快速确认虚拟主机是否生效、有无冲突或遗漏。

看配置文件位置和内容

Nginx 虚拟主机通常不写在主配置文件里,而是分散在独立的 .conf 文件中。先定位这些文件:

  1. /etc/nginx/conf.d/*.conf(CentOS/RHEL/主流发行版默认路径)
  2. /etc/nginx/sites-enabled/(Ubuntu/Debian 常用,是 sites-available 中文件的软链接)
  3. 主配置中是否有 include 指令,例如 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 块是否合法

逐个查看配置文件,重点确认每个 server 块的关键字段:

  1. listen:端口是否正确(如 listen 80;listen 443 ssl;
  2. server_name:域名是否拼写正确,通配符(如 *.example.com)或泛解析是否符合预期
  3. rootalias: 根目录是否存在且权限可读(如 root /var/www/example;
  4. 是否有重复的 listen + server_name 组合(会导致后加载的覆盖前一个)

可用命令快速提取所有虚拟主机绑定信息:

grep -hE '^s*listen|^s*server_name' /etc/nginx/conf.d/*.conf 2>/dev/null | grep -v '#' | sed '/^[[:space:]]*$$/d'

验证配置语法并测试加载效果

配置可能语法正确但逻辑冲突,必须执行检查:

  1. 运行 nginx -t:检查语法和文件路径是否存在(如 root 目录不存在会报错)
  2. -q 参数可静默输出,适合脚本巡检:nginx -t -q && echo "OK" || echo "ERROR"
  3. 若修改过配置,用 nginx -s reload 重载(不中断服务),再确认进程未异常退出

观察实际监听与请求路由

配置生效≠访问正常,还需验证运行时行为:

  1. 查端口监听:ss -tlnp | grep ':80|:443',确认 nginx worker 在对应端口上监听
  2. 查默认 server:curl -I http://127.0.0.1,看响应头中的 Server 和返回内容是否匹配预期站点
  3. 按域名测(需本地 hosts 或 DNS 支持):curl -H "Host: www.example.com" http://127.0.0.1,模拟真实 Host 头路由

热门栏目