Jak włączyć HTTP/2 w Apache na Ubuntu

- 3027
- 73
- Ignacy Modzelewski
Od momentu powstania World Wide Web (www), Http Protokół ewoluował na przestrzeni lat, aby dostarczyć bezpieczne i szybkie treści cyfrowe przez Internet.
Najczęściej używana wersja to HTTP 1.1 I chociaż pakuje się z ulepszeniami funkcji i optymalizacjami wydajności w celu rozwiązania niedociągnięć wcześniejszych wersji, nie ma kilku innych istotnych funkcji, które zostały rozwiązane przez HTTP/2.
Jakie są ograniczenia HTTP/1.1?
HTTP/1.1 Protokół jest pełen następujących niedociągnięć, które sprawiają, że jest mniej idealny, szczególnie podczas uruchamiania serwerów sieciowych o wysokim ruchu:
- Opóźnienia w ładowaniu stron internetowych z powodu długich nagłówków HTTP.
- HTTP/1.1 może wysłać tylko jedno żądanie każdego pliku na połączenie TCP.
- Biorąc pod uwagę, że HTTP/1.1 przetwarza jedno żądanie każdego połączenia TCP, przeglądarki są zmuszone do wysyłania zalewu równoległych połączeń TCP, aby jednocześnie przetwarzać żądania. Prowadzi to do zatłoczenia TCP, a ostatecznie marnotrawstwa przepustowości i degradacji sieci.
Wyżej wymienione problemy często doprowadziły do degradacji wydajności i wysokich kosztów ogólnych w użyciu przepustowości. HTTP/2 wszedł na zdjęcie, aby rozwiązać te problemy i jest teraz przyszłością protokołów HTTP.
Zalety korzystania z HTTP/2
Oferuje następujące zalety:
- Kompresja nagłówka, która minimalizuje żądania klienta, a tym samym obniża zużycie przepustowości. Wynikowym efektem są szybkie prędkości obciążenia strony.
- Multipleksowanie kilku żądań nad jednym połączeniem TCP. Zarówno serwer, jak i klient mogą rozbić żądanie HTTP na wiele klatek i przegrupować je na drugim końcu.
- Szybsze występy internetowe, które w konsekwencji prowadzą do lepszego rankingu SEO.
- Ulepszone bezpieczeństwo, ponieważ większość przeglądarek głównego nurtu ładuje HTTP/2 nad HTTPS.
- HTTP/2 jest uważane za bardziej przyjazne dla urządzeń mobilnych dzięki funkcji kompresji nagłówka.
To powiedziawszy, umożliwimy HTTP/2 NA Apache NA Ubuntu 20.04 LTS I Ubuntu 18.04 LTS.
Wymagania wstępne:
Przed rozpoczęciem upewnij się, że włączysz Https na serwerze Apache przed włączeniem HTTP/2. Dzieje się tak, ponieważ wszystkie główne przeglądarki internetowe obsługują HTTP/2 nad Https. Mam nazwę domeny wskazaną na instancję Ubuntu 20.04 który uruchamia serwer Apache zabezpieczony za pomocą certyfikatu Let's Encrypt.
Poza tym zaleca się Apache 2.4.26 a później wersje serwerów produkcyjnych zamierzających przejść do HTTP/2.
Aby sprawdzić wersję Apache Uruchomisz, wykonaj polecenie:
$ apache2 -V

Ze wyjścia widać, że używamy najnowszej wersji, czyli Apache 2.4.41 W momencie napisania tego artykułu.
Włącz HTTP/2 na wirtualnym hoście Apache
Aby rozpocząć, najpierw potwierdź, że WebServer działa HTTP/1.1. Możesz to zrobić w przeglądarce, otwierając sekcję narzędzi programistów Google Chrome używając Ctrl + Shift + I
połączenie. Kliknij na 'Sieć`` Tab i zlokalizuj ''Protokółkolumna.

Następnie włącz HTTP/2 moduł na Ubuntu Uruchamiając następujące polecenie.
$ sudo a2enmod http2

Następnie zlokalizuj i edytuj swój SSL wirtualny plik hosta, jeśli włączyłeś HTTPS za pomocą Zaszypujmy, Nowy plik jest tworzony z le-ssl.conf przyrostek.
$ sudo vim/etc/apache2/witryny-obserwowane/Twój domena-name-le-ssl.conf
Wstaw dyrektywa poniżej po etykietka.
Protokoły H2 HTTP/1.1

Aby zapisać zmiany, uruchom ponownie Apache Webserver.
$ sudo systemctl restart apache2
Aby sprawdzić, czy HTTP/2 jest włączony, pobieraj nagłówki HTTP za pomocą następującego polecenia Curl jako pokaz.
$ curl -i - -http2 -s https: // domena.com/ | GREP HTTP

Powinieneś uzyskać pokazane dane wyjściowe.
HTTP/2 200
W przeglądarce ponownie załaduj swoją witrynę. Następnie wróć do narzędzi programistycznych i potwierdź HTTP/2 oznaczone przez H2
etykieta na 'Protokółkolumna.

Podczas korzystania z modułu MOD_PHP z Apache
Jeśli biegasz Apache obok mod_php moduł, musisz przejść na PHP-FPM. To dlatego, że mod_php Moduł używa prefork MPM moduł, który nie jest obsługiwany przez HTTP/2. Musisz odinstalować prefork MPM i przełącz się na mpm_event moduł, który będzie obsługiwany przez HTTP/2.
Jeśli używasz PHP 7.4 mod_php Na przykład moduł wyłącz go, jak pokazano:
$ sudo a2dismod php7.4

Następnie wyłącz prefork MPM moduł.
$ sudo a2dismod mpm_prefork

Po wyłączeniu modułów, następnie włącz Wydarzenie MPM, Fast_cgi, I setenvif moduły, jak pokazano.
$ sudo a2enmod mpm_event proxy_fcgi setenvif

Zainstaluj PHP-FPM na Ubuntu
Następnie zainstaluj i uruchom PHP-FPM jak pokazano.
$ sudo apt Zainstaluj php7.4-fpm $ sudo systemctl start php7.4-fpm
Następnie włącz PHP-FPM zacząć od czasu rozruchu.
$ sudo systemctl włącz php7.4-fpm
Następnie włącz PHP-FPM Jako obsługa PHP Apache i uruchom ponownie serwera Apache, aby zmiany zostały wykonane.
$ sudo a2enconf php7.4-fpm
Włącz obsługę HTTP/2 w Apache Ubuntu
Następnie włącz moduł HTTP/2 jak poprzednio.
$ sudo a2enmod http2
Uruchom ponownie Apache, aby zsynchronizować wszystkie zmiany.
$ sudo systemctl restart apache2
Na koniec możesz sprawdzić, czy Twój serwer korzysta HTTP/2 protokół za pomocą polecenia curl, jak pokazano.
$ curl -i - -http2 -s https: // domena.com/ | GREP HTTP

Możesz także wybrać korzystanie z narzędzi programistycznych na Google Chrome przeglądarka do weryfikacji, jak udokumentowano wcześniej. Mamy do końca tego przewodnika, mamy nadzieję, że informacje są cenne i że możesz wygodnie włączyć HTTP/2 NA Apache z łatwością.