Module ngx_http_headers_module 官方文档
ngx_http_headers_module 模块,用于在响应给客户端的报文header中添加额外信息。
如Expires,Cache-Control, ``,
包含 add_header,add_trailer, expires命令。
Example Configuration:
expires 24h;
expires modified +24h;
expires @24h;
expires 0;
expires -1;
expires epoch;
expires $expires;
add_header Cache-Control private;
Directives(用法)
add_header
当response code等于200, 201, 204, 206, 301, 302, 303, 304, 307, 308,向响应报文头部添加自定义字段,并赋值。值可以包含变量。
语法:add_header name value;
默认值:none
作用域:http, server, location, if in location
栗子:为客户端添加指定cookie
set $value 1;
if ($http_cookie !~ "value:zhang") {
set $key "${key}23";
}
if ($key = '123') {
add_header "Set-Cookie" "value:zhang";
rewrite ^(.*)$ $request_uri redirect;
}
#注意add_header的作用域
在Nginx中,可使用include简化:
vim /etc/nginx/setcookie
set $value 1;
if ($http_cookie !~ "value:zhang") {
set $key "${key}23";
}
if ($key = '123') {
add_header "Set-Cookie" "value:zhang";
rewrite ^(.*)$ $request_uri redirect;
}
#然后在location中include
include setcookie;
此处针对客户端访问添加cookie,防止一定的攻击。我测试来用curl访问会报302错误,但浏览器访问不受影响。

但是,给curl指定保存cookie还是能访问
curl www.xxx.com -b cookie.cookie
#所以好像没什么用
add_trailer
当response code等于200, 201, 204, 206, 301, 302, 303, 304, 307, 308,向响应报文尾部添加自定义字段,并赋值。值可以包含变量。
语法:add_trailer name value [always];
默认值:none
作用域: http, server, location, if in location
expires
当response code等于200, 201, 204, 206, 301, 302, 303, 304, 307, 308,对HTTP响应报文中的Expires和Cache-Control的增加或修改操作。
语法:expires [modified] time;
expires epoch | max | off;
默认值:off
作用域:http, server, location, if in location
可以在time中使用正数或负数;
expires的值将通过当前系统时间加上设置的time值来获得;
epoch表示自 1970年1月1日00:00:01 GMT的绝对时间;
max指定Expires的值为2037年12月31日23:55:55,Cache-Control的值为10years;
设置为负数的时间值:Cache-Control:no-cache;
设置为正数或0的时间值:Cache-Control:max-age=xx,单位为妙;
参数off禁止添加或修改响应头部中的Expires和Cache-Control;