encode
使用配置的编码对响应进行编码。编码的典型用途是压缩。
语法
encode [<matcher>] <formats...> {
# encoding formats
gzip [<level>]
zstd
minimum_length <length>
# response matcher single line syntax
match [header <field> [<value>]] | [status <code...>]
# or response matcher block for multiple conditions
match {
status <code...>
header <field> [<value>]
}
}
-
<formats...> 是要启用的编码格式列表。如果启用了多个编码,则根据请求的 Accept-Encoding 标头选择编码;如果客户端没有强烈的偏好(q-factor),则使用第一个支持的编码。
-
gzip 启用 Gzip 压缩,可选地指定压缩级别。
-
zstd 启用 Zstandard 压缩。
-
minimum_length 响应应具有的最小字节数才能被编码(默认值:512)。
-
match 是一个 响应匹配器。只有匹配的响应才会被编码。默认情况下,它看起来像这样:
match { header Content-Type text/* header Content-Type application/json* header Content-Type application/javascript* header Content-Type application/xhtml+xml* header Content-Type application/atom+xml* header Content-Type application/rss+xml* header Content-Type image/svg+xml* }
响应匹配器
响应匹配器 可用于根据特定条件过滤(或分类)响应。
status
status <code...>
按 HTTP 状态码。
- <code...> 是 HTTP 状态码列表。特殊情况是
2xx
、3xx
等,它们分别匹配 200-299、300-399 等范围内的所有状态码。
header
请参阅 header 请求匹配器以了解支持的语法。
示例
启用 Gzip 压缩
encode gzip
启用 Zstandard 和 Gzip 压缩(Zstandard 隐式优先,因为它排在首位)
encode zstd gzip
在完整的站点中,压缩由 file_server
提供的静态文件
example.com {
root * /srv
encode zstd gzip
file_server
}