Http/2 adalah versi baru dari protocol http, yang mengantikan versi sebelumnya yaitu http/1.1 . http/2 dirilis pada tahun 2015 dan sudah terdaftar pada standar IETF. http/2 sudah mendukung beberapa web server diantaranya adalah nginx. untuk menerapkan http/2 pada website, kita harus mengunakan https.
Perbedaan Htpp/1.1 vs Http/2
- Single, Persistent Connection – ini yang cukup membedakan dengan http/1.1 yaitu single connection berarti hanya ada satu koneksi yang digunakan untuk meload halaman web, seperti yang ada pada gambar diatas, mengunakan koneksi yang sama selama halaman web terbuka.
 - Multiplexing – mungkin secara sederhananya adalah kita dapat merequest dan merespon beberapa objek dari web dengan mengunakan single koneksi, sehingga proses transfer data semakin cepat.
 - Header compression dan Binary encoding – biasanya web browser mengirimkan header untuk menginformasikan server tersebut mendukung kompresi data gzip. pada http/2 ini tidak hanya mengunakan single connection tetapi juga memberikan compresi pada setiap data jadi data yang awalnya besar dikompres menjadi lebih kecil sehingga prosesnya menjadi lebih cepat, dalam memberikan respon ke klien
 - SSL Encrytion – pada http/2 wajib hukumnya mengunakan ssl/tls dalam hal ini adalah https, pada http/2 ini selain mempercepat respon dengan single connection , dia juga memprioritaskan keamanan data.
 
segitu aja teorinya, kita langsung aja ke pokok pembahasan 😀
sebelumnya anda harus menginstall nginx disini , setelah itu kita mengenerate kunci untuk mengaktifkan https
| 
					 1  | 
						 cd /etc/ssl/  | 
					
kita akan membuat kunci di folder tersebut
Membuat kunci private dengan nama dummy, panjangnya 2048 bit
| 
					 1  | 
						openssl genrsa -out dummy.key 2048  | 
					
membuat sertifikat permohonan atau CSR (csertificate of signin request)
| 
					 1  | 
						openssl req -new -key dummy.key -out dummy.csr  | 
					
| 
					 1 2 3 4 5 6 7  | 
						Country Name (2 letter code) [XX]:ID State or Province Name (full name) []:Jawa Barat Locality Name (eg, city) [Default City]:Depok Organization Name (eg, company) [Default Company Ltd]:Routecloud Networks Organizational Unit Name (eg, section) []:Routecloud Secure Common Name (eg, your name or your server's hostname) []:www.routecloud.net Email Address []:alan@routecloud.net  | 
					
kemudian supaya certificate permohonan kita valid maka harus di tandatangai dulu mengunakan kunci private yang sudah kita buat, kita bisa juga mengunakan jasa validasi kunci seperti comodo, digicert dll
| 
					 1  | 
						openssl x509 -req -days 365 -in dummy.csr -signkey dummy.key -out dummy.crt  | 
					
kemudian konfig nginx
| 
					 1  | 
						nano /etc/nginx/nginx.conf  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53  | 
						   server { 	listen       80;         server_name  localhost;         return  301 https://10.212.113.10/;         #charset koi8-r;         root /etc/nginx/html;         index index.php;          #access_log  logs/host.access.log  main;         location / { #	try_files $uri/ $uri /index.php?$query_string;         try_files $uri $uri/ /index.php?$args;         }         # redirect server error pages to the static page /50x.html         # 	error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         } 	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000         # 	location ~ \.php$ { #           root           html;             fastcgi_pass   127.0.0.1:9000;             fastcgi_index  index.php;             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;             include        fastcgi_params;         }     } server {         listen  443 ssl http2; 	ssl_certificate /etc/ssl/dummy.crt;         ssl_certificate_key /etc/ssl/dummy.key;         root /etc/nginx/html;         index index.php;         location / {         # try_files $uri/ $uri /index.php?$query_string;         try_files $uri $uri/ /index.php?$args;         }         location ~ \.php$ { #           root          /etc/nginx/html;             fastcgi_pass   127.0.0.1:9000;             fastcgi_index  index.php;             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;             include        fastcgi_params;         } }  | 
					
pada konfigurasi nginx, kita meredirect setiap koneksi http untuk diarahkan ke https
Testing http/1.1
Testing http/2
nah sekarang web server kita sudah menjadi http/2.0
Sekarang saatnya ngebanchmark performa http/2 vs http/1.1 mengunakan tool ab, saya akan memberikan 1000 request pada http/1.1 dan http/2
pada http/1.1
| 
					 1  | 
						ab -n 1000 -c 100  http://10.212.113.11/  | 
					
Hasilnya :
pada http/2.0
| 
					 1  | 
						ab -n 1000 -c 100  http://10.212.113.10/  | 
					
Hasilnya
Wooow, hasilnya sangat signifikan, antara htt1.1 vs http2.0
Tabel perbandingan waktu bancmark 1000 request
| Http/1.1 | Â Http/2.0 | |
| waktu | Â 4.651 second | 0.481 second | 
mungkin cukup sekian dulu, hasil pengujian kecil tentang http/2.0 pada nginx, semoga bisa bermanfaat.
wasallam
Isra Mi’raj Nabi Muhammad Shallallahu ‘alaihi wasallam 1437 H






Komentar