ngx_http_v2_module
ngx_http_v2_module 模块(1.9.5)提供对 HTTP/2 的支持并取代了 ngx_http_spdy_module 模块。
默认不构建此模块,可使用 --with-http_v2_module 配置参数启用。
已知问题
在 1.9.14 版本之前,无论 proxy_request_buffering、fastcgi_request_buffering、uwsgi_request_buffering 和 scgi_request_buffering 指令值如何设置,都无法禁用客户端请求体缓冲。
示例配置
server {
listen 443 ssl http2;
ssl_certificate server.crt;
ssl_certificate_key server.key;
}
请注意,通过 TLS 接受 HTTP/2 连接需要「应用层协议协商」(Application-Layer Protocol Negotiation,ALPN)TLS 扩展支持,该支持仅在 OpenSSL 1.0.2 版本之后可用。使用「次协议协商」(Next Protocol Negotiation,NPN)TLS 扩展(自 OpenSSL 1.0.1 版本起可用)不能保证生效。
另外,如果 ssl_prefer_server_ciphers 指令设置为 on 值,则应将密码配置为符合 RFC 7540 中的附录 A 黑名单 并由客户端支持。
指令
http2_body_preread_size
| - | 说明 |
|---|---|
| 语法 | http2_body_preread_size size; |
| 默认 | http2_body_preread_size 64k; |
| 上下文 | http、server |
| 提示 | 该指令在 1.11.0 版本中出现 |
设置在开始处理之前可能被保存的请求体中的每个请求的缓冲区大小(size)。
http2_chunk_size
| - | 说明 |
|---|---|
| 语法 | http2_chunk_size size; |
| 默认 | http2_chunk_size 8k; |
| 上下文 | http、server、location |
设置响应体切片的最大大小(size)。值太低会导致更高的开销。由于 HOL 阻塞,过高的值会破坏优先级。
http2_idle_timeout
| - | 说明 |
|---|---|
| 语法 | http2_idle_timeout time; |
| 默认 | http2_idle_timeout 3m; |
| 上下文 | http、server |
设置连接关闭后的不活动超时时间。
http2_max_concurrent_pushes
| - | 说明 |
|---|---|
| 语法 | http2_max_concurrent_pushes number; |
| 默认 | http2_max_concurrent_pushes 10; |
| 上下文 | http、server |
| 提示 | 该指令在 1.13.9 版本中出现 |
限制一个连接的最大并发推送请求数。
http2_max_concurrent_streams
| - | 说明 |
|---|---|
| 语法 | http2_max_concurrent_streams number; |
| 默认 | http2_max_concurrent_streams 128; |
| 上下文 | http、server |
设置一个连接的最大并发 HTTP/2 流数量。
http2_max_field_size
| - | 说明 |
|---|---|
| 语法 | http2_max_field_size size; |
| 默认 | http2_max_field_size 4k; |
| 上下文 | http、server |
限制 HPACK 压缩的请求头字段的最大大小(size)。该限制同样适用于字段名和值。请注意,如果使用了霍夫曼编码,则解压缩后的字段名和值字符串的实际大小可能会更大。对于大多数请求,默认限制应该足够。
http2_max_header_size
| - | 说明 |
|---|---|
| 语法 | http2_max_header_size size; |
| 默认 | http2_max_header_size 16k; |
| 上下文 | http、server |
限制 HPACK 解压缩后整个请求头列表的最大大小(size)。对于大多数请求,默认限制应该足够。
http2_max_requests
| - | 说明 |
|---|---|
| 语法 | http2_max_requests number; |
| 默认 | http2_max_requests 1000; |
| 上下文 | http、server |
| 提示 | 该指令在 1.11.6 版本中出现 |
设置可以通过一个 HTTP/2 连接提供服务的最大请求数量(number)(包括推送请求),之后下一个客户端请求将导致连接关闭以及需要建立新连接。
要释放每个连接的内存分配,必须定期关闭连接。因此,设置过多的最大请求数可能会导致内存使用过多,因此不建议这样做。
http2_push
| - | 说明 |
|---|---|
| 语法 | http2_push uri | off; |
| 默认 | http2_push off; |
| 上下文 | http、server、location |
| 提示 | 该指令在 1.13.9 版本中出现 |
抢先向指定的 uri 发送(推送)请求以及对原始请求响应。仅处理有绝对路径的相对 URI,例如:
http2_push /static/css/main.css;
uri 值可以包含变量。
可以在同一配置级别上指定几个 http2_push 指令。off 参数取消从其他配置级别继承的 http2_push 指令的作用。
http2_push_preload
| - | 说明 |
|---|---|
| 语法 | http2_push_preload on | off; |
| 默认 | http2_push_preload off; |
| 上下文 | http、server、location |
| 提示 | 该指令在 1.13.9 版本中出现 |
启用将 Link 响应头字段中指定的预加载链接自动转换为推送请求的功能。
http2_recv_buffer_size
| - | 说明 |
|---|---|
| 语法 | http2_recv_buffer_size size; |
| 默认 | http2_recv_buffer_size 256k; |
| 上下文 | http |
设置每个工作进程输入缓冲区的大小(size)。
http2_recv_timeout
| - | 说明 |
|---|---|
| 语法 | http2_recv_timeout time; |
| 默认 | http2_recv_timeout 30s; |
| 上下文 | http、server |
设置超时时间以从客户端获得更多数据,然后关闭连接。
内嵌变量
ngx_http_userid_module 模块支持以下内嵌变量:
-
$http2协商的协议标识符:
h2用于 TLS HTTP/2,h2c用于在明文 TCP HTTP/2,否则为空字符串。
原文档
ngx_http_xslt_module
ngx_http_xslt_module(0.7.8+)是一个过滤器,可使用一个或多个 XSLT 样式表来转换 XML 响应。
默认不构建此模块,可在构建时使用 --with-http_xslt_module 配置参数启用。
示例配置
location / {
xml_entities /site/dtd/entities.dtd;
xslt_stylesheet /site/xslt/one.xslt param=value;
xslt_stylesheet /site/xslt/two.xslt;
}
指令
xml_entities
| - | 说明 |
|---|---|
| 语法 | xml_entities path; |
| 默认 | —— |
| 上下文 | http、server、location |
指定声明字符实体的 DTD 文件。该文件在配置阶段编译。出于技术原因,该模块无法在已处理的 XML 中使用外部子集声明,因此将其忽略,可使用专门定义的文件。该文件不应描述 XML 结构。仅声明所需的字符实体就足够了,例如:
<!ENTITY nbsp " ">
xslt_last_modified
| - | 说明 |
|---|---|
| 语法 | xslt_last_modified on | off; |
| 默认 | xslt_last_modified off; |
| 上下文 | http、server、location |
| 提示 | 该指令在 1.5.1 版本中出现 |
允许在 XSLT 转换期间保留原始响应中的 Last-Modified 头字段,以方便响应缓存。
默认情况下,在转换期间修改响应的内容时,将删除头字段,并且该头字段可能包含动态生成的元素或片段,这些元素或片段独立于原始响应更改。
xslt_param
| - | 说明 |
|---|---|
| 语法 | xslt_param parameter value; |
| 默认 | —— |
| 上下文 | http、server、location |
| 提示 | 该指令在 1.1.18 版本中出现 |
定义 XSLT 样式表的参数。该值(value)为 XPath 表达式。value 可以包含变量。要将字符串值传递给样式表,可使用 xslt_string_param 指令。
可以有多个 xslt_param 指令。当且仅当当前级别上没有定义 xslt_param 和 xslt_string_param 指令时,这些指令才从上一级继承。
xslt_string_param
| - | 说明 |
|---|---|
| 语法 | xslt_string_param parameter value; |
| 默认 | —— |
| 上下文 | http、server、location |
| 提示 | 该指令在 1.1.18 版本中出现 |
定义 XSLT 样式表的字符串参数。value 中的 XPath 表达式不会被解释。value 可以包含变量。
可以有多个 xslt_string_param 指令。当且仅当当前级别上没有定义 xslt_param 和 xslt_string_param 指令时,这些指令才从上一级继承。
xslt_stylesheet
| - | 说明 |
|---|---|
| 语法 | xslt_stylesheet stylesheet [parameter=value ...]; |
| 默认 | —— |
| 上下文 | http、server、location |
定义 XSLT 样式表及其可选参数。在配置阶段将编译样式表。
可以单独指定参数,也可以使用 : 定界符将其分组在一行中。如果参数包含 : 字符,则应将其转义为 %3A。另外,libxslt 要求将包含非字母数字字符的参数括在单引号或双引号中,例如:
param1='http%3A//www.example.com':param2=value2
参数描述可以包含变量,例如,整行参数可以取自单个变量:
location / {
xslt_stylesheet /site/xslt/one.xslt
$arg_xslt_params
param1='$value1':param2=value2
param3=value3;
}
可以指定多个样式表。它们将按指定顺序应用。
xslt_types
| - | 说明 |
|---|---|
| 语法 | xslt_types mime-type ...; |
| 默认 | xslt_types text/xml; |
| 上下文 | http、server、location |
除了 text/xml 之外,还启用有指定 MIME 类型的响应的转换。特殊值 * 与任何 MIME 类型(0.8.29)匹配。如果转换结果是 HTML 响应,则其 MIME 类型将更改为 text/html。
本文介绍了nginx的ngx_http_v2_module和ngx_http_xslt_module两个模块。ngx_http_v2_module提供对HTTP/2的支持,介绍了其已知问题、示例配置、指令及内嵌变量等;ngx_http_xslt_module可转换XML响应,说明了示例配置和相关指令。

被折叠的 条评论
为什么被折叠?



