提取公共配置片段的核心是将重复、通用、不随站点变化的配置项从server块剥离,统一存放并用include引入,以减少冗余、便于维护和灰度更新;适合抽取的内容包括日志格式与路径、性能参数、压缩设置、安全响应头及反向代理通用header;推荐目录结构为conf.d/common.conf、conf.d/ssl.conf、snippets/deny-bots.conf、snippets/proxy-params.conf;主配置中通过include指令引用,注意路径写法(相对/绝对/通配符)及语法合法性。

提取公共配置片段的核心是把重复、通用、不随站点变化的配置项,从各个 server 块中剥离出来,统一放到独立文件里,再用 include 引入。这样既减少冗余,又便于集中维护和灰度更新。
哪些内容适合抽成公共片段
以下几类配置高频复用,建议优先拆出:
-
日志格式与路径:如
log_format main、access_log /var/log/nginx/access.log main -
性能参数:如
sendfile on、tcp_nopush on、keepalive_timeout 65 -
压缩设置:如
gzip on、gzip_types text/plain application/json -
安全响应头:如
add_header X-Content-Type-Options nosniff -
反向代理通用 header:如
proxy_set_header X-Real-IP $remote_addr等(常放在snippets/proxy-params.conf)
如何组织目录与文件
推荐在 Nginx 根目录下建立清晰的分层结构:
-
conf.d/common.conf:放全局 HTTP 层通用指令(日志、压缩、超时等) -
conf.d/ssl.conf:所有 SSL/TLS 公共参数(协议版本、密钥交换、HSTS) -
snippets/deny-bots.conf:屏蔽爬虫的map+if规则 -
snippets/proxy-params.conf:标准反代 header 集合,供各location块include
主配置 nginx.conf 的 http 块中只需写:include conf.d/common.conf;include conf.d/ssl.conf;include snippets/*.conf;
引用时的路径与语法注意点
include 指令支持三种写法,需根据部署环境选对:
- 相对路径(推荐用于本地解压版):
include ../conf.d/*.conf;—— 路径相对于当前配置文件位置 - 绝对路径(推荐用于 Linux 包管理安装):
include /etc/nginx/conf.d/*.conf; - 通配符可嵌套多级:
include conf.d/sites-enabled/*.conf;,方便开关站点
被包含的文件本身必须语法合法;哪怕只有一行错,nginx -t 就会失败。
实际拆分示例:把 proxy header 抽成 snippet
新建 snippets/proxy-params.conf,内容为:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off;
然后在任一 server 或 location 块中写:
location /api/ {<br>
include snippets/proxy-params.conf;<br>
proxy_pass http://backend;<br>
}











