nginx 的 include 指令是将外部配置原样插入当前上下文,用于逻辑拆分与复用;需按功能分目录组织(conf.d、sites-available/enabled、snippets),严格遵循上下文位置、使用绝对路径、按ascii序命名文件,并通过 nginx -t 和 -t 验证后 reload。

Linux 下 Nginx 的 include 指令不是“加载模块”,而是把外部配置文件内容原样插入当前上下文,实现逻辑拆分和复用。关键不在于怎么写 include,而在于怎么组织文件结构、放在哪、叫什么名、怎么验证。
按功能类型分目录,各司其职
把通用配置按用途隔离到不同目录,避免混杂:
-
/etc/nginx/conf.d/:放全局级复用配置,比如
ssl.conf(TLS参数)、security.conf(防爬/限流)、logging.conf(log_format + access_log 模板) -
/etc/nginx/sites-available/:存所有站点的完整
server{}块,如admin.example.com.conf、api.internal.conf,不启用也不删 -
/etc/nginx/sites-enabled/:只放符号链接,指向
sites-available/中要上线的文件,启停靠 ln -s / rm,不改内容 -
/etc/nginx/snippets/:放可嵌套的小片段,比如
proxy-params.conf(含 proxy_set_header 等)、cors-enable.conf,常被多个 server include
include 必须写对位置和路径
指令生效受上下文严格限制,不能乱放:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 想定义
upstream或map,必须在http{}外、全局块(main context)里 include,例如:
include /etc/nginx/conf.d/upstreams.conf; - 想引入
server{}或log_format,必须在http{}块内部,常见写法:
http { ... include /etc/nginx/sites-enabled/*.conf; } - 路径强烈建议用绝对路径,相对路径依赖启动时工作目录,容易失效;
正确:include /etc/nginx/conf.d/*.conf;
慎用:include conf.d/*.conf;
用文件名控制加载顺序
Nginx 按 ASCII 字母序读取通配符匹配的文件,顺序影响引用是否合法:
- 先定义后使用:比如
upstream要在server引用前加载,就把 upstream 文件命名为00-upstream.conf - 常见命名习惯:
00-common.conf→10-ssl.conf→20-security.conf→99-default.conf - 避免用中文、空格或特殊字符,否则排序异常或加载失败
每次修改后必须验证再重载
include 是编译期展开,语法错误会直接导致整个 Nginx 启动失败:
- 检查语法:
nginx -t—— 验证所有被 include 的文件是否能正确解析 - 查看实际加载结果:
nginx -T—— 输出合并后的完整配置,确认片段是否真被加载、位置是否正确 - 重载生效:
nginx -s reload或systemctl reload nginx,无需重启进程










