Cara Mengaktifkan HTTP/2 di Nginx

 CentOS, Https, Nginx, SSL, Tutorial

HTTP/2 (HTTP/2.0) adalah versi terbaru dari protokol HTTP/1 yang telah dikembangkan oleh divisi Internet Engineering Task Force (IETF). Dasar pengembangan Protokol HTTP/2 didasarkan pada Google SPDY, yang dirancang untuk mempercepat loading halaman web dan pengalaman browsing. HTTP/2 ini kompatibel dengan HTTP1.1 dan menggunakan sebagian besar teknologi yang sama, tetapi lebih efisien dan memungkinkan server untuk merespon dengan lebih banyak konten daripada yang diminta, menghilangkan kebutuhan komputer pengguna terus mengirim permintaan informasi lebih lanjut sampai situs benar-benar ditampilkan.
Beberapa kelebihan dari HTTP/2 dibanding HTTP/1

  1. Server push
    server akan lebih proaktif mengirimkan data ke browser. Jadi browser tidak perlu menunggu untuk mengirimkan requests ke server. Server akan menduga data apa yang akan diminta browser berikutnya, sehingga server dapat mengirimkan data tersebut bahkan sebelum diminta
  2. Multiplexing
    Menjadikan permintaan atas elemen resource antara browser dan server tersebut lebih ringkas dan cepat dengan menggunakan teknologi “multiplexing” dimana dalam satu koneksi, server bisa memproses permintaan atas beberapa elemen resource secara paralel (multi-threading)
  3. Encryption and HTTP header compression
    Koneksi HTTPS berjalan lebih cepat dan lebih aman berkat teknologi kompresi dan enkripsi yang lebih efisien

Protokol HTTP/2 hanya support di Nginx versi 1.9.5 keatas, HTTP/2 dan SPDY ini tidak bisa mengaktifkan keduanya secara bersaman. Jika dilakukan, akan mendapatkan error saat akan menjalankan ataupun merestart Nginx seperti dibawah ini

nginx: [warn] invalid parameter “spdy”: ngx_http_spdy_module was superseded by ngx_http_v2_module in /etc/nginx/conf.d/jadoel.info.conf
Starting nginx: nginx: [warn] invalid parameter “spdy”: ngx_http_spdy_module was superseded by ngx_http_v2_module

Cara Mengaktifkan HTTP2 di Nginx
Postingan ini dibuat karena belum lama ini saya update server jadoel.info (maklum lama tak diurus servernya klo sudah gak ada masalah :D), setelah update selesai dan restart nginx php-fpm dan mariadb terjadilah error seperti diatas. Setelah berkunjung ketempat simbah, ternyata penyebabnya karena nginx versi diatas 1.9.5 sudah tidak support lagi dengan SPYD dan disuruh beralih pada http/2. Setelah saya cek versi nginx di server ternyata benar sudah update pada versi 1.10.1
untuk mengecek versi nginx dengan perintah berikut

kurang lebih seperti ini

Untuk mengaktifkan HTTP/2, memerlukan nginx virtualhost yang sebelumnya sudah aktif SSL/TLS. Dengan kata lain memerlukan sertifikat SSL karena HTTP/2 hanya bisa diimplementasikan pada SSL/TLS.
Mengaktifkan HTTP/2 semudah seperti mengaktifkan SPDY. Yakni dengan menambahkan parameter http2 pada baris listen di file konfigurasi virtualhost. sebelum mengaktifkan http/2 pastikan bahwa:

  • Pertama Pastikan sudah install nginx
    untuk tutorialnya ada pada artikel cara install nginx di centos
  • Kedua pastikan nginx support http/2 module (–with-http_v2_module)
    untuk mengeceknya dengan perintah berikut
    nanti akan keluar output versi nginx beserta modulnya

Dan berikut tutorial cara mengaktifkan/enable HTTP/2 di Nginx khususnya pada centos
Edit konfigurasi ssl/https nginx vhost untuk mengaktifkan HTTP/2

cari pada listen 443 ssl

kemudian ganti listen 443 spdy; menjadi listen 443 http2; kurang lebih seperti ini

kurang lebih config nginx ssl seperti ini:

Terakhir restart nginx

dan error seperti diatas pun hilang pada kasus server jadoel.info ini, eh http/2 sudah diaktifkan dink haha
Demikianlah tutorial tentang cara mengaktifkan atau enable HTTP/2 di Nginx pada CentOS, semoga bermanfaat 😆