头信息#

允许在响应头中添加 "Expires" 和 "Cache-Control" 头字段,以及任意字段。

配置示例#

expires    24h;
expires    modified +24h;
expires    @24h;
expires    0;
expires    -1;
expires    epoch;
expires    $expires;
add_header Cache-Control private;

指令#

add_header#

语法

add_header name value [always];

默认值

上下文

http, server, location, if in location

在响应码为 200、201、204、206、301、302、303、304、307 或 308 时,添加指定字段到响应头。参数值可以包含变量。

可以有多个 add_header 指令。只有在当前级别未定义任何 add_header 指令时,这些指令才会从上一级配置继承。

如果指定了 always 参数,则无论响应码如何,都会添加该头字段。

add_trailer#

语法

add_trailer name value [always];

默认值

上下文

http, server, location, if in location

在响应码为 200、201、206、301、302、303、307 或 308 时,添加指定字段至响应的末尾。参数值可以包含变量。

可以有多个 add_trailer 指令。只有在当前级别未定义任何 add_trailer 指令时,这些指令才会从上一级配置继承。

如果指定了 always 参数,则无论响应码如何,都会添加该字段。

expires#

语法

expires [modified] time;

expires epoch | max | off;

默认值

expires off;

上下文

http, server, location, if in location

启用或禁用在响应码为 200、201、204、206、301、302、303、304、307 或 308 时添加或修改 "Expires" 和 "Cache-Control" 响应头字段。参数可以是正或负的 时间

"Expires" 字段中的时间是当前时间与指令中指定时间的总和。如果使用了 modified 参数,则时间是文件修改时间与指令中指定时间的总和。

此外,可以使用 "@" 前缀指定一天中的某个时间:

expires @15h30m;

"Cache-Control" 字段的内容取决于指定时间的符号:

  • 时间为负 — "Cache-Control: no-cache"。

  • 时间为正或零 — "Cache-Control: max-age=`t`",其中 t 是指令中指定的时间,以秒为单位。

epoch

将 "Expires" 设置为 "Thu, 01 Jan 1970 00:00:01 GMT","Cache-Control" 设置为 "no-cache"。

max

将 "Expires" 设置为 "Thu, 31 Dec 2037 23:55:55 GMT","Cache-Control" 设置为 10 年。

off

禁止添加或修改 "Expires" 和 "Cache-Control" 响应头字段。

最后的参数值可以包含变量:

map $sent_http_content_type $expires {
    default         off;
    application/pdf 42d;
    ~image/         max;
}

expires $expires;