Я пытаюсь включить http2 h2c на моем веб-сайте под ubuntu 18.04 и apache2, но это не работает. вот что я сделал

  1. использовать MPM-событие вместо 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

Но я получаю заголовки http / 1.1 с использованием хрома (обновленный) и не знаю, что проверять.

Только что сделал

 curl -I -k --http2 http://167.71.149.xxx/

HTTP / 1.1 101 Обновление протоколов коммутации: соединение h2c: обновление

HTTP / 2 200 Дата: Чт, 01 января 1970, 00:00:00 Сервер по Гринвичу: Apache / 2.4.29 (Ubuntu) тип содержимого: text / html; charset = UTF-8

answer

Убедитесь, что вы включили модуль HTTP / 2 с помощью

$ a2enmod http2
$ apache2ctl -M | grep http2
 http2_module (shared)

Строка протоколов должна гласить:

Protocols h2 h2c http/1.1

But im receiving the http/1.1 headers using chrome (up to date) and dont know what to check for

Браузеры поддерживают только HTTP / 2 через HTTPS: https://stackoverflow.com/questions/34076231/why-do-browser-implementations-of-http-2-require-tls