无法在 apache2 上使用 http2 h2c

无法在 apache2 上使用 http2 h2c

我尝试在 ubuntu 18.04 和 apache2 下在我的网站上启用 http2 h2c,但是没有用。以下是我所做的

  1. 使用 MPM-event 代替 prefork
  2. 将协议添加到 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>

  1. 重启 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/

相关内容