format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightNginx Önbellek Yapılandırması: Performansı Maksimuma Çıkarma
- arrow_rightProxy Cache Yapılandırması
- arrow_rightFastCGI/PCache Niteliği
- arrow_rightGzip Sıkıştırma: Veri Transferini Optimize Etme
- arrow_rightGzip Temel Yapılandırması
- arrow_rightBrotli Sıkıştırma: Yeni Nesil Çözüm
- arrow_rightPerformans Karşılaştırma Tablosu
- arrow_rightÖnbellek Stratejileri ve En İyi Uygulamalar
- arrow_rightÖnbellek Katmanları
- arrow_rightÖnbellek Temizleme Stratejileri
- arrow_rightVary Header Kullanımı
- arrow_rightSSL/TLS Önbellek Optimizasyonu
- arrow_rightYük Dengeleme ile Entegrasyon
- arrow_rightİzleme ve Hata Ayıklama
- arrow_rightSonuç
Nginx Önbellek Yapılandırması: Performansı Maksimuma Çıkarma
Nginx, modern web sunucularının en popüler seçeneklerinden biri olarak yüksek trafikli web uygulamalarının temel taşı haline gelmiştir. Doğru yapılandırılmış bir Nginx önbellek sistemi, sunucu yükünü %70 oranında azaltabilir ve sayfa yüklenme sürelerini 3-5 kat hızlandırabilir.
Önbellek mekanizması, dinamik içeriklerin yeniden oluşturulmasını önleyerek backend sunucuların yükünü hafifletir. Veri merkezi çözümleri ile entegre edildiğinde, bu optimizasyon sayesinde işletmeler önemli maliyet tasarrufu sağlar.
Proxy Cache Yapılandırması
Proxy cache, Nginx'in en yaygın kullanılan önbellek türüdür. Arka uç sunuculardan alınan yanıtları diske veya belleğe kaydederek sonraki isteklerde doğrudan sunar.
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=app_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location / {
proxy_pass http://backend;
proxy_cache app_cache;
proxy_cache_valid 200 60m;
proxy_cache_valid 404 5m;
add_header X-Cache-Status $upstream_cache_status;
}
}
Bu yapılandırma, 200 yanıtlarını 60 dakika boyunca önbellekte tutar. X-Cache-Status header'ı, önbellek durumunu izlemenizi sağlar: HIT, MISS, EXPIRED veya BYPASS.
FastCGI/PCache Niteliği
PHP ve diğer FastCGI uygulamaları için veritabanı performansı ile birlikte FastCGI önbelleği kritik önem taşır. Özellikle WordPress, Laravel gibi platformlarda dramatik performans artışı sağlar.
fastcgi_cache_path /var/cache/fastcgi levels=1:2 keys_zone=fcgi_cache:100m max_size=1g inactive=60m;
server {
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_cache fcgi_cache;
fastcgi_cache_valid 200 60m;
fastcgi_cache_use_stale error timeout updating;
fastcgi_cache_lock on;
}
}
Bu yapılandırma, 100MB bellek alanı kullanarak 1GB'a kadar disk önbellek oluşturur. fastcgi_cache_lock özelliği, cache stampede (önbellek çöküşü) sorununu önler.
Gzip Sıkıştırma: Veri Transferini Optimize Etme
Gzip sıkıştırma, web performansının temel taşlarından biridir. Doğru yapılandırılmış bir Gzip sistemi, transfer edilen veri miktarını %70-90 oranında azaltabilir. Google'ın Core Web Vitals standartlarına göre, LCP (Largest Contentful Paint) değerini doğrudan etkiler.
Gzip Temel Yapılandırması
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 application/xml+rss text/javascript; gzip_disable "msie6";
gzip_comp_level değeri 1-9 arasında değişir; 6 optimal denge sağlar. Daha yüksek değerler daha küçük dosya boyutları sunar ancak CPU kullanımını artırır.
Brotli Sıkıştırma: 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 bir algoritmadır. Modern tarayıcıların %95'inden fazlası tarafından desteklenir.
Nginx'te Brotli kullanmak için ngx_brotli modülü gereklidir:
brotli on; brotli_comp_level 6; brotli_types text/html text/css application/json application/javascript; brotli_min_length 256;
Performans Karşılaştırma Tablosu
| Yöntem | Ortalama Sıkıştırma | CPU Yükü | Önbellek Süresi |
|---|---|---|---|
| Proxy Cache | Yok | Düşük | Yapılandırılabilir |
| Gzip | %70-80 | Orta | Her istekte |
| Brotli | %85-90 | Orta-Yüksek | Her istekte |
| Brotli + Önbellek | %85-90 | Düşük | Yapılandırılabilir |
Önbellek Stratejileri ve En İyi Uygulamalar
Önbellek Katmanları
Etkili bir önbellek mimarisi, birden fazla katmandan oluşur:
- Tarayıcı Önbelleği: Kullanıcının yerel cihazında saklanan statik içerikler için
- CDN Önbelleği: Coğrafi olarak dağıtılmış içerik dağıtım ağları için
- Reverse Proxy Önbelleği: Nginx veya Varnish gibi sunucu katmanı için
- Uygulama Önbelleği: Redis, Memcached gibi veri yapıları için
Önbellek Temizleme Stratejileri
Önbellek yönetiminde en kritik konulardan biri temizleme mekanizmasıdır. Nginx, proxy_cache_purge modülü ile dinamik temizleme imkanı sunar:
location ~ /purge(/.*) {
proxy_cache_purge app_cache "$scheme$request_method$host$1";
}
Bu yapılandırma ile /purge/path isteği, ilgili önbellek girdisini anında siler.
Vary Header Kullanımı
Farklı cihazlar ve kullanıcılar için içerik değiştiğinde, Vary header kullanmak kritik önem taşır:
proxy_cache_vary on; proxy_cache_vary_by_cookie uid; proxy_cache_vary_by_header Accept-Language;
Bu ayar, farklı cookie değerlerine veya dil tercihlerine sahip kullanıcılar için ayrı önbellek girdileri oluşturur.
SSL/TLS Önbellek Optimizasyonu
SSL sertifikası kullanılan sitelerde, TLS session cache yapılandırması handshake süresini önemli ölçüde azaltır:
ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off;
Bu yapılandırma, SSL handshake maliyetini azaltarak toplam yüklenme süresini iyileştirir.
Yük Dengeleme ile Entegrasyon
Yüksek trafikli sistemlerde, Nginx'in yük dengeleyici özellikleri ile önbellek kombinasyonu kritik performans sağlar:
upstream backend {
least_conn;
server app1.example.com;
server app2.example.com;
server app3.example.com;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=all:50m;
server {
location / {
proxy_pass http://backend;
proxy_cache all;
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
}
}
İzleme ve Hata Ayıklama
Önbellek performansını izlemek için Nginx status modülü kullanılabilir:
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
Bu endpoint, aktif bağlantı sayısını, okunan/yazılan baytları ve önbellek istatistiklerini sağlar. 502 Bad Gateway hataları gibi sorunları teşhis etmek için önbellek durumu değerlerini analiz etmek önemlidir.
Sonuç
Nginx önbellek ve sıkıştırma yapılandırması, web uygulamalarının performansını dramatik şekilde artırabilir. Doğru strateji ile:
- Sunucu yükü %70'e varan oranlarda azaltılabilir
- Sayfa yüklenme süreleri 3-5 kat hızlandırılabilir
- Bandwidth kullanımı %80'e varan oranlarda düşürülebilir
- Arama motoru sıralamaları iyileştirilebilir
Unutmayın: Her uygulama farklıdır. Yapılandırmaları kendi trafik kalıplarınıza ve kaynaklarınıza göre optimize etmeniz gerekir. Önbellek sürelerini, sıkıştırma seviyelerini ve depolama alanlarını test ederek en uygun kombinasyonu bulun.