通过在 /etc/nginx/conf.d/ 下为每个站点创建独立 .conf 文件并用 include 加载,可实现虚拟主机模块化管理;文件需含完整 server 块,命名建议用域名,修改后须 nginx -t 校验并 nginx -s reload 重载。

直接在 /etc/nginx/conf.d/ 下放独立的 .conf 文件,再通过 include /etc/nginx/conf.d/*.conf; 加载,就能实现虚拟主机的模块化管理。核心是让每个站点配置自成单元,不干扰主文件,也便于批量操作和灰度发布。
确保主配置中已启用 include
打开 /etc/nginx/nginx.conf,确认 http 块内有这行:
include /etc/nginx/conf.d/*.conf;
路径必须是绝对路径;通配符 * 会匹配该目录下所有以 .conf 结尾的文件,按字母顺序加载(如 01-api.conf 会早于 02-www.conf)。如果该行被注释或缺失,需手动添加并保存。
每个站点一个 .conf 文件,命名清晰
在 /etc/nginx/conf.d/ 下为每个虚拟主机新建文件,推荐用域名命名,例如:
shop.example.com.confapi.example.com.confadmin.example.com.conf
文件内容就是完整的 server 块,无需包裹 http 或其他外层结构。例如:
server {
listen 80;
server_name shop.example.com;
root /var/www/shop;
index index.html;
access_log /var/log/nginx/shop.access.log;
error_log /var/log/nginx/shop.error.log warn;
}
配置生效前务必校验与重载
每次修改后执行两步,不可跳过:
- 运行
nginx -t检查语法是否正确,输出 “syntax is ok” 和 “test is successful” 才算通过 - 通过
nginx -s reload热重载配置,不中断现有连接
不要用 systemctl restart nginx,除非你明确需要完全重启(比如改了 worker 进程数等全局参数)。
进阶建议:统一日志、限流与安全策略
模块化不只是拆文件,更是标准化。可在各 .conf 中统一加入以下内容:
- 专属访问日志路径,避免所有站点共用一个日志文件
- 基础限流:
limit_req zone=perip burst=10 nodelay;(需先在 http 块定义 zone) - 合理超时设置:
client_max_body_size 10M;、proxy_read_timeout 90; - 禁用危险头信息或加安全头,如
add_header X-Content-Type-Options nosniff;
这样每个虚拟主机既是独立部署单元,又保持运维一致性。


















