Kategoriler
Nginx

Nginx web sunucusunda GZIP aktif etme (%30 performans artisi)

Nginx harika bir sistem, ancak ince ayarlarla daha cok performans almaniz muhtemel, bu performans cogu zaman gozle gorulur derecede belirgin olabilir. Bunlardan biriside nginx in “–with-http_gzip_static_module” moduludur. Ne yapar bu diye sorarsaniz kisaca aciklayalim: sitenizdeki belirtmis oldugunuz dosya turlerini yada icerigini gzip seklinde sikistirarak %30 lara varan bir kucultme ile kullaniciya ulasma suresini dusurerek, iceriginizin daha hizli ve guvenli yoldan ulastirilmasini saglar.

Nginx kullanicilarinin bunu aktif etmesi gerekli. Oncelikle gerekli modulun oldugundan emin olun. ssh giris yaparak ekrana bunu yazin: nginx -V
cikan sonuclar icinde bunu goruyorsaniz bir sonraki adima gecebilirsiniz demektir: –with-http_gzip_static_module

Eger yoksa, diyecegim ama olmamasi imkansiz, cunku default olarak geliyor zaten :)

Daha onceki nginx makalelerimi okuyup uygulayan arkadaslar nginx.conf dosyalarindaki gzip alanini kaldirin.
Eskisi boyle idi, farklida olabilir ama gzip ile basliyorsa silin hepsini:

gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/xml text/css;

Asagidaki yeni gzip ayar kodunu sildiginiz yere ekleyin (yukaridaki ile degisin):

## Gzip modunu aktif etme / makaleci.com
gzip on;
gzip_static on;
gzip_buffers 4 128k;
gzip_comp_level 1;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/plain application/x-javascript text/xml text/css;
##eger farkli dosya turlerinide gzip seklinde islemesini istiyorsaniz ; dan once
##turunu belirten kodu bosluk birakarak ekleyin.
##Bu turleri gormek icin /etc/nginx/mime.types dosyasina bakabilirsiniz :)
gzip_vary on;

Bu kadar sonrasinda nginx e restart atalim:

service nginx restart

Ve sonuc:

Eger farkli dosya turlerinide gzip seklinde islemesini istiyorsaniz gzip_types alanina turunu belirten kodu bosluk birakarak ekleyin. Bu turleri gormek icin /etc/nginx/mime.types dosyasina bakabilirsiniz. Sonrasinda restart atarak header check yapin, yani burayi kullanabilirsiniz test icin.

Buradaki dokumana binayen guncelleme maksatli ve bilmeyenler icin yardimci olacagini dusundugum icin bunu hazirladim. Zaten konudaki yardimci bash scriptinide guncelleyecegim birazdan.

Bu konuda Hakan isimli sadik takipcimizi ve yorumcumuzu dikkatimizden kacan cogu seyi, gzip olayinda oldugu gibi :) uyararak dokumanlarin daha iyi hale gelmesini sagladigi icin tesekkur ediyorum.

Sevgiler saygilar..

Yazar selçuk KILIÇ

Bende 1 yumurta var, sende 1 yumurta var. Ben sana 1 yumurta versem, sen bana bir yumurta versen, bende 1 yumurta sende 1 yumurta olur.Bende 1 bilgi var, sende 1 bilgi var. Ben sana 1 bilgi versem, sen bana 1 bilgi versen, bende 2 bilgi, sende de 2 bilgi olur - Konfüçyüs - Yazilarimi artik kuaza da yayinliyorum (zamanim oldukca) :)

“Nginx web sunucusunda GZIP aktif etme (%30 performans artisi)” için 29 yanıt

Teşekkürler takibe devam benimde gzip için şöyle bir önerim olacak.

gzip on;
gzip_vary on;
gzip_disable “MSIE [1-6].”;
gzip_proxied any;
gzip_http_version 1.0;
gzip_min_length 1000;
gzip_comp_level 2;
gzip_buffers 16 8k;
gzip_types text/plain text/xml text/css application/x-javascript application/xml application/xml+rss text/javascript application/atom+xml;

Bence gzip_comp_level 2 kismi 1 olsa daha iyi, cunku bu SIKISTIRmayi daha minumun duzeye cekebilir ancak acarkende milisaniye cinsinden zaman kaybettirdigini dusunuyorum. Tabi benim icin 1 den baska alternatif varsa oda 6 dir :)

minumun gziplenecek dosya kismina limit koyarak iyi yaptin, hazirlarken fazla onemsemedim ama kucuk dosyalar icin islem yapilmasina gerek olmadigini dusunmeye basladim, cunku onlar zaten kucuk boyutda ve hiz acisindan sorun cikarmayacaklardir :)

gzip_comp_level 1; ile 2 arasında %10 kadar bir fark var aslında 1 makineye daha az yük bindirir haklısın. 6 yı ise hiç düşünme getirisi byte cinsinden.

Sizde nginx kurulu degil, buradan oncelikle nginx i kurmaniz gerekli: http://www.makaleci.com/centoscpanel-sunucularda-nginx-kurulumu-2.html tabi sisteminiz centos ve cpanel ise. eger paneliniz plesk ise bunun icinde hazirladigim bir baska dokuman var, arama yaparak onu bulup kurulumu gerceklestirin.

cpanel icin verdigim linkteki dokumana gore kurulum yaparsaniz buradaki konuyu es gecebilirsiniz, cunku o dokumanida guncelledim :)

Beta surum anlatimi yapmadim hic simdiye kadar :) eger sorunsuz kurduysaniz olmasi gerekliydi. kurulumda bir hata yapmis olabilirsiniz. Onerim 2. anlattigim cpanel nginx kurulumunu uygulamaniz, daha basit ve daha kolaydir..

sizde nginx kurulu gorunuyor, ancak ssh ekranina nginx -V yaptiginizda nasil olurda kurulu oldugu bilgisi cikmaz anlamiyorum. Yukaridakileri uygulayin o zaman, buyuk ihtimal gzip ozelligi sizde de aktif olacaktir.

Daha önce kurulu olan Development versiyon vardı ve onu kaldırmadan bu makaledekileri uyguladım. http://www.makaleci.com/centoscpanel-sunucularda-nginx-kurulumu-2.html ardından siteye ulaşamaz oldum saatlerdir.
http://www.ahiska.net siteye girdiğimde ” Welcome to nginx! ” yazıyor ….
http://www.ahiska.net/haber alt sayfalarda ise 404 Not Found hatası veriyor…
public_html klasörünün chmod değerini 755 yaptım … Buna rağmen siteye ulaşamıyorum saatlerdir, Lütfen yardım…

Ayrıca nginx.conf dosyasında
## Gzip modunu aktif etme / makaleci.com
gzip on;
gzip_static on;
gzip_buffers 4 128k;
gzip_comp_level 1;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/plain application/x-javascript text/xml text/css;
##eger farkli dosya turlerinide gzip seklinde islemesini istiyorsaniz ; dan once
##turunu belirten kodu bosluk birakarak ekleyin.
##Bu turleri gormek icin /etc/nginx/mime.types dosyasina bakabilirsiniz :)
gzip_vary on;

kodlarını kullandığım zaman, Aşağıdaki hatayı veriyor
[email protected] [~]# /usr/local/nginx/sbin/nginx -t
nginx: [emerg] unknown directive "gzip_static" in /usr/local/nginx/conf/nginx.conf:29
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

Merhabalar,

Sunucuda nginix yüklü test sitesinden baktığımda gzip aktif görünüyor fakat google pagespeed insights aracı ile test yaptırdığım zaman

“Kaynakları gzip veya deflate ile sıkıştırmak, ağ üzerinden gönderilen bayt sayısını azaltabilir.” uyarısı alıyorum.

Sorun nedir acaba ? zaten gzip aktif görünüyor bunu pagespeed insight neden anlamıyor :) ?

Apache taraflı gzip sıkıştırma işleminide uygulayarak denermisiniz:
.htaccess dosyasina ekleyin:

####################
# GZIP COMPRESSION #
####################
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
Header append Vary User-Agent env=!dont-vary

Merhabalar,

Cevap için teşekkür ediyorum, fakat verdiğiniz kod ” internal server error ” a sebep oluyor site tamamen kapanıyor yani.

Bu arada htacces ile ilgili olarak sıkıştırma yapılabilecek farklı kodlar da denedim ki zaten sunucuyu dün yeniden kurdum ondan önce nginix yoktu ve aldığım yedekte zaten apache sunucuda gzip aktif olarak çalışan kodlar mevcuttu.

Nginix in compress_level nginix on falan şeklinde ayarlarının yapıldığı dosyayı inceledim hiç bir soru yok dediğim gibi zaten nginix test sitesinde aktif olduğuda görülüyor.

Teşekkürler.

Apache de DEFLATE modulunun olmayisindan kaynaklanabilir. Aslinda sitenizi kontrol ettigimde bende goruyorum gzip’in aktif oldugunu: http://www.gidnetwork.com/tools/gzip-test.php

Burdaki sayfadan yardim alabilirsiniz (kod kisimlarini) : http://stackoverflow.com/questions/12367858/how-can-i-get-apache-gzip-compression-to-work

Konuyu takip ediyorum bilgi verirseniz memnun olurum, nginx calismalarini yayinlarken dikkate alip konu icinde yazarak okuyuculari bilgilendirmek isterim :)

Bu arada sitenizi kontrol ederken www. kullanin. Cunku yonlendirme varsa o zaman gzip olmadigini gosteriyor. Ornek sizin sitenize baktim gzip kontrol sayfasindan. www. olmadan kontrol ettigimde gzip aktif degil uyarisi veriyor. Ancak www. ile kontrol ettirirsem bu seferde gzip var uyarisi veriyor. buna gore google pagespeed kontrolu yaparken www. eklemeyi unutmayin..

İlginiz için teşekkür ediyorum Selçuk Bey,

pagespeed de www ile deniyorum yine aynı.. Ben araştırıyorum bakalım heralde çözeriz bi şekilde :) Bu konuya sorunun nasıl çözüldüğünü yazarım.

Teşekkürler…

Selçuk Merhaba,

An itibari ile google page speed insights sıkıştırma aktif görüyor masa üstü hız 86 / 100 !

Sorunu nasıl çözdük, valla dün den beri yapmadığımız kalmadı varnishler mi dersin phpfastcgi ler mi dersin internal server error 500 ler mi dersin :)

Neyse aslında o kadar da basit bir şeymiş ki yapılması gereken. Öncelikle kısaca açıklayalım sunucu da zaten nginx ve gzip aktif site wordpress yönetim paneline /wp-admin e bakıyorsun pagespeed den sıkıştırma aktif görüyor sitenin anasayfasına bakıyorsun aktif edin diyor.

Bir de bu arada wordpressle ilgili olarak ubuntu + nginx + varnish falan derken wordpress e özel bir dosya mı oluşturuyolarmış her domain için sonra tekrar onu yeniden eklemek falan gerikiyormuş adamlar ne yapmaya çalışmışlar harbiden hala bir anlam veremedim onla da baya uğraştım onunla da hiç ilgisi yok.. Türkçe forumların birinde de hatta anlatan birileri var konuyu.

Neyse bizim sıkıntı sadece ve sadece

gzip_types text/plain text/css application/javascript text/xml application/xml+rss;

Sıkıştırılan dosya türü ile ilgiliymiş :) deliler gibi ingilizce makalelerin arasında gezip sunucuyu alt üst ederken sadece vatandaşın biri dosya tipini şunu sil şunu ekle demiş bi yaptık ki bi de baktım olmuş :)

Neyse belki bu tarz bir sıkıntısı olan arkadaş olurda en azından bizim kadar uğraşmadan çözer belki.

İyi günler

Cevap icin tesekkurler, bayagi ugrasmissiniz gordugum kadariyla. Ama konuda ben soz konusu bolumleri kod icinde yazmistim, acaba o kod da bir eksiklik mi var ?

gzip_types text/plain application/x-javascript text/xml text/css;
##eger farkli dosya turlerinide gzip seklinde islemesini istiyorsaniz ; dan once
##turunu belirten kodu bosluk birakarak ekleyin.
##Bu turleri gormek icin /etc/nginx/mime.types dosyasina bakabilirsiniz :)

sadece bu asagiaki eklenmemis verdigim kodlarda

application/xml+rss

Yakin zamanda yeni bir makale hazirlayacagim, soz konusu cevaplarinizida dikkate alacagim. Ayrica bu sefer iyice test edip sizi zor durumda birakmayacagim :)

Geri donus ve cavap icin tesekkurler, kolay gelsin.

Bu konunun amaci ordaki kodlar ile gzip aktif etmekti :) cozum icin verdigin kodlar eklediklerimle ayni xml kismi haric :) Ama sorun cozuldu ya onemli olanda bu degilmi :)

Saat konusunda zamanim olsa bakar yardimci olurdum ama suan icin cikmam gerekli, kolay gelsin tekrar :)

Ben teşekkür ederim, fakat ben apache yani htaccess ile yapmadım sıkıştırmayı. Siz kodu verdiniz ama onu htaccess de denedik. Benim şu an eklediğim kod nginix.conf içindeki gzip ayarlarına eklenen bir kod. :)

Bu arada bilmiyorum bilginiz var mı ama benim 2 tane küçük problemim kaldı onları da sorayım yardımcı olabilirseniz sevinirim :)

1 – VPS ‘yi kurdum üzerine VestaCP kurdum, sonra bir tane site ekledim. Şimdi sunucu ip nuramı yazıp web sitesi gibi girmeye çalıştığımda ilk eklediğim site çıkıyor. Bu da maalesef müşterimin sitesi kendimize ait olan sitenin çıkmasını istiyorum.

2 – Sunucunun saat ayarı yanlış. Php.ini ye default istanbul ekledim, ssh dan saati değiştirdim. Olmuyor yinede. Sunucuyu reboot ediyorum açıyorum bakıyorum saat doğru fakat VestaCP ye girip bakıyorum saat eski halini almış sunucuya tekrar bakıyorum sunucunun da saati tekrar bozulmuş oluyor.

Bunun dışında bir sorun kalmadı sunucu ve siteler gerçekten hızlı çalışıyor ki 512 mb ram 1 çekirdek işlemcili bir vps.

İlgi ve cevaplar için tekrar teşekkür ederim.

Verdigim kod yzi icindeki nginx konfigurasyon kodu hocam. Yani nginx de gzip aktif etmek icin kullanmaniz gereken kod du. daha once onu uygulayip denedinizmi acaba ?

Sorulariniza gelince:
1 – Ip adresine default bir site belirlemeniz gerekli. VestaCP den anlamam ama http.conf icine girerek bunu kendinizde yapabilirsiniz. Ip adresine ozel acilacak site ayarlari ve olunu belirleyebilirsiniz.
2 – buyuk ihtimal sorun VestaCP dedir, onda bunun ile ilgili bir ayar yoksa php inide bununla ilgili bir alan var onu duzeltmeye calisin. Farkli bir etken olmadigi surece ise yarayacaktir. Yine olmazsa saati degistirme kodunu sitelerinize el ile eklemeniz gerekecek, yani saat’i degistiren kodu.

Hayır o kodu nginx de denemedim. Zaten benzeri bir kod yapısı mevcut olduğu için birebir kopyala yapıştır çok tercih etmedim aslında başından beri o yüzden bu kodu da direk olarak ekleyip bakmadım aslında. Ama yardımlarınız için teşekkür ediyorum şu an bir problem kalmadı saat konusunu da biraz daha uğraşıcaz default domain içinde http.conf u karıştırıyım bakalım :)

Teşekkürler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.