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
;