已启用HTTP2仍使用HTTP/1.1通信,如何强制仅使用HTTP/2进行通信?
强制仅使用HTTP/2的配置方法
首先提前确认基础环境满足要求:服务端版本支持HTTP/2(Nginx≥1.9.5、Apache≥2.4.17),且OpenSSL版本≥1.0.2支持ALPN协议。
Nginx服务端配置
- 打开对应站点的Nginx配置文件,修改监听项与协议限制配置:
server { # 监听443端口启用ssl与http2 listen 443 ssl http2; # 强制开启仅HTTP/2,禁用HTTP/1.x http2 on; # HTTP/2要求TLS版本不低于1.2 ssl_protocols TLSv1.2 TLSv1.3; ssl_certificate 你的证书路径.crt; ssl_certificate_key 你的证书密钥路径.key; # 其余站点原有配置保持不变 }
- 配置修改完成后执行
nginx -t验证配置语法正确性,验证通过后执行nginx -s reload重载配置生效。
Apache服务端配置
- 先执行
a2enmod http2启用HTTP/2模块。 - 打开对应站点的虚拟主机配置文件,修改协议配置:
<VirtualHost *:443> # 原有SSL配置、站点域名、路径等配置保留 # 配置仅允许HTTP/2协议 Protocols h2 SSLProtocol TLSv1.2 TLSv1.3 </VirtualHost>
- 配置修改完成后执行
apache2ctl configtest验证配置正确性,验证通过后执行systemctl reload apache2重载配置生效。
配置生效验证
执行命令curl --http2-only -I https://你的站点域名,如果返回正常状态码说明强制HTTP/2配置生效;如果返回报错则说明配置存在问题,需要回查环境与配置参数。
内容的提问来源于stack exchange,提问作者Yogesh Deshmukh
相关产品推荐
相关产品推荐

