http/2 的头部压缩(hpack)由 http_v2_module 内置实现,无需额外编译选项;只需启用 --with-http_ssl_module 和 --with-http_v2_module,openssl ≥ 1.0.2e,并在配置中使用 listen 443 ssl http2; 即可自动生效。

HTTP/2 的头部压缩(HPACK)是协议内置机制,不是靠 Nginx 编译参数单独开启的。只要正确启用 http_v2_module 并运行在 HTTPS 上,头部压缩就会自动生效,无需额外配置编译选项。
关键前提是正确启用 HTTP/2 模块
必须在 ./configure 中显式加入:
- --with-http_ssl_module:提供 TLS 支持,HTTP/2 在主流浏览器中强制要求 HTTPS
- --with-http_v2_module:启用 HTTP/2 协议栈,HPACK 压缩由该模块内部实现
例如:
./configure --prefix=/usr/local/nginx \--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module
OpenSSL 版本决定 HPACK 是否可用
HPACK 依赖底层 TLS 层支持 ALPN(应用层协议协商),这要求 OpenSSL ≥ 1.0.2e。检查方式:
若版本过低(如 CentOS 7 默认的 1.0.2k 通常够用,但更老系统可能为 1.0.1e),需手动编译新版 OpenSSL 到自定义路径(如 /usr/local/ssl),再在 configure 中指定:
运行时无需额外配置头压缩
Nginx 不提供类似 --with-http_hpack_module 的独立开关。HPACK 是 HTTP/2 协议规范的一部分,只要满足以下条件,它就自动工作:
- Nginx 配置中使用
listen 443 ssl http2; - 客户端(如 Chrome/Firefox)通过 HTTPS 访问且协商成功 ALPN h2
- 证书有效、TLS 协议未禁用 TLSv1.2+(HTTP/2 要求 TLSv1.2 或更高)
可通过 chrome://net-internals/#http2 查看连接是否显示 h2 协议及流信息,确认 HPACK 已启用。











