Nginx的http_headers模块

2017-10-10  本文已影响366人  Zhang21

Module ngx_http_headers_module 官方文档



ngx_http_headers_module 模块,用于在响应给客户端的报文header中添加额外信息。
ExpiresCache-Control, ``,

包含 add_headeradd_trailerexpires命令。

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效果

但是,给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响应报文中的ExpiresCache-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禁止添加或修改响应头部中的ExpiresCache-Control

上一篇下一篇

猜你喜欢

热点阅读