nginx 配置 add_header
nginx
在 Nginx 中,add_header 指令用于向响应头部添加自定义的 HTTP 头。这个指令可以用来设置服务器返回给客户端的 HTTP 响应头,在响应中添加额外的信息,如安全策略、缓存控制、跨域设置等。
语法介绍
add_header 指令的语法如下:
add_header field value [always];
field
:指定要添加的 HTTP 头部字段名称。value
:指定要添加的 HTTP 头部字段的值。always
:可选参数,如果指定了always
,则不管响应状态码是多少,都将添加该 HTTP 头部。如果不使用always
参数,则只有当响应状态码为 2xx 或 3xx 时,才添加该 HTTP 头部。
以下是一个包含常用 add_header
指令的全量 Nginx 配置示例:
http {
# ...
server {
listen 80;
server_name example.com;
# 添加自定义响应头部
add_header X-MyHeader "Hello world";
location / {
root /var/www/html;
index index.html;
}
location /api {
proxy_pass http://backend/api;
# 添加跨域资源共享(CORS)头部
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
add_header Access-Control-Allow-Headers "Authorization, Content-Type";
add_header Access-Control-Max-Age 3600;
}
# ...
}
# ...
}
上述配置中,http
块是 Nginx 配置的顶级块,包含了全局的配置信息。server
块是虚拟主机配置块,定义了监听地址和服务器名称。
在 server
块中,我们使用了 add_header
指令添加了一些自定义的 HTTP 头部。其中,X-MyHeader
是一个自定义的响应头部,值设为 "Hello world"。
另外,在名为 /api
的位置块中,我们使用了多个 add_header
指令来设置跨域资源共享(CORS)相关的响应头部。这些头部配置了允许的跨域请求来源、允许的请求方法、允许的请求头部等信息。
该配置示例只是一个简单的范例,实际应用中的 Nginx 配置可能会更加复杂和具体。建议根据具体需求和场景来使用 add_header
指令,以确保安全性和性能。
常用功能
禁用 iframe
例如,可以通过 add_header 指令设置 X-Frame-Options 头部,防止网站被嵌入到 iframe 中:
add_header X-Frame-Options "SAMEORIGIN";
设置缓存
另一个常见的用法是通过 add_header 指令设置缓存控制头部,控制浏览器对静态资源的缓存策略:
add_header Cache-Control "max-age=31536000";
add_header Expires "Wed, 21 Oct 2025 07:28:00 GMT";
支持跨域
add_header Access-Control-Allow-Origin *;
这条指令设置了 Access-Control-Allow-Origin 头部,用于支持跨域资源共享(CORS)。
通过将值设置为 *,表示允许所有域名进行跨域请求访问该资源,即允许任何来源的请求访问。
调试和监控
add_header Debug-Info "debug info"
这条指令是自定义的,设置了一个名为 Debug-Info 的自定义响应头部,其值为 "blog"。
这个头部可以用于向响应中添加一些调试信息或标识,帮助开发人员进行调试和监控。
需要注意的是,由于 HTTP 头部是作为响应的一部分发送给客户端的,因此使用 add_header 指令需谨慎,确保设置的 HTTP 头部安全、合理且符合需求。同时,由于 Nginx 的配置会直接影响网站的运行和性能,建议在生产环境中小心测试和验证配置更改。