模块 ngx_http_headers_module

示例配置
指令
     add_header
     add_trailer
     expires

ngx_http_headers_module 模块允许向响应头添加“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 名称 [always];
默认
上下文 httpserverlocationif in location

将指定字段添加到响应头中,前提是响应代码等于 200、201 (1.3.10)、204、206、301、302、303、304、307 (1.1.16、1.0.13) 或 308 (1.13.0)。参数值可以包含变量。

可能有多个 add_header 指令。当且仅当当前级别上未定义 add_header 指令时,这些指令才会从上一个配置级别继承。

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

语法 add_trailer 名称 [always];
默认
上下文 httpserverlocationif in location

此指令出现在 1.13.2 版本中。

将指定字段添加到响应的末尾,前提是响应代码等于 200、201、206、301、302、303、307 或 308。参数值可以包含变量。

可能有多个 add_trailer 指令。当且仅当当前级别上未定义 add_trailer 指令时,这些指令才会从上一个配置级别继承。

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

语法 expires [modified] 时间;
expires epoch | max | off;
默认
expires off;
上下文 httpserverlocationif in location

启用或禁用添加或修改“Expires”和“Cache-Control”响应头字段,前提是响应代码等于 200、201 (1.3.10)、204、206、301、302、303、304、307 (1.1.16、1.0.13) 或 308 (1.13.0)。参数可以是正或负的 时间

“Expires”字段中的时间计算为当前时间加上指令中指定的 时间。如果使用了 modified 参数 (0.7.0、0.6.32),则时间计算为文件修改时间加上指令中指定的 时间

此外,还可以使用“@”前缀指定一天中的时间 (0.7.9、0.6.34)

expires @15h30m;

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

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” 响应头字段。

最后一个参数值可以包含变量 (1.7.9)

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

expires $expires;