GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengaktifkan Protokol HTTP/2 dengan Apache di Ubuntu 20.04

Tutorial ini akan menunjukkan cara mengaktifkan protokol HTTP/2 dan menggunakan server push dengan Apache di Ubuntu 20.04. Seperti yang Anda ketahui, HTTP/2 jauh lebih cepat daripada protokol HTTP/1.1, terutama karena protokol HTTP/1.1 memungkinkan browser web mengirim banyak permintaan ke server web secara bersamaan pada satu koneksi TCP (multipleks) dan menerima respons yang tidak sesuai urutan. .

Saat ini rata-rata bandwidth pengguna Internet jauh lebih tinggi dari sebelumnya, yang membantu memuat halaman web lebih cepat. Namun, setelah bandwidth mencapai 5Mbps, itu berdampak kecil pada waktu buka halaman. Baik Anda menggunakan 5Mbps atau 10Mbps, halaman web dimuat hampir dalam jumlah waktu yang sama. Saat ini, yang dapat sangat memengaruhi waktu pemuatan halaman adalah latensi dan jumlah perjalanan pulang pergi. Itulah salah satu masalah yang dipecahkan oleh multiplexing HTTP/2.

Prasyarat

Spesifikasi HTTP/2 memungkinkan HTTP teks biasa, tetapi dalam praktiknya, semua browser web utama mengimplementasikan HTTP/2 dengan cara yang memerlukan HTTPS. Jadi sebelum mengaktifkan protokol HTTP/2, Anda harus mengaktifkan HTTPS di situs web Anda. Anda dapat membaca panduan terperinci berikut untuk mengaktifkan HTTPS

  • Cara Mengaktifkan HTTPS di Apache dengan Benar dengan Let's Encrypt di Ubuntu.

HTTP/2 di Apache siap produksi dimulai dengan versi 2.4.26. Jadi, Anda memerlukan Apache 2.4.26 atau lebih tinggi yang dibuat dengan mod_http2 , modul Apache HTTP/2. Ubuntu 20.04 hadir dengan Apache 2.4.41, yang dapat diperiksa dengan:

apache2 -v

Contoh keluaran:

Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-04-13T17:19:17

Setelah Anda memenuhi dua persyaratan di atas, ikuti petunjuk di bawah untuk mengaktifkan HTTP/2 di Apache.

Aktifkan Protokol HTTP/2 di Apache Virtual Host

Pertama, Anda perlu mengaktifkan modul HTTP/2.

sudo a2enmod http2

Kemudian edit file host virtual Apache Anda. Jika Anda mengaktifkan HTTPS dengan Let's Encrypt, maka host virtual SSL dibuat sebagai file terpisah yang diakhiri dengan le-ssl.conf .

sudo nano /etc/apache2/sites-enabled/your-site-le-ssl.conf

Letakkan direktif berikut setelah pembukaan <VirtualHost *:443> tag.

Protocols h2 http/1.1

Simpan dan tutup file. Kemudian restart Apache agar perubahan diterapkan.

sudo systemctl restart apache2

Jika Anda menggunakan mod_php

Jika Anda menggunakan mod_php modul dengan Apache, maka Anda menggunakan modul MPM prefork. Sayangnya Mod_http2 tidak mendukung prefork. Anda dapat menggunakan modul event MPM untuk mendukung HTTP/2 dan itu mengharuskan Anda untuk menjalankan PHP dengan FastCGI karena MPM event tidak kompatibel dengan mod_php . Ikuti langkah-langkah di bawah ini untuk beralih dari prefork ke event MPM.

Nonaktifkan modul PHP7.

sudo a2dismod php7.4  

Nonaktifkan modul MPM prefork.

sudo a2dismod mpm_prefork

Aktifkan modul Event MPM, Fast_CGI, dan setenvif.

sudo a2enmod mpm_event proxy_fcgi setenvif

Instal PHP-FPM

sudo apt install php7.4-fpm 

Mulai PHP-FPM

sudo systemctl start php7.4-fpm

Aktifkan PHP-FPM untuk memulai saat boot.

sudo systemctl enable php7.4-fpm

Tetapkan PHP-FPM sebagai pengendali PHP Apache menggunakan perintah berikut, yang akan mengaktifkan /etc/apache2/conf-available/php7.4-fpm .conf berkas.

sudo a2enconf php7.4-fpm

Mulai ulang Apache agar perubahan diterapkan.

sudo systemctl restart apache2

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 <VirtualHost> memblokir. Ganti dua puluh tujuh belas dengan nama tema WordPress Anda sendiri.

Header add Link "</wp-content/themes/twentyseventeen/style.css>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery.js>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery-migrate.min.js>;rel=preload"
Header add Link "</wp-includes/js/wp-embed.min.js>;rel=preload"

Simpan dan tutup file. Kemudian restart Apache agar perubahan diterapkan.

sudo systemctl restart apache2

Perhatikan bahwa Anda perlu menambahkan kode berikut di functions.php file 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.

Langkah Selanjutnya

Itu dia! Saya harap tutorial ini membantu Anda mengaktifkan HTTP/2 di Apache di Ubuntu 20.04 dan menggunakan server Push. Anda mungkin juga ingin menyiapkan firewall aplikasi web ModSecurity untuk melindungi situs Anda dari peretasan.

  • Cara Menyetel ModSecurity dengan Apache di Debian/Ubuntu

Seperti biasa, jika menurut Anda postingan ini bermanfaat, berlangganan newsletter gratis kami.


Ubuntu
  1. Cara Mengaktifkan HTTP/2 di Nginx di Ubuntu dan CentOS

  2. Cara Mengatur Apache dengan HTTP/2 di Ubuntu 16.04

  3. Cara Mengaktifkan Protokol HTTPS dengan Apache 2 di Ubuntu 20.04

  1. Cara Menginstal WordPress dengan Apache di Ubuntu 18.04

  2. Cara Menginstal Joomla dengan Apache di Ubuntu 18.04

  3. Cara Menginstal Laravel di Ubuntu 18.04 dengan Apache

  1. Cara mempercepat Apache dengan cache HTTP Varnish di Ubuntu 18.04 LTS

  2. Cara mempercepat Apache dengan cache HTTP Varnish di Ubuntu 16.04 LTS

  3. Cara Mengaktifkan HTTP/2 di Nginx