Nginx可通过include指令统一引入通用响应头配置,将X-Frame-Options、CORS等头部抽离至独立文件(如headers.conf),在多个server或location块中复用,实现集中管理与一键同步更新。

直接用 include 引入通用头部信息,核心是把重复的响应头、安全头、跨域头等统一抽离到独立文件,再在多个 server 或 location 块中复用。它不依赖变量或条件判断,只做静态文本插入,所以必须确保被引入的内容语法合法、位置合理。
准备通用头部配置文件
新建一个纯配置文件(如 /etc/nginx/conf.d/headers.conf),只放 header 相关指令,不包含 server 或 location 等块级结构:
add_header X-Frame-Options "DENY";add_header X-Content-Type-Options "nosniff";add_header X-XSS-Protection "1; mode=block";add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;add_header Referrer-Policy "no-referrer-when-downgrade";- 若需支持跨域,加:
add_header Access-Control-Allow-Origin "*";和对应方法、头字段(注意生产环境慎用*)
在 server 或 location 中引入
include 必须放在生效作用域内——要让头部对整个站点生效,就放在 server 块顶层;若只对 API 路径生效,就放在对应 location 块里:
- 全局生效(推荐):
server {<br> listen 80;<br> server_name example.com www.example.com;<br> include /etc/nginx/conf.d/headers.conf;<br> location / {<br> root /var/www/example;<br> index index.html;<br> }<br>} - 仅 API 路径生效:
location /api/ {<br> proxy_pass http://backend;<br> include /etc/nginx/conf.d/headers.conf;<br>}
多域名共用同一套 headers
所有需要该头部策略的 server 块,都加上相同的一行 include 即可。比如你有 site-a.com 和 site-b.com 两个域名:
- 各自
server块里都写:include /etc/nginx/conf.d/headers.conf; - 修改
headers.conf后,只需nginx -t && nginx -s reload,所有域名立即同步更新 - 无需为每个域名复制粘贴一堆
add_header,避免遗漏或不一致
注意事项
include 是启动/重载时一次性展开,不是运行时读取。所以:
- 路径必须绝对准确,相对路径以 Nginx 配置根目录(通常是
/etc/nginx)为基准 - 文件权限需让 Nginx worker 进程可读(通常
chmod 644,属主为root) - 不要在
headers.conf里写if、set或其他动态逻辑——include不解析变量,也不支持条件 - 多个
add_header指令会叠加生效,但同名 header 后写的会覆盖先写的(Nginx 默认行为)


















