Si të kurseni trafikun me nginxs HttpGzipModule në Debian Jessie
Në këtë tutorial, unë do të përshkruaj se si të konfiguroni HttpGzipModule në një server ueb nginx (në Debian Jessie). HttpGzipModule lejon nginx të kompresojë skedarët dhe t'i dorëzojë ato te klientët (p.sh. shfletuesit) që mund të trajtojnë përmbajtje të ngjeshur, siç bëjnë shumica e shfletuesve modernë. Me HttpGzipModule, ju mund të kompresoni skedarët HTML, CSS, Javascript, tekst ose XML në përafërsisht. 20 - 30% të madhësive të tyre origjinale, duke ju kursyer trafikun e serverit dhe duke i bërë përdoruesit e modemit tuaj më të lumtur.
Kompresimi i skedarëve shkakton një ngarkesë pak më të lartë në server, por në përvojën time, kjo kompensohet nga fakti që kohët e lidhjes së klientëve me serverin tuaj ulen shumë. Për shembull, një përdoruesi modem të cilit i duheshin shtatë sekonda për të shkarkuar një skedar HTML të pakompresuar, tani mund t'i duhen vetëm dy sekonda për të njëjtin skedar, por të ngjeshur.
Duke përdorur HttpGzipModule, nuk duhet të keni frikë se përjashtoni përdoruesit me shfletues më të vjetër që nuk mund të trajtojnë përmbajtje të ngjeshur. Shfletuesi negocion me serverin përpara se të transferohet ndonjë skedar, dhe nëse shfletuesi nuk ka aftësinë për të trajtuar përmbajtjen e ngjeshur, serveri i dorëzon skedarët të pakompresuar.
1 Shënim paraprak
Unë supozoj se keni një konfigurim nginx që funksionon në serverin tuaj Debian, p.sh. siç tregohet në këtë tutorial: Instalimi i Nginx me PHP (si PHP-FPM) dhe MariaDB (LEMP) në Debian 8
2 Konfigurimi i HttpGzipModule
Hapni /etc/nginx/nginx.conf:
nano /etc/nginx/nginx.conf
Do të zbuloni se kompresimi i gzip është aktivizuar tashmë (në seksionin http {}):
[...]
http {
[...]
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
[...]
}
[...]
gzip në; mundëson kompresimin e gzip.
gzip_disable \MSIE [1-6]\.(?!.*SV1)\; çaktivizon kompresimin gzip për shfletuesit që nuk e mbështesin atë (në këtë rast MS Internet Explorer përpara versionit 6 SV1).
Sigurisht, ne mund ta rregullojmë mirë këtë konfigurim (mund të gjeni një listë të direktivave të mundshme të konfigurimit në http://nginx.org/en/docs/http/ngx_http_gzip_module.html):
gzip_http_version 1.1; - Kjo mundëson kompresimin e gzip-it për versionin 1.1 të kërkesës HTTP. Meqenëse koka e gjatësisë së përmbajtjes nuk është vendosur, kjo do ta bëjë të pamundur Keepalives me versionin 1.0.
gzip_vary on; - Kjo vendos kokën e përgjigjes Vary: Accept-Encoding. Disa përfaqësues kanë një gabim në atë që u shërbejnë përmbajtje të ngjeshur shfletuesve që nuk e mbështesin atë. Duke vendosur titullin Vary: Accept-Encoding, ju udhëzoni përfaqësuesit që të ruajnë një version të ngjeshur dhe të pakompresuar të përmbajtjes.
gzip_comp_nivel 6; - Ky është niveli i kompresimit (midis 1 dhe 9) ku 1 është kompresimi më i vogël (më i shpejtë) dhe 9 është më i ngadalshëm.
gzip_proxied any; - Kjo konfiguron se si duhet të trajtohen kërkesat që vijnë nga një përfaqësues. çdo mjet mundëson kompresimin për të gjitha kërkesat.
gzip_types tekst/tekst i thjeshtë/tekst html/aplikacioni css/aplikacioni json/teksti x-javascript/ aplikacioni xml/ aplikacioni xml/ teksti xml+rss/ aplikacioni javascript/ teksti javascript/x-js; - Kjo i tregon nginx se cilat lloje skedarësh duhet të kompresojë (teksti/html është gjithmonë i ngjeshur). Meqenëse skedarët Javascript mund të kenë lloje të ndryshme skedarësh në secilin server, unë kam përfshirë disa lloje të mundshme Javascript MIME (e njëjta gjë vlen edhe për XML).
gzip_buffers 16 8k; - Kjo cakton numrin dhe madhësinë e buferëve të kompresimit. Parazgjedhja është gzip_buffers 4 4k; ose gzip_buffers 4 8k;, por e kam rritur atë vlerë për t'u siguruar që skedarët e mëdhenj Javascript ose CSS mund të kompresohen gjithashtu.
Pra, konfigurimi im përfundimtar duket si më poshtë:
[...]
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)";
[...]
}
[...]
Ringarko nginx:
service nginx reload
3 Testimi
Për të testuar nëse konfigurimi juaj funksionon, mund të përdorni Developer Tools në Firefox ose Google Chrome dhe të përdorni një skedar teksti përmes Firefox-it (p.sh. një faqe statike HTML). Në daljen HTTP Headers, tani duhet të shihni se klienti (Firefox) dërgoi një Accept-Encoding: gzip,deflate header për t'i treguar serverit që pranon përmbajtje të ngjeshur në formatet gzip dhe deflate; serveri duhet të kompresojë skedarin dhe ta dërgojë atë me një titull Content-Encoding: gzip (siç e shihni në këtë shembull, nginx vendos gjithashtu kokën Vary: Accept-Encoding):
4 Lidhje
- nginx HttpGzipModule: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
- Debian: http://www.debian.org/