跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Nginx代理支持HTTP2协议提升数据传输效率

Nginx代理支持HTTP/2需启用SSL/TLS并配置listen 443 ssl http2;要求Nginx≥1.9.5、OpenSSL≥1.0.2且编译含http_v2模块;证书有效、TLS 1.2/1.3启用;客户端到Nginx走HTTP/2,后端默认仍为HTTP/1.1;可用浏览器开发者工具或curl -I --http2验证。 要让Nginx代理支持HTTP/2,核心是启用SSL/TLS并正确配置监听指令,因为HTTP/2在Nginx中仅允许在HTTPS(即
ssl http2
)下工作,不支持明文HTTP/2。 确认Nginx版本与编译支持 Nginx 1.9.5+ 原生支持HTTP/2,但需确保编译时链接了 OpenSSL 1.0.2+(推荐1.1.1+),且未禁用HTTP/2模块。可通过以下命令验证:
nginx -V 2>&1 | grep -o 'http_v2'
—— 输出含
http_v2
表示模块已启用
nginx -V 2>&1 | grep -i openssl
—— 检查OpenSSL版本是否≥1.0.2 配置HTTPS监听并启用HTTP/2 在server块中,将
listen 443 ssl;
改为
listen 443 ssl http2;
,同时保留必要的SSL参数: 必须配置有效的SSL证书(自签名证书在现代浏览器中可能触发HTTP/2降级) 推荐启用TLS 1.2/1.3,禁用TLS 1.0/1.1;例如:
ssl_protocols TLSv1.2 TLSv1.3;
避免使用弱加密套件,如
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...
后端代理无需特殊改动 Nginx作为反向代理时,客户端到Nginx走HTTP/2,Nginx到上游服务器默认仍用HTTP/1.1(除非上游也支持HTTP/2且显式配置
http2
)。多数场景下无需升级后端协议——HTTP/2的多路复用、头部压缩等优势已在客户端连接层生效,显著减少TLS握手和队头阻塞开销。 验证HTTP/2是否生效 部署后可通过多种方式确认: 浏览器开发者工具 → Network标签 → 查看某请求的Protocol列是否显示
h2
curl -I --http2 https://your-domain.com
(需curl 7.47+且编译支持HTTP/2) Chrome访问
chrome://net-internals/#http2
查看当前连接列表

相关文章