Hypertext Transfer Protocol Version 2 (HTTP/2) adalah versi terbaru dari protokol HTTP, diterbitkan sebagai standar IETF di RFC 7540 pada tahun 2015. Fokus protokol adalah pada kinerja; khususnya, latensi yang dirasakan pengguna akhir, penggunaan sumber daya jaringan dan server. Salah satu tujuan utama adalah untuk memungkinkan penggunaan koneksi tunggal dari browser ke situs Web.
Protokol ini backward compatible, sehingga metode HTTP, kode status, dan semantik sama dengan untuk versi protokol sebelumnya. Apache memiliki dukungan HTTP/2 sejak versi 2.4.17.
Dalam tutorial ini, saya akan menganggap bahwa Anda sudah memiliki konfigurasi TLS yang berfungsi, dan Anda telah memiliki versi Apache yang terinstal pada distribusi pilihan Linux Anda, dan Anda tahu cara menggunakan Let’s Encrypt, atau Anda tahu cara membuat sertifikat self-signed.
Tutorial ini telah diuji pada Debian 9, Debian 10 dan Ubuntu 18.04 LTS.
Prasyarat
Untuk mengaktifkan HTTP/2 di Apache, Anda harus memenuhi persyaratan berikut:
- Masuk sebagai root atau user dengan hak sudo
- Anda harus mengaktifkan HTTPS di server Anda. Semua browser utama memungkinkan penggunaan HTTP/2 hanya melalui HTTPS. Selain itu, versi protokol TLS>=1.2 dengan cipher suites modern juga diperlukan.
- Selanjutnya, pastikan Anda menjalankan Apache 2.4.17 atau yang lebih baru karena HTTP/2 didukung dari versi ini dan yang lebih baru.
- Pastikan bahwa klien / browser Anda benar-benar mendukung HTTP/2.
Sebelum Aktivasi HTTP/2 di Apache
Sebelum kita dapat mengganti modul Apache MPM ke mpm_event
, kita harus menonaktifkan mode mod_php
dan menggantinya dengan mode PHP-FPM yang lebih modern.
Untuk menggantinya, diperlukan perintah berbeda untuk setiap versi sistem Operasi, silakan gunakan yang sesuai dengan sistem yang Anda instal.
Untuk Debian 9
sudo apt-get install php7.0-fpm sudo a2dismod php7.0 sudo a2enconf php7.0-fpm sudo a2enmod proxy_fcgi
Untuk Debian 10
sudo apt-get install php7.3-fpm sudo a2dismod php7.3 sudo a2enconf php7.3-fpm sudo a2enmod proxy_fcgi
Untuk Ubuntu 18.04 LTS
sudo apt-get install php7.2-fpm sudo a2dismod php7.2 sudo a2enconf php7.2-fpm sudo a2enmod proxy_fcgi
Aktifkan Apache MPM yang kompatibel dengan HTTP/2
Secara default, Apache akan menggunakan MPM prefork. MPM ini tidak kompatibel dengan HTTP/2, jadi kita harus menggantinya dengan modul mpm_event yang lebih modern.
Pertama, kita perlu menonaktifkan modul mpm_prefork
:
sudo a2dismod mpm_prefork
Kemudian kita aktifkan modul mpm_event
:
sudo a2enmod mpm_event
Aktifkan dukungan HTTP/2 di Apache
Agar HTTP/2 berfungsi di Apache, Anda harus mengaktifkan dan memuat modul SSL dan HTTP/2. Untuk melakukannya, Anda dapat menjalankan yang berikut di terminal Anda:
sudo a2enmod ssl sudo a2enmod http2
Untuk mengaktifkan modul-modul baru ini, Anda perlu restart Apache untuk menerapkan perubahan:
sudo systemctl restart apache2
Setelah mengaktifkan dan memuat modul Apache yang diperlukan, navigasikan ke direktori konfigurasi Apache Anda dan edit konfigurasi Apache.
Untuk mengaktifkan HTTP/2 di web server Apache, tambahkan pengaturan berikut ke konfigurasi Apache global atau di dalam virtual host domain Anda.
Protocols h2 http/1.1
Berikut ini adalah konfigurasi virtual server minimal yang dapat digunakan untuk mengaktifkan HTTP/2 di virtual host:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public_html/example.com
SSLEngine on
SSLCertificateKeyFile /path/to/private.pem
SSLCertificateFile /path/to/cert.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1 </VirtualHost>
Untuk memeriksa apakah server Anda mendukung HTTP/2, Anda dapat menggunakan dev tools di browser Anda. Di bawah ini adalah screenshots dari browser Google Chrome dan Apple Safari yang menunjukkan HTTP/2 berhasil di domain https://example.com.
Chrome
Safari