GNU/Linux >> Belajar Linux >  >> Debian

Cara Menghemat Lalu Lintas Dengan nginxs HttpGzipModule di Debian Jessie

Dalam tutorial ini, saya akan menjelaskan cara mengkonfigurasi HttpGzipModule di server web nginx (di Debian Jessie). HttpGzipModule memungkinkan nginx untuk mengompresi file dan mengirimkannya ke klien (misalnya browser) yang dapat menangani konten terkompresi yang dilakukan oleh sebagian besar browser modern. Dengan HttpGzipModule, Anda dapat mengompresi file HTML, CSS, Javascript, teks atau XML hingga kira-kira. 20 - 30% dari ukuran aslinya, sehingga menghemat lalu lintas server Anda dan membuat pengguna modem Anda lebih bahagia.

Mengompresi file menyebabkan beban yang sedikit lebih tinggi di server, tetapi menurut pengalaman saya, ini dikompensasi oleh fakta bahwa waktu koneksi klien ke server Anda berkurang banyak. Misalnya, pengguna modem yang membutuhkan tujuh detik untuk mengunduh file HTML yang tidak terkompresi sekarang mungkin hanya membutuhkan dua detik untuk file yang sama, tetapi terkompresi.

Dengan menggunakan HttpGzipModule Anda tidak perlu takut mengecualikan pengguna dengan browser lama yang tidak dapat menangani konten terkompresi. Browser bernegosiasi dengan server sebelum file apa pun ditransfer, dan jika browser tidak memiliki kemampuan untuk menangani konten terkompresi, server mengirimkan file tanpa kompresi.

1 Catatan Awal

Saya berasumsi Anda memiliki pengaturan nginx yang berfungsi di server Debian Anda, mis. seperti yang ditunjukkan dalam tutorial ini: Menginstal Nginx dengan PHP (sebagai PHP-FPM) dan MariaDB (LEMP) di Debian 8

2 Mengonfigurasi HttpGzipModule

Buka /etc/nginx/nginx.conf:

nano /etc/nginx/nginx.conf

Anda akan menemukan bahwa kompresi gzip sudah diaktifkan (di bagian http {}):

[...]
http {
[...]
##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

[...] } [...]

gzip aktif; mengaktifkan kompresi gzip.

gzip_disable "MSIE [1-6]\.(?!.*SV1)"; menonaktifkan kompresi gzip untuk browser yang tidak mendukungnya (dalam hal ini MS Internet Explorer sebelum versi 6 SV1).

Tentu saja, kami dapat menyempurnakan konfigurasi ini (Anda dapat menemukan daftar kemungkinan arahan konfigurasi di http://nginx.org/en/docs/http/ngx_http_gzip_module.html):

gzip_http_versi 1.1; - Ini memungkinkan kompresi gzip untuk permintaan HTTP versi 1.1. Karena header Content-Length tidak disetel, ini akan membuat Keepalives tidak mungkin dilakukan dengan versi 1.0.

gzip_vary aktif; - Ini menetapkan header respons Vary:Accept-Encoding. Beberapa proxy memiliki bug yang menyajikan konten terkompresi ke browser yang tidak mendukungnya. Dengan menyetel header Vary:Accept-Encoding, Anda menginstruksikan proxy untuk menyimpan versi konten terkompresi dan tidak terkompresi.

gzip_comp_level 6; - Ini adalah tingkat kompresi (antara 1 dan 9) di mana 1 adalah kompresi paling sedikit (tercepat) dan 9 paling banyak (paling lambat).

gzip_proksi apa saja; - Ini mengonfigurasi bagaimana permintaan yang datang dari proxy harus ditangani. cara apa pun mengaktifkan kompresi untuk semua permintaan.

gzip_types teks/teks biasa/teks html/aplikasi css/aplikasi json/teks x-javascript/aplikasi xml/aplikasi xml/xml+teks rss/aplikasi javascript/teks javascript/x-js; - Ini memberi tahu nginx jenis file apa yang akan dikompres (teks/html selalu dikompresi). Karena file Javascript mungkin memiliki tipe file yang berbeda di setiap server, saya telah menyertakan beberapa kemungkinan tipe MIME Javascript (hal yang sama berlaku untuk XML).

gzip_buffers 16 8k; - Ini menetapkan jumlah dan ukuran buffer kompresi. Standarnya adalah gzip_buffers 4 4k; atau gzip_buffers 4 8k;, tetapi saya telah meningkatkan nilai itu untuk memastikan bahwa file Javascript atau CSS yang besar dapat dikompresi juga.

Jadi konfigurasi akhir saya terlihat sebagai berikut:

[...]
http {
    [...]
    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    [...]
}
[...]

Muat ulang nginx:

service nginx reload

3 Pengujian

Untuk menguji apakah konfigurasi Anda berfungsi, Anda dapat menggunakan Alat Pengembang di Firefox atau Google Chrome dan mengakses file teks melalui Firefox (mis. halaman HTML statis). Dalam keluaran HTTP Header, Anda sekarang akan melihat bahwa klien (Firefox) mengirimkan sebuah Accept-Encoding:gzip,deflate header untuk memberitahu server bahwa ia menerima konten terkompresi dalam format gzip dan deflate; server harus mengompresi file dan mengirimkannya dengan header Content-Encoding:gzip (seperti yang Anda lihat dalam contoh ini, nginx juga menyetel header Vary:Accept-Encoding):

  • nginx HttpGzipModule: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
  • Debian:http://www.debian.org/

Debian
  1. Cara Menyebarkan Server DNS Dinamis dengan Docker di Debian 10

  2. Cara menginstal WebDAV dengan Lighttpd di Debian 8 (Jessie)

  3. Cara Mengonfigurasi Firewall dengan CSF di Debian 9

  1. Cara Setup Server FTP dengan VSFTPD di Debian 9

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

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

  1. Cara menginstal Server Minimal Debian 8 (Jessie)

  2. Cara menginstal Rundeck di server Debian 8 (Jessie)

  3. Cara Menginstal Gitlab di Debian 8 (Jessie)