Nginx 操作响应头信息的实现
前置条件:需要编译ngx_http_headers_module模块,才支持header头信息操作
add_header
意思为将自定义的头信息的添加到响应头,指令为add_headernamevalue[always];,可以用在http{},server{},location{},ifinlocation{}上下文中,
只有当响应状态码等于200,201(1.3.10),204,206,301,302,303,304,307(1.1.16,1.0.13),或308(1.13.0)时生效,如果always参数指定了,头信息将无视状态码,在所有响应中强制返回。
注意:可以声明多个add_header指令,当且仅当当前区块没有add_header的时候,才会继承上级声明的add_header信息
例如:
server{ add_headera123; location/{ root/path; } location/download/{ add_headerb321; } }
如上的例子,在访问/download/路由的时候,将返回b321这样的头信息,而访问/路由时,将返回上级指定的a123头信息。
add_trailer
意思为将自定义的头信息添加到响应头的末尾,指令为add_trailernamevalue[always];,可以用在http{},server{},location{},ifinlocation{}上下文中,只有当响应状态码等于200,201,206,301,302,303,307,或308时生效,如果always参数指定了,头信息将无视状态码,在所有响应中强制返回。
注意:可以声明多个add_trailer指令,当且仅当当前区块没有add_trailer的时候,才会继承上级声明的add_trailer信息
举例参考add_header的例子。
expires
启用或禁用,添加或修改响应头中的"Expires"和"Cache-Control"字段,指令为expires[modified]time;或者expiresepoch|max|off;当响应状态码等于200,201(1.3.10),204,206,301,302,303,304,307(1.1.16,1.0.13),或308(1.13.0)时生效,time参数可以为正时间或者负时间。"Expires"字段中的时间计算为当前时间和在time中指定的时间总和。如果使用该modified参数(0.7.0,0.6.32),则将时间计算为文件修改时间与time指令中指定的时间之和。
此外,可以使用"@"前缀(0.7.9,0.6.34)指定一天中的时间:expires@15h30m;
"Cache-Control"字段的内容取决于指定时间的符号:
- 时间为负数-"Cache-Control:no-cache"
- 时间为正数或者0-"Cache-Control:max-age=t"t是指令中指定的时间,以秒为单位
epoch参数将"Expires"设置为值"Thu,01Jan197000:00:01GMT",将"Cache-Control"设置为"no-cache"。
max参数将"Expires"设置为值"Thu,31Dec203723:55:55GMT",将"Cache-Control"设置为10年。
off参数禁用添加或修改"Expires"和"Cache-Control"响应头字段。
最后一个参数值可以包含变量(1.7.9):例如:
map$sent_http_content_type$expires{ defaultoff; application/pdf42d; ~image/max; } expires$expires;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。