我有一个Debian 10 ( Debian 9与Debian 9完全相同),运行一个Apache2.4.38 web服务器。安装了Apache模块、mpm_event和http2,网站通过HTTPS提供服务。
我为我的每个网站在每个conf文件中添加了http2行,例如:
<VirtualHost *:12080>
# HTTP2
Protocols h2 h2c http/1.1
...编辑:当我使用基于网络的在线工具进行测试时,我得到了答案:“不支持HTTP/2协议/不支持ALPN扩展”。
当我浏览我的一个网站(curl -I -k https://mywebsite.com)时,我得到了以下响应,显然仍然在HTTP/1.1中:
HTTP/1.1 200 OK
Date: Tue, 30 Jul 2019 03:14:37 GMT
Server: Apache/2.4.38 (Debian)
Set-Cookie: PHPSESSID=7ulo4hj17ukek6s15g99fc2812; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Upgrade: h2,h2c
Connection: Upgrade
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
Set-Cookie: C00=; Expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/我是不是忘了有什么HTTP/2?
以防万一,这里也是我的/etc/apache2/mods-enabled/http2.conf文件的内容:
<IfModule !mpm_prefork>
Protocols h2 h2c http/1.1
</IfModule>编辑: ALPN似乎没有启用(不知道这是否可以解释),我的OpenSSL版本是1.1.1c。
发布于 2019-07-30 05:41:13
服务器头:Upgrade: h2,h2c显示HTTP/2协议在服务器端可用.
问题在于您的curl命令行,并且http/2通常是协商的,并不总是立即使用。
请参阅https://curl.haxx.se/docs/http2.html
curl提供了
--http2命令行选项,以启用HTTP/2的使用。curl提供了--http2-prior-knowledge命令行选项,可以在不进行HTTP/1.1升级的情况下使用HTTP/2。
发布于 2019-07-31 09:14:06
确保您的服务器上是否启用了模块。
#cat /etc/apache2/mods-enabled/http2.load 确保有以下一行:
LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so# apache2ctl -M | grep http2 -如果启用,输出类似于以下内容:http2_module (shared)
发布于 2019-07-30 05:15:22
您启用了http2 Apache模块并重新启动了Apache服务吗?
sudo a2enmod http2 sudo systemctl restart apache2
参考资料:https://www.howtoforge.com/how-to-enable-http-2-in-apache/
https://serverfault.com/questions/977212
复制相似问题