Cara Mengaktifkan HTTP/2 di Apache di Ubuntu


Sejak dimulainya World Wide Web (www), protokol HTTP telah berkembang selama bertahun-tahun untuk menghadirkan konten digital yang aman dan cepat melalui Internet.

Versi yang paling banyak digunakan adalah HTTP 1.1 dan meskipun dilengkapi dengan penyempurnaan fitur dan pengoptimalan kinerja untuk mengatasi kekurangan versi sebelumnya, versi ini masih jauh dari beberapa fitur penting lainnya yang telah diatasi oleh HTTP/2.

Apa Batasan HTTP/1.1?

Protokol HTTP/1.1 memiliki kekurangan berikut yang membuatnya kurang ideal terutama ketika menjalankan server web dengan lalu lintas tinggi:

  1. Keterlambatan dalam memuat halaman web karena header HTTP yang panjang.
  2. HTTP/1.1 hanya mampu mengirimkan satu permintaan untuk setiap file per koneksi TCP.
  3. Mengingat bahwa HTTP/1.1 memproses satu permintaan untuk setiap koneksi TCP, browser terpaksa mengirimkan banyak koneksi TCP paralel untuk memproses permintaan secara bersamaan. Hal ini menyebabkan kemacetan TCP dan pada akhirnya pemborosan bandwidth dan degradasi jaringan.

Masalah-masalah yang disebutkan di atas seringkali menyebabkan penurunan kinerja dan tingginya biaya overhead dalam penggunaan bandwidth. HTTP/2 hadir untuk mengatasi masalah ini dan kini menjadi masa depan protokol HTTP.

Keuntungan Menggunakan HTTP/2

Ini menawarkan keuntungan sebagai berikut:

  1. Kompresi header yang meminimalkan permintaan klien dan dengan demikian menurunkan konsumsi bandwidth. Efek yang dihasilkan adalah kecepatan memuat halaman yang cepat.
  2. Multiplexing beberapa permintaan melalui satu koneksi TCP. Baik server maupun klien dapat memecah permintaan HTTP menjadi beberapa frame dan mengelompokkannya kembali di ujung yang lain.
  3. Performa web lebih cepat sehingga menghasilkan peringkat SEO yang lebih baik.
  4. Peningkatan keamanan karena sebagian besar browser utama memuat HTTP/2 melalui HTTPS.
  5. HTTP/2 dianggap lebih mobile-friendly berkat fitur kompresi header.

Oleh karena itu, kami akan mengaktifkan HTTP/2 di Apache di Ubuntu 20.04 LTS dan Ubuntu 18.04 LTS.

Prasyarat:

Sebelum memulai, pastikan Anda mengaktifkan HTTPS di server web Apache sebelum mengaktifkan HTTP/2. Hal ini karena semua browser web mainstream mendukung HTTP/2 melalui HTTPS. Saya memiliki nama domain yang menunjuk ke sebuah instance di Ubuntu 20.04 yang menjalankan server Apache yang diamankan menggunakan sertifikat Let's Encrypt.

Selain itu, disarankan agar Anda memiliki Apache 2.4.26 dan versi yang lebih baru untuk server produksi yang ingin beralih ke HTTP/2.

Untuk memeriksa versi Apache yang Anda jalankan, jalankan perintah:

apache2 -v

Dari keluarannya, Anda dapat melihat bahwa kami menggunakan versi terbaru, yaitu Apache 2.4.41 pada saat artikel ini ditulis.

Aktifkan HTTP/2 di Host Virtual Apache

Untuk memulai, konfirmasikan terlebih dahulu bahwa server web menjalankan HTTP/1.1. Anda dapat melakukan ini di browser dengan membuka bagian alat pengembang di Google chrome menggunakan kombinasi Ctrl +SHIFT + I. Klik tab ‘Jaringan’ dan cari kolom ‘Protokol’.

Selanjutnya, aktifkan modul HTTP/2 di Ubuntu dengan menjalankan perintah berikut.

sudo a2enmod http2

Selanjutnya, cari dan edit file host virtual SSL Anda, jika Anda telah mengaktifkan HTTPS menggunakan Let's Encrypt, file baru akan dibuat dengan le-ssl.conf akhiran .

sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

Masukkan direktif di bawah ini setelah tag .

Protocols h2 http/1.1

Untuk menyimpan perubahan, restart server web Apache.

sudo systemctl restart apache2

Untuk memeriksa apakah HTTP/2 diaktifkan, ambil header HTTP menggunakan perintah curl berikut seperti yang ditunjukkan.

curl -I --http2 -s https://domain.com/ | grep HTTP

Anda harus mendapatkan output yang ditampilkan.

HTTP/2 200

Di browser, muat ulang situs Anda. Kemudian kembali ke alat pengembang dan konfirmasikan HTTP/2 yang ditandai dengan label h2 pada kolom 'Protokol'.

Saat Menggunakan Modul mod_php dengan Apache

Jika Anda menjalankan Apache bersama modul mod_php, Anda perlu beralih ke PHP-FPM. Hal ini karena modul mod_php menggunakan modul MPM prefork yang tidak didukung oleh HTTP/2. Anda perlu menghapus instalasi prefork MPM dan beralih ke modul mpm_event yang akan didukung oleh HTTP/2.

Jika Anda menggunakan modul PHP 7.4 mod_php, misalnya, nonaktifkan seperti yang ditunjukkan:

sudo a2dismod php7.4 

Setelah itu, nonaktifkan modul MPM prefork.

sudo a2dismod mpm_prefork

Setelah menonaktifkan modul, selanjutnya aktifkan modul Event MPM, Fast_CGI, dan setenvif seperti yang ditunjukkan.

sudo a2enmod mpm_event proxy_fcgi setenvif

Instal PHP-FPM di Ubuntu

Selanjutnya, instal dan mulai PHP-FPM seperti yang ditunjukkan.

sudo apt install php7.4-fpm 
sudo systemctl start php7.4-fpm

Kemudian aktifkan PHP-FPM untuk memulai saat boot.

sudo systemctl enable php7.4-fpm

Selanjutnya, aktifkan PHP-FPM sebagai pengendali PHP Apache dan mulai ulang server web Apache agar perubahan dapat diterapkan.

sudo a2enconf php7.4-fpm

Aktifkan Dukungan HTTP/2 di Apache Ubuntu

Kemudian aktifkan modul HTTP/2 seperti sebelumnya.

sudo a2enmod http2

Mulai ulang Apache untuk menyinkronkan semua perubahan.

sudo systemctl restart apache2

Terakhir, Anda dapat menguji apakah server Anda menggunakan protokol HTTP/2 menggunakan perintah curl seperti yang ditunjukkan.

curl -I --http2 -s https://domain.com/ | grep HTTP

Anda juga dapat memilih untuk menggunakan alat pengembang di browser Google Chrome untuk memverifikasi seperti yang didokumentasikan sebelumnya. Kita telah mengakhiri panduan ini, Kami harap informasi ini bermanfaat bagi Anda dan Anda dapat dengan nyaman mengaktifkan HTTP/2 di Apache dengan mudah.