nginx官方推荐用include指令按业务逻辑拆分大配置,如按站点建独立server文件或按功能抽离公共配置块,并需注意上下文限制、绝对路径引用及严格验证流程。

直接用 include 指令把大配置按业务逻辑拆开,是 Nginx 官方推荐且最稳妥的做法。它不依赖动态模块,也不改启动流程,只做文件级引入,安全、清晰、可维护。
按站点(域名)拆成独立 server 文件
这是最常用也最直观的方式,适合多项目共存的场景:
- 在
/etc/nginx/sites-available/下为每个服务建一个文件,比如admin.example.com.conf、api.internal.conf - 每个文件只写一个完整的
server{...}块,包含listen、server_name、location等全部内容 - 用符号链接启用:
ln -s /etc/nginx/sites-available/admin.example.com.conf /etc/nginx/sites-enabled/ - 主配置中加一句:
include /etc/nginx/sites-enabled/*.conf;(放在http{}块内)
按功能类型拆出公共配置块
把跨多个站点复用的部分抽出来,避免重复定义:
-
/etc/nginx/conf.d/upstream.conf:只放upstream块,定义后端集群和负载策略 -
/etc/nginx/conf.d/log_formats.conf:统一log_format,后续所有server直接用名称引用 -
/etc/nginx/conf.d/ssl.conf:集中管理证书路径、TLS 版本、加密套件等 HTTPS 公共参数 -
/etc/nginx/conf.d/rewrites.conf:存放全局重写规则,如强制跳转 HTTPS、URL 标准化等
注意 include 的位置和路径写法
include 不是简单拼接文本,它的行为受上下文和路径影响:
- 放在
http{}块里,只能引入server、map、log_format等允许出现在 HTTP 上下文中的指令 - 放在全局块(
nginx.conf最外层),可引入upstream、variables等全局级配置,但不能含events或http这类顶层块 - 路径建议用绝对路径,例如
include /etc/nginx/conf.d/*.conf;;相对路径基于nginx.conf所在目录解析,容易出错 - 通配符匹配顺序依赖文件系统排序(通常是字母序),关键配置可用前缀控制加载优先级,比如
00-global.conf确保最先读入
验证与生效流程不能跳
每次修改完配置,必须走标准验证流程:
- 先检查语法:
nginx -t—— 显示 “syntax is ok” 和 “test is successful” 才算通过 - 再看实际加载结果:
nginx -T—— 输出完整合并后的配置,确认拆分的文件确实被正确载入 - 最后重载服务:
systemctl reload nginx或nginx -s reload











