Tutorial ini akan menunjukkan cara mengaktifkan protokol HTTP/2 dengan Nginx di server Debian 8 untuk mempercepat pemuatan halaman web. Ada 2 persyaratan.
- Nginx versi 1.9.5 atau lebih tinggi, dibuat dengan OpenSSL 1.0.2
- HTTPS diaktifkan
Mari kita atasi ini satu per satu.
Menginstal Nginx dari Jessie Backports Repo
ALPN (Application Layer Protocol Negotiation) adalah ekstensi TLS yang memungkinkan server untuk menegosiasikan protokol HTTP/2 dengan browser web. Tanpa ALPN, koneksi HTTP/2 tidak dapat dibuat, meskipun server web dan browser web mendukung HTTP/2. Pustaka OpenSSL mendukung pernyataan ALPN dengan versi 1.0.2.
Debian 8 memiliki OpenSSL 1.0.1. Untuk memeriksa versi OpenSSL Anda, jalankan
openssl version
Harap dicatat bahwa tidak perlu menginstal OpenSSL 1.0.2 pada sistem. Kami hanya membutuhkan Nginx 1.9.5 atau lebih tinggi yang dibangun dengan OpenSSL 1.0.2. Nginx menambahkan dukungan untuk HTTP/2 di versi 1.9.5. Repo Debian 8 default memiliki Nginx 1.6.2. Untungnya, repo backport Jessie menyediakan Nginx 1.10.3 yang dibuat dengan OpenSSL 1.0.2l.
Untuk menambahkan repositori ini, buat file daftar sumber.
sudo nano /etc/apt/sources.list.d/jessie-backports.list
Tambahkan baris berikut ke file ini.
deb http://ftp.debian.org/debian jessie-backports main
Simpan dan tutup file. Kemudian perbarui indeks paket dan instal Nginx dari repositori backport Jessie.
sudo apt update sudo apt -t jessie-backports install nginx
Periksa versi Nginx dan konfigurasikan parameter.
sudo nginx -V
Keluaran:
nginx version: nginx/1.10.3 built with OpenSSL 1.0.2l 25 May 2017 TLS SNI support enabled
Repo Nginx.org berisi versi terbaru Nginx untuk Debian 8. Namun paket tersebut dibuat dengan OpenSSL 1.0.1, sehingga tidak mendukung ALPN.
Menginstal Sertifikat SSL di Debian 8
Kami dapat menginstal sertifikat SSL gratis yang dikeluarkan oleh Let's Encrypt. Pertama, instal klien Let's Encrypt (Certbot) di Debian 8 dari repo Jessie Backports. Python-certbot-nginx
adalah plugin Nginx untuk Certbot.
sudo apt install -t jessie-backports certbot python-certbot-nginx
Sekarang jika Anda telah mengkonfigurasi virtual host Nginx, maka gunakan plugin Nginx untuk mendapatkan dan menginstal sertifikat SSL seperti di bawah ini
sudo certbot --nginx --agree-tos -d example.com --redirect --staple-ocsp --must-staple --email your-email-address
Penjelasan:
--nginx
:Gunakan plugin Nginx--agree-tos
:Setuju dengan persyaratan layanan Let's Encrypt--redirect
:Secara otomatis mengalihkan semua lalu lintas HTTP ke HTTPS untuk vhost yang baru diautentikasi.--staple-ocsp
:Mengaktifkan Stapel OCSP--must-staple
:Menambahkan ekstensi OCSP Must Staple ke sertifikat--email
:Email yang digunakan untuk pendaftaran dan kontak pemulihan
Mengaktifkan Protokol HTTP2
Secara default, Certbot tidak mengonfigurasi HTTP/2 untuk Nginx. Untuk mengaktifkan HTTP/2, edit file host virtual Nginx Anda. Temukan arahan berikut.
listen 443 ssl;
Kemudian tambahkan http2 seperti di bawah ini.
listen 443 ssl http2;
Simpan dan tutup file. Muat ulang Nginx.
sudo systemctl reload nginx
Uji
Bagaimana Anda tahu bahwa situs Anda sebenarnya menggunakan protokol HTTP2?
- Di Firefox atau Google Chrome, muat halaman situs Anda, lalu tekan
Ctrl+Shift+I
untuk membuka Alat Pengembang , klik Jaringan tab. Anda dapat melihat protokol yang digunakan untuk domain Anda. - Anda juga dapat memasang ekstensi Indikator HTTP/2 dan SPDY di Google Chrome.
- Instal ekstensi Indikator HTTP/2 di Firefox.
- Alat pengujian HTTP/2 online oleh KeyCDN dapat memberi tahu Anda apakah HTTP/2 dan ALPN didukung di situs Anda.
Perhatikan bahwa Anda mungkin perlu mengosongkan cache browser Anda karena objek yang di-cache mungkin salah ditandai dengan protokol HTTP/1.1.
Cara Mengaktifkan Server Push
HTTP/2 hadir dengan fitur yang disebut server push , yang memungkinkan server web mengirim sumber daya yang tidak diminta oleh browser web, tetapi diperlukan untuk memuat halaman web. Misalnya, jika browser web meminta dokumen HTML, maka server web mengetahui bahwa klien akan memerlukan file CSS terkait dan mengirimkannya bersama dengan dokumen HTML, sehingga menghilangkan kebutuhan browser web untuk mengirim permintaan CSS, jadi satu putaran perjalanan berkurang.
Di sini, saya menggunakan WordPress sebagai contoh. Sumber daya berikut biasanya dibutuhkan untuk situs WordPress.
- style.css:stylesheet utama, terletak di root direktori tema.
- jquery.js:perpustakaan JQuery
- jquery-migrate.min.js:JQuery lama
- wp-embed.min.js:untuk menyematkan video
Untuk mendorong sumber daya ini ke klien, tambahkan arahan berikut di server
memblokir. Ganti dua puluh tujuh belas dengan nama tema WordPress Anda sendiri.
http2_push /wp-content/themes/twentyseventeen/style.css; http2_push /wp-includes/js/jquery/jquery.js; http2_push /wp-includes/js/jquery/jquery-migrate.min.js; http2_push /wp-includes/js/wp-embed.min.js;
Simpan dan tutup file. Kemudian mulai ulang Nginx agar perubahan diterapkan.
sudo systemctl restart nginx
Perhatikan bahwa Anda perlu menambahkan kode berikut di functions.php
untuk menghapus nomor versi dari file CSS dan JavaScript WordPress. Saat WordPress diperbarui, server push tidak akan berfungsi jika nomor versi ditambahkan ke file ini.
// Remove WP Version From Styles add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 ); // Remove WP Version From Scripts add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 ); // Function to remove version numbers function sdt_remove_ver_css_js( $src ) { if ( strpos( $src, 'ver=' ) ) $src = remove_query_arg( 'ver', $src ); return $src; }
Menguji Dorong Server
Di browser Google Chrome, muat halaman Anda, lalu tekan Ctrl+Shift+I
untuk membuka alat pengembang dan klik tab Jaringan. Tekan F5 untuk memuat ulang. Seperti yang Anda lihat dari tangkapan layar di bawah, server push berfungsi di salah satu situs web saya. Jika Anda melihat "dari cache memori", klik kanan padanya, hapus cache browser dan muat ulang.
Peningkatan
Plugin Certbot Nginx masih belum matang. Saya mendapat B pada tes SSL Labs setelah menggunakan plugin Nginx karena penggunaan parameter pertukaran kunci yang lemah. Generator konfigurasi SSL Mozilla adalah alat yang baik untuk membantu Anda membuat konfigurasi SSL modern.
Itu dia! Saya harap tutorial ini membantu Anda mengaktifkan HTTP/2 dengan Nginx di server Debian 8. Seperti biasa, jika menurut Anda postingan ini bermanfaat, berlangganan newsletter gratis kami.