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

chrome dev tools

Safari

safari dev tools