Mengaktifkan HTTP/2 di Nginx

Dapatkan update terbaru Linuxku.com di kanal Telegram https://telegram.me/linuxkudotcom.
Teknologi kian hari kian meningkat seiring perkembangan zaman. Tak luput pula berkembangnya teknologi pada HTTP (Hypertext Transfer Protocol). HTTP ini adalah protokol jaringan lapisan aplikasi yang digunakan untuk sistem informasi terdistribusi, kolaboratif, dan menggunakan hipermedia. Penggunaannya banyak pada pengambilan sumber daya yang saling terhubung dengan tautan, yang disebut dengan dokumen hiperteks, yang kemudian membentuk World Wide Web.

HTTP/2 memegang peranan penting bagi masa depan Internet yang menawarkan akses lebih cepat dan aman berkat teknologi kompresi dan enkripsi yang lebih efisien. Perbedaan mendasar HTTP 1.1 dengan HTTP/2 terletak pada cara kerjanya, dimana HTTP 1.1 hanya menggunakan satu koneksi ketika menampilkan suatu halaman situs, sehingga elemen resource seperti file HTML, file CSS, gambar dan file JavaScript yang terdapat dalam situs tersebut diminta secara satu persatu.

Kelebihan HTTP/2

  1. Mengurangi latensi hingga dapat mempercepat loading speed di browser.
  2. Kompatibel dengan HTTP 1.1 karena dibangun berdasarkan HTTP 1.1

Kebutuhan:

Memiliki sertifikat SSL, bisa Anda baca:

  1. http://www.linuxku.com/2016/08/membuat-sertifikat-self-signed-ssl_4.html
  2. http://www.linuxku.com/2016/07/memasang-ssl-lets-encrypt-untuk-apache.html

Kabar baiknya sejak versi 1.9.5 Nginx sudah memberikan dukungan pada HTTP/2. Kabar buruknya tidak semua distro GNU/Linux yang dikhususkan untuk server mendapatkan versi tersebut, oleh karena itu Anda membutuhkan upgrading.

Dalam artikel di sini penulis tidak menjelaskan panjang lebar mengenai HTTP/2 kelebihan berserta manfaatnya, fokus tulisan di sini yakni tentang cara menerapkan HTTP/2 pada Nginx. Untuk informasi lebih jauh mengenai HTTP/2 ini, Anda bisa baca referensi di bawah pada subjudul “Sumber”.

Menerapkan Nginx dengan HTTP/2

Perlu diketahui bahwa penulis di sini tidak menyertakan untuk pengguna Ubuntu 14.04 atau ke bawahnya, hanya untuk versi Ubuntu 16.04. Meskipun di Ubuntu 14.04 bisa Anda gunakan Nginx mainline tapi penulis tidak menyarankan. Di Ubuntu 16.04, Nginx memasuki versi 1.10.x ini artinya Anda bisa menggunakan fasilitas module HTTP2 dari Nginx.

Langsung saja, untuk pengguna Ubuntu 16.04, bisa langsung pada Nginx dari official repository:

$ sudo apt install nginx

Untuk pengguna Centos 6/7, Anda perlu menambahkan lumbung (repository).

$ sudo nano /etc/yum.repos.d/nginx.repo

Lalu masukan:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Kemudian lansung install Nginx tersebut:

$ sudo yum install nginx

Untuk pengguna Ubuntu 16.04, masuk ke direktori  /etc/nginx/sites-available/ di sesuaikan dengan Virtualhost Anda. Penulis asumsikan di vhost default:

$ sudo nano /etc/nginx/sites-available/default

Untuk pengguna Centos 6/7, masuk ke direktori /etc/nginx/

$ sudo nano /etc/nginx/nginx.conf

Lebih lanjut Anda bisa baca pada tulisan sebelumnya:
http://www.linuxku.com/2016/05/menerapkan-virtualhost-untuk-keperluan.html

Langkah selanjutnya untuk seluruhnya (Ubuntu maupun Centos) masukan skrip seperti contoh di bawah ini:

server {

listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

ssl_certificate      cert.pem;
ssl_certificate_key  cert.key;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
}

Kemudian cek konfigurasi Nginx Anda apakah sudah benar atau belum? Dengan cara:

$ sudo nginx -t

Jika terdapat pesan berikut:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Jika sudah sukses langsung saja Anda restart Nginx tersebut:

$ sudo service nginx restart

Untuk mengetahui apakah situs Anda sudah menggunakan HTTP/2 atau belum bisa gunakan tool di bawah ini:
https://tools.keycdn.com/http2-test 
Contohnya pada https://situsali.com, sudah menggunakan HTTP/2

Untuk linuxku.com memang belum menggunakan teknologi HTTP/2, karena website ini menggunakan blogspot.

Semoga bermanfaat 🙂

Sumber:

  • http://blog.arijulianto.com/2015/09/teknologi-baru-web-www-http-2.html
  • http://internetsehat.id/2015/02/setelah-16-tahun-selamat-datang-http2/
  • http://selular.id/news/2015/11/dibandingkan-http-1-1-apa-keunggulan-internet-protocol-http2/
  • https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-with-http-2-support-on-ubuntu-16-04
  • http://serverfault.com/questions/730810/installing-nginx-1-9-on-centos7-vps
  • http://stackoverflow.com/questions/28524512/which-web-servers-support-http-2
  • https://bjornjohansen.no/enable-http2-on-nginx
  • https://blog.cloudflare.com/open-sourcing-our-nginx-http-2-spdy-code/

Yakin Ngga Mau Diskusi ?

Yuk diskusi cerdas. Gunakan nama asli agar komentar Anda disetujui.