我尝试在 ubuntu 18.04 和 apache2 下在我的网站上启用 http2 h2c,但是没有用。以下是我所做的
- 使用 MPM-event 代替 prefork
- 将协议添加到 000-default.conf
<VirtualHost *:80>
ServerName 167.71.149.xxx
DocumentRoot /var/www/php56/folder1
Protocols h2c http/1.1
<Directory /var/www/php56/folder1>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
# Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
</VirtualHost>
- 重启 Apache
但是我使用 chrome(最新版)接收 http/1.1 标头,不知道该检查什么
刚刚
curl -I -k --http2 http://167.71.149.xxx/
HTTP/1.1 101 切换协议升级:h2c 连接:升级
HTTP/2 200 日期:1970 年 1 月 1 日星期四 00:00:00 GMT 服务器:Apache/2.4.29 (Ubuntu) 内容类型:text/html;字符集 = UTF-8
答案1
使用以下命令验证是否已启用 HTTP/2 模块
$ a2enmod http2
$ apache2ctl -M | grep http2
http2_module (shared)
协议行应为:
Protocols h2 h2c http/1.1
答案2
但是我使用 chrome(最新版)接收 http/1.1 标头,不知道该检查什么
浏览器仅支持 HTTPS 上的 HTTP/2:https://stackoverflow.com/questions/34076231/why-do-browser-implementations-of-http-2-require-tls
答案3
从您提供的“curl”输出来看,您的服务器似乎确实支持 HTTP/2。
HTTP/2 200 日期:1970 年 1 月 1 日星期四 00:00:00 GMT 服务器:Apache/2.4.29 (Ubuntu) 内容类型:text/html;字符集 = UTF-8
为了避免切换协议,您可以像这样运行“curl”命令:
curl -I -k --http2-prior-knowledge http://167.71.149.xxx/