Как да активирате HTTP/2 в Apache Web Server на Ubuntu и Debian
Hypertext Transfer Protocol Version 2 ( HTTP/2 ) е най-новата версия на HTTP протокола, публикувана като IETF стандарт в RFC 7540 през 2015 г. Фокусът на протокола е върху производителността; по-конкретно възприеманата от крайния потребител латентност, използване на мрежови и сървърни ресурси. Една от основните цели е да се позволи използването на една връзка от браузъри към уеб сайт. Протоколът е обратно съвместим, така че HTTP методите, кодовете на състоянието и семантиката са същите като при предишните версии на протокола. Apache поддържа HTTP/2 от версия 2.4.17. В този урок ще приема, че вече имате работеща TLS конфигурация и че имате инсталирана необходимата версия на Apache на избраната от вас Linux дистрибуция и че знаете как да използвате Let's Encrypt или знаете как да издаване на само подписан сертификат.

Този урок е тестван на Debian 11 , Debian 10, Debian 9, Ubuntu 22.04 LTS , Ubuntu 20.04 LTS и Ubuntu 18.04 LTS.
Предпоставки
За да активирате HTTP/2 в Apache, ще трябва да изпълните следните изисквания:
Преди да можем да превключим модула Apache MPM в следващата стъпка към mpm_event, ще трябва да деактивираме стария режим mod_php и да го заменим с по-модерния режим PHP-FPM. Командите се различават за всяка версия на операционната система, моля, използвайте тези, които отговарят на вашата инсталирана система.
Ubuntu 22.04 LTS
Debian 11
Ubuntu 20.04 LTS
Debian 10
Ubuntu 18.04 LTS
Debian 9
Enable an Apache MPM that is compatible with HTTP/2
По подразбиране Apache ще използва prefork MPM. Този MPM не е съвместим с HTTP/2, така че ще трябва да го заменим с по-модерния модул mpm_event.
Първо деактивираме модула mpm_prefork:
След това активираме модула mpm_event:
Активирайте поддръжката на HTTP/2 в Apache
За да накарате HTTP/2 да работи на Apache , трябва да активирате и заредите SSL и HTTP/2 модули. За да направите това, можете да изпълните следното във вашия терминал:
и тогава
За да активирате тези нови модули, трябва да изпълните:
След като активирате и заредите необходимите модули на Apache, отидете до вашата конфигурационна директория на Apache и редактирайте конфигурацията на Apache.
За да активирате HTTP/2 на вашия уеб сървър на Apache, добавете едно от следните към вашата глобална конфигурация на Apache или вътре в определен виртуален хост.
Ето минималната конфигурация на виртуален сървър, която може да се използва за активиране на HTTP/2 в някои виртуални хостове:
Hypertext Transfer Protocol Version 2 ( HTTP/2 ) е най-новата версия на HTTP протокола, публикувана като IETF стандарт в RFC 7540 през 2015 г. Фокусът на протокола е върху производителността; по-конкретно възприеманата от крайния потребител латентност, използване на мрежови и сървърни ресурси. Една от основните цели е да се позволи използването на една връзка от браузъри към уеб сайт. Протоколът е обратно съвместим, така че HTTP методите, кодовете на състоянието и семантиката са същите като при предишните версии на протокола. Apache поддържа HTTP/2 от версия 2.4.17. В този урок ще приема, че вече имате работеща TLS конфигурация и че имате инсталирана необходимата версия на Apache на избраната от вас Linux дистрибуция и че знаете как да използвате Let's Encrypt или знаете как да издаване на само подписан сертификат.

Този урок е тестван на Debian 11 , Debian 10, Debian 9, Ubuntu 22.04 LTS , Ubuntu 20.04 LTS и Ubuntu 18.04 LTS.
Предпоставки
За да активирате HTTP/2 в Apache, ще трябва да изпълните следните изисквания:
- Първо, трябва да активирате HTTPS на вашия сървър. Всички основни браузъри позволяват използването на HTTP/2 само през HTTPS. Освен това е необходима версия на протокола TLS >= 1.2 с модерни пакети за шифроване.
- След това се уверете, че използвате Apache 2.4.17 или по-нова версия, защото HTTP/2 се поддържа от тази версия и нагоре.
- Също така се уверете, че вашият клиент/браузър действително поддържа HTTP/2.
Преди да можем да превключим модула Apache MPM в следващата стъпка към mpm_event, ще трябва да деактивираме стария режим mod_php и да го заменим с по-модерния режим PHP-FPM. Командите се различават за всяка версия на операционната система, моля, използвайте тези, които отговарят на вашата инсталирана система.
Ubuntu 22.04 LTS
Code:
sudo apt-get install php8.1-fpm
sudo a2dismod php8.1
sudo a2enconf php8.1-fpm
sudo a2enmod proxy_fcgi
Debian 11
Code:
sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi
Ubuntu 20.04 LTS
Code:
sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi
Debian 10
Code:
sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi
Ubuntu 18.04 LTS
Code:
sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi
Debian 9
Code:
sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi
Enable an Apache MPM that is compatible with HTTP/2
По подразбиране Apache ще използва prefork MPM. Този MPM не е съвместим с HTTP/2, така че ще трябва да го заменим с по-модерния модул mpm_event.
Първо деактивираме модула mpm_prefork:
Code:
sudo a2dismod mpm_prefork
След това активираме модула mpm_event:
Code:
sudo a2enmod mpm_event
Активирайте поддръжката на HTTP/2 в Apache
За да накарате HTTP/2 да работи на Apache , трябва да активирате и заредите SSL и HTTP/2 модули. За да направите това, можете да изпълните следното във вашия терминал:
Code:
sudo a2enmod ssl
Code:
sudo a2enmod http2
За да активирате тези нови модули, трябва да изпълните:
Code:
sudo systemctl restart apache2
След като активирате и заредите необходимите модули на Apache, отидете до вашата конфигурационна директория на Apache и редактирайте конфигурацията на Apache.
За да активирате HTTP/2 на вашия уеб сървър на Apache, добавете едно от следните към вашата глобална конфигурация на Apache или вътре в определен виртуален хост.
Протоколи h2 http/1.1
Ето минималната конфигурация на виртуален сървър, която може да се използва за активиране на HTTP/2 в някои виртуални хостове:
Code:
<VirtualHost _default_:443>
ServerAdmin [EMAIL]info@mysite.com[/EMAIL]
DocumentRoot /raid/www/mysite
ServerName mysite.com
ServerAlias [URL='http://www.mysite.com']www.mysite.com[/URL]
SSLCertificateFile /etc/letsencrypt/live/mysite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
############################### HTTP2 ###########################
[B]SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1[/B]
</VirtualHost>
Last edited by a moderator: