文档
一个 项目

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 状态码列表。特殊情况是 2xx3xx 等,它们分别匹配 200-299、300-399 等范围内的所有状态码。

请参阅 header 请求匹配器以了解支持的语法。

示例

启用 Gzip 压缩

encode gzip

启用 Zstandard 和 Gzip 压缩(Zstandard 隐式优先,因为它排在首位)

encode zstd gzip

在完整的站点中,压缩由 file_server 提供的静态文件

example.com {
	root * /srv
	encode zstd gzip
	file_server
}