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

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

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:

  1. Opóźnienia w ładowaniu stron internetowych z powodu długich nagłówków HTTP.
  2. HTTP/1.1 może wysłać tylko jedno żądanie każdego pliku na połączenie TCP.
  3. 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:

  1. 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.
  2. 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.
  3. Szybsze występy internetowe, które w konsekwencji prowadzą do lepszego rankingu SEO.
  4. Ulepszone bezpieczeństwo, ponieważ większość przeglądarek głównego nurtu ładuje HTTP/2 nad HTTPS.
  5. 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 
Sprawdź wersję Apache w Ubuntu

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.

Potwierdź wersję protokołu HTTP

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

$ sudo a2enmod http2 
Włącz HTTP/2 na Ubuntu

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 
Włącz HTTP/2 na Apache

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 
Sprawdź obsługę HTTP/2 w Apache

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.

Potwierdź wersję protokołu HTTP/2

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 
Wyłącz moduł MOD_PHP

Następnie wyłącz prefork MPM moduł.

$ sudo a2dismod mpm_prefork 
Wyłącz Prefork MPM w Apache

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 
Włącz MPM zdarzenia w Apache

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 
Sprawdź protokół HTTP/2 w Apache

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ą.