返回介绍

介绍

其他

How-To

开发

模块参考

ngx_http_v2_module

发布于 2024-08-13 23:46:26 字数 17929 浏览 0 评论 0 收藏 0

ngx_http_v2_module 模块(1.9.5)提供对 HTTP/2 的支持并取代了 ngx_http_spdy_module 模块。

默认不构建此模块,可使用 --with-http_v2_module 配置参数启用。

已知问题

在 1.9.14 版本之前,无论 proxy_request_bufferingfastcgi_request_bufferinguwsgi_request_bufferingscgi_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,否则为空字符串。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文