美文网首页
Nginx的http_headers模块

Nginx的http_headers模块

作者: Zhang21 | 来源:发表于2017-10-10 16:09 被阅读366次

    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

    相关文章

      网友评论

          本文标题:Nginx的http_headers模块

          本文链接:https://www.haomeiwen.com/subject/gfivyxtx.html