GNU/Linux >> Belajar Linux >  >> Debian

Cara Mengaktifkan Protokol HTTP2 dengan Nginx di Debian 8 Jessie Server

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.


Debian
  1. Cara Install Proxmox VE 4 di Debian 8 (Jessie)

  2. Cara Menginstal HTTP Git Server dengan Nginx di Debian 11

  3. Cara Menginstal WonderCMS dengan Nginx di Debian 11

  1. Cara membuat nginx dengan modul Google PageSpeed ​​di Debian 8 (Jessie)

  2. Cara Menginstal Nginx di Debian 8 (Jessie)

  3. Cara Mengaktifkan HTTP2 di NGINX

  1. Cara Mengaktifkan SSH di Debian 9 atau 10

  2. Cara Setup Server FTP dengan VSFTPD di Debian 9

  3. Cara Mengaktifkan Nginx Dengan PHP-FPM Di Plesk