format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightNginx Üzerinde Gelişmiş Gzip ve Brotli Yapılandırması
- arrow_rightSıkıştırma Neden Kritik Önem Taşıyor?
- arrow_rightNginx Gzip Yapılandırması
- arrow_rightTemel Gzip Ayarları
- arrow_rightGzip Seviyesi Performans Etkisi
- arrow_rightBrotli Sıkıştırması: Yeni Nesil Çözüm
- arrow_rightBrotli Kurulumu
- arrow_rightBrotli Yapılandırma
- arrow_rightGzip ve Brotli Birlikte Kullanımı
- arrow_rightİleri Düzey Yapılandırma Teknikleri
- arrow_rightVary Header Kullanımı
- arrow_rightPrecompressed Dosyaları Kullanma
- arrow_rightİçerik Türü Optimizasyonu
- arrow_rightPerformans Karşılaştırması
- arrow_rightYapılandırmayı Test Etme
- arrow_rightYanıt Header Kontrolü
- arrow_rightyaygın Hatalar ve Çözümleri
- arrow_rightHata 1: CPU Aşırı Yüklenmesi
- arrow_rightHata 2: Önbellek Sorunları
- arrow_rightHata 3: Yanlış MIME Türleri
- arrow_rightWordPress ve Diğer CMS'ler İçin Öneriler
- arrow_rightSonuç ve Öneriler
Nginx Üzerinde Gelişmiş Gzip ve Brotli Yapılandırması
Web sitenizin performansı, arama motoru sıralamalarında kritik bir faktördür. Sunucu tarafında sıkıştırma kullanmak, sayfa yüklenme sürelerini %70'e kadar azaltabilir ve SEO performansını doğrudan etkiler. Nginx, Gzip ve Brotli sıkıştırma algoritmalarıyla bu konuda en güçlü çözümleri sunar.
Sıkıştırma Neden Kritik Önem Taşıyor?
Google'ın 2024 Core Web Vitals güncellemelerine göre, sayfa hızı sıralama faktörlerinden biri olmaya devam ediyor. Akıllı sıkıştırma teknikleri kullanıldığında:
- Ortalama sayfa boyutu %60-80 oranında azalır
- İlk İçerik Boyama (FCP) süresi %40 iyileşir
- Sunucu bant genişliği maliyetleri düşer
- LCP (Largest Contentful Paint) skorları artar
Nginx Gzip Yapılandırması
Temel Gzip Ayarları
Gzip, Nginx'in varsayılan olarak desteklediği ve neredeyse tüm tarayıcılarla uyumlu olan sıkıştırma modülüdür. Aşağıdaki yapılandırma, sunucu seviyesinde nginx.conf dosyasına eklenmelidir:
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 256;
gzip_types text/plain text/css text/xml text/javascript
application/javascript application/xml+rss
application/json application/xml;
gzip_disable "msie6";
Gzip Seviyesi Performans Etkisi
gzip_comp_level parametresi 1 ile 9 arasında değer alır. Yüksek seviye daha küçük dosya boyutları üretir ancak CPU kullanımını artırır:
| Seviye | Sıkıştırma Oranı | CPU Yükü |
|---|---|---|
| 1 | %30-40 | Minimal |
| 6 | %60-70 | Orta |
| 9 | %65-75 | Yüksek |
Brotli Sıkıştırması: Yeni Nesil Çözüm
Brotli, Google tarafından geliştirilen ve Gzip'e göre %15-25 daha iyi sıkıştırma oranı sunan algoritmadır. Ancak Brotli'nin çalışması için Nginx'in ngx_http_brotli_filter_module modülüyle derlenmiş olması gerekir.
Brotli Kurulumu
Ubuntu/Debian sistemlerde kurulum:
# Modülü eklemek için Nginx'i yeniden derleyin
./configure --with-http_brotli_filter_module
make && make install
Brotli Yapılandırma
brotli on;
brotli_types text/plain text/css text/xml text/javascript
application/javascript application/json;
brotli_comp_level 6;
brotli_min_length 256;
brotli_static on;
brotli_buffers 16 8k;
brotli_window 512k;
Gzip ve Brotli Birlikte Kullanımı
Her iki sıkıştırmayı aynı anda etkinleştirebilirsiniz. Tarayıcı her iki algoritmayı da destekliyorsa Brotli öncelikli olarak kullanılır:
# Gzip ayarları
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 256;
gzip_types text/plain text/css application/json
application/javascript text/xml application/xml;
# Brotli ayarları (Gzip'ten sonra)
brotli on;
brotli_types text/plain text/css application/json
application/javascript text/xml application/xml;
brotli_comp_level 6;
brotli_min_length 256;
# Koşullu sıkıştırma
map $http_accept_encoding $gzip_enabled {
default 0;
"~gzip" 1;
"~br" 0;
}
map $http_accept_encoding $brotli_enabled {
default 0;
"~br" 1;
}
İleri Düzey Yapılandırma Teknikleri
Vary Header Kullanımı
Önbellek mekanizmalarının doğru çalışması için Vary: Accept-Encoding header'ı kritik öneme sahiptir:
gzip_vary on;
brotli_vary on;
# CDN entegrasyonu için
proxy_set_header Accept-Encoding "";
origin_response_header Vary Accept-Encoding;
Precompressed Dosyaları Kullanma
Statik dosyalar için önceden sıkıştırılmış (.gz veya .br) dosyalar kullanmak CPU yükünü önemli ölçüde azaltır:
gzip_static on;
brotli_static on;
# Dosya yolları
open_file_cache off;
gzip_static /var/www/html/precompressed/$host/$uri.br;
gzip_static /var/www/html/precompressed/$host/$uri.gz;
İçerik Türü Optimizasyonu
Sıkıştırılacak içerik türlerini doğru tanımlamak hem performansı artırır hem de gereksiz CPU kullanımını önler:
# Önerilen MIME türleri
gzip_types
text/plain
text/css
text/xml
text/javascript
application/javascript
application/json
application/xml
application/xml+rss
application/atom+xml
application/rss+xml
application/ld+json
application/manifest+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
font/opentype
font/ttf
font/eot
font/otf
image/svg+xml
image/x-icon;
Performans Karşılaştırması
| Özellik | Gzip | Brotli |
|---|---|---|
| Sıkıştırma Oranı | %60-70 | %72-82 |
| CPU Kullanımı | Düşük-Orta | Orta-Yüksek |
| Tarayıcı Desteği | %99+ | %90+ |
| Sıkıştırma Hızı | Hızlı | Orta |
| Hazır Modül | Evet | Hayır (derleme gerekli) |
Yapılandırmayı Test Etme
Sıkıştırmanın doğru çalışıp çalışmadığını kontrol etmek için curl komutu kullanabilirsiniz:
# Gzip testi
curl -H "Accept-Encoding: gzip" -I https://alanadiniz.com
# Brotli testi
curl -H "Accept-Encoding: br" -I https://alanadiniz.com
# Yanıt boyutunu kontrol etme
curl -H "Accept-Encoding: gzip" -s -o /dev/null -w '%{http_code} %{size_download}\n'
https://alanadiniz.com/style.css
Yanıt Header Kontrolü
Başarılı bir yapılandırmada şu header'ları görmeniz gerekir:
Content-Encoding: gzipveyaContent-Encoding: brVary: Accept-EncodingContent-Lengthdeğeri orijinal dosyadan küçük olmalı
yaygın Hatalar ve Çözümleri
Hata 1: CPU Aşırı Yüklenmesi
Yüksek sıkıştırma seviyeleri sunucu kaynaklarını tüketebilir. Çözüm olarak dinamik sıkıştırma yerine önceden sıkıştırılmış dosyalar kullanın veya seviyeyi 4-5 arasında tutun.
Hata 2: Önbellek Sorunları
Vary header'ı eksikse CDN ve tarayıcı önbellekleri yanlış içerik sunabilir. Her zaman gzip_vary on kullanın.
Hata 3: Yanlış MIME Türleri
Tüm içerik türlerini sıkıştırmaya çalışmak CPU israfına neden olur. Yalnızca metin tabanlı içerikleri sıkıştırın.
WordPress ve Diğer CMS'ler İçin Öneriler
WordPress hosting kullanıyorsanız, ek olarak PHP OPcache yapılandırması da performansı artırır. Nginx sıkıştırması ile birlikte:
- Sayfa yüklenme süresi %50'den fazla iyileşir
- Sunucu yanıt süresi (TTFB) düşer
- E-ticaret sitelerinde dönüşüm oranları artar
Sonuç ve Öneriler
Nginx üzerinde Gzip ve Brotli yapılandırması, web sitenizin performansını önemli ölçüde artıran kritik bir optimizasyon adımıdır. Önerilen yapılandırma:
- Öncelikle Brotli'yi etkinleştirin (daha iyi sıkıştırma)
- Gzip'i yedek olarak yapılandırın (eski tarayıcı desteği)
- Seviye 4-6 arasında tutun (denge)
- Vary header'ını mutlaka ekleyin
- Düzenli olarak test yapın
Bu yapılandırmayı uyguladığınızda, AI destekli sunucu yönetimi araçlarıyla performansı izleyebilir ve otomatik optimizasyonlardan yararlanabilirsiniz.