nginx模块化配置的核心是include指令,需按功能(upstream、log_format、ssl等)或站点拆分文件,严格遵循上下文限制(如全局块禁用events/http),使用绝对路径与通配符,并通过nginx -t和nginx -t验证加载结果。

按功能类型拆:把同类配置归到一个文件
比如反向代理规则、日志格式、SSL参数这些跨多个站点共用的内容,适合集中定义:
-
upstream.conf:只放
upstream块,定义后端服务集群和负载策略,避免每个 server 里重复写 -
log_formats.conf:统一定义
log_format,后续所有 server 可直接引用名称 - ssl.conf:包含证书路径、TLS版本、加密套件等,HTTPS站点直接 include 就能复用
- rewrites.conf:存放全局重写逻辑,如强制跳转 HTTPS、URL标准化等
按业务/站点拆:每个域名或服务一个配置文件
这是最常用也最直观的方式,尤其适合多项目共存的场景:
- 在
sites-available/下为每个站点建独立文件,如blog.example.com.conf、api.internal.conf - 用符号链接控制启停:
ln -s /etc/nginx/sites-available/blog.example.com.conf /etc/nginx/sites-enabled/ - 主配置中写
include sites-enabled/*.conf;,Nginx 只加载启用的站点,不用注释或删代码
注意 include 的位置和路径写法
include 不是简单拼接文本,它的行为受位置和路径影响:
- 放在
http{}块内,只能引入server、map、log_format等允许在 http 上下文出现的指令 - 放在全局块(nginx.conf 最外层),可引入
upstream、variables等全局级配置,但不能含events或http这类顶层块 - 路径建议用绝对路径,比如
include /etc/nginx/conf.d/*.conf;;若用相对路径,它基于 Nginx 启动时的工作目录,容易出错 - 通配符匹配顺序依赖文件系统排序(通常是字母序),关键文件可用前缀控制,如
00-global.conf确保最先加载
验证和上线前必须做的两件事
模块化后配置更灵活,但也更容易漏掉或冲突:
- 每次修改后运行
nginx -t:检查语法是否正确,所有 include 文件是否存在、可读 - 用
nginx -T查看展开后的完整配置:能一眼看出哪些规则被覆盖、哪个 server_name 冲突、log_format 是否定义两次











