Nginx Cache Yapılandırması
Nginx Cache Nedir?
Nginx cache, web sunucusunun sıkça erişilen statik ve dinamik içerikleri (resimler, CSS dosyaları, JavaScript dosyaları, HTML sayfaları vb.) bellekte veya disk üzerinde geçici olarak saklamasıdır. Bir kullanıcı bir web sayfasını veya kaynağını talep ettiğinde, Nginx öncelikle bu içeriğin önbellekte olup olmadığını kontrol eder. Eğer içerik önbellekte bulunuyorsa, sunucudan tekrar alınmak yerine doğrudan kullanıcıya gönderilir. Bu işlem, sunucunun işlem gücünden tasarruf sağlar ve yanıt sürelerini milisaniyeler seviyesinde kısaltır. Nginx'in önbellekleme mekanizması, HTTP protokolünün standartlarına uygun olarak tasarlanmıştır ve tarayıcı önbelleği ile sunucu tarafı önbelleği olmak üzere iki ana türde işlev görür. Sunucu tarafı önbellekleme, özellikle yüksek trafikli web siteleri için kritik öneme sahiptir.
Nginx Cache Nasıl Çalışır?
Nginx'in önbellekleme mekanizması, belirli direktifler aracılığıyla yapılandırılır ve birkaç adımdan oluşur:
- İstek Alınması: Nginx, bir istemciden (tarayıcı) gelen HTTP isteğini alır.
- Önbellek Kontrolü: Nginx, isteğin karşılığı olan içeriğin önbellekte mevcut olup olmadığını kontrol eder. Bu kontrol, önbellek anahtarına (genellikle URL ve ilgili başlıklar) göre yapılır.
- Önbellekten Yanıt Verme (Cache Hit): Eğer içerik önbellekte bulunuyorsa (cache hit), Nginx bu içeriği doğrudan istemciye gönderir. Bu durumda, sunucu tarafında herhangi bir işleme veya dosya okuma işlemi yapılmaz, bu da süreci son derece hızlı hale getirir.
- Önbelleğe Alma ve Yanıt Verme (Cache Miss): Eğer içerik önbellekte bulunmuyorsa (cache miss), Nginx isteği arka uç sunucusuna (upstream server) iletir. Arka uç sunucusundan gelen yanıtı alır, bu yanıtı istemciye gönderir ve aynı zamanda yapılandırmaya bağlı olarak bu yanıtı önbelleğe depolar.
- Önbellek Ayarlarının Yönetimi: Nginx, önbelleğe alınan verilerin ne kadar süreyle saklanacağını (TTL - Time To Live), hangi kriterlere göre önbelleğe alınacağını ve önbelleğin nasıl temizleneceğini belirten direktifleri kullanır. Bu direktifler, önbelleğin etkinliğini ve güncelliğini yönetmek için kullanılır.
- Önbellek Anahtarının Oluşturulması: Önbellek anahtarı, önbelleğe alınacak içeriği benzersiz şekilde tanımlayan bir kombinasyondur. Genellikle isteğin URL'si, kullanılan HTTP metodu ve belirli başlıklar (örn. 'Accept-Encoding') bu anahtarın bir parçasıdır.
Bu süreç, özellikle tekrarlanan isteklerde sunucu kaynaklarını minimumda kullanarak performansı maksimize eder.
Nginx Cache Türleri ve Yapılandırma Seçenekleri
Nginx, çeşitli önbellekleme ihtiyaçlarını karşılamak için farklı önbellekleme mekanizmaları ve yapılandırma seçenekleri sunar:
- Proxy Cache (proxy_cache): Nginx'i bir ters proxy olarak kullanırken, arka uç sunucularından alınan yanıtları önbelleğe almak için kullanılır. Bu, en yaygın kullanılan Nginx önbellekleme türüdür.
- FastCGI Cache (fastcgi_cache): Nginx'in FastCGI protokolü aracılığıyla PHP-FPM gibi uygulamalarla iletişim kurduğu durumlarda kullanılır. Dinamik olarak oluşturulan içerikleri önbelleğe almak için etkilidir.
- SCGI Cache (scgi_cache): SCGI protokolü kullanan uygulamalar için benzer bir önbellekleme mekanizması sağlar.
- uWSGI Cache (uwsgi_cache): uWSGI protokolü kullanan uygulamalar için önbellekleme imkanı sunar.
Her önbellekleme türü, kendine özgü direktiflere sahiptir. Örneğin, proxy_cache için proxy_cache_path, proxy_cache_key, proxy_cache_valid gibi direktifler kullanılırken, fastcgi_cache için fastcgi_cache_path, fastcgi_cache_key, fastcgi_cache_valid gibi direktifler kullanılır. Bu direktifler, önbellek dizininin konumu, önbellek anahtarının nasıl oluşturulacağı, önbelleğin geçerlilik süresi ve önbelleğe alınacak yanıt kodları gibi kritik ayarları belirler.
Nginx Proxy Cache Yapılandırma Rehberi
Nginx proxy cache'i yapılandırmak için aşağıdaki adımlar izlenir:
- Önbellek Dizininin Tanımlanması:
httpbloğu içinde veyaserverbloğundan önceproxy_cache_pathdirektifi ile önbelleğin disk üzerinde saklanacağı dizin, boyutu ve diğer parametreler tanımlanır.proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;/var/cache/nginx: Önbellek dosyalarının saklanacağı dizin.levels=1:2: Önbellek dizin yapısını belirler (performans için önemlidir).keys_zone=my_cache:10m: Önbellek anahtarlarının saklanacağı paylaşımlı belleği (shared memory zone) tanımlar.my_cachezone'un adı,10mise boyutu.max_size=10g: Önbelleğin maksimum boyutunu belirtir.inactive=60m: Belirtilen süre boyunca erişilmeyen dosyaların önbellekten silinmesini sağlar.use_temp_path=off: Geçici dosyaların kullanılmasını engeller, bu da I/O işlemlerini azaltabilir.
- Önbellek Kullanımının Aktif Edilmesi:
serverveyalocationbloğu içindeproxy_cachedirektifi ile önbellekleme aktif edilir vekeys_zoneile tanımlanan zone adı belirtilir.location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_key "$scheme$request_method$host$request_uri"; add_header X-Cache-Status $upstream_cache_status; } - Önbellek Geçerlilik Süresinin Belirlenmesi:
proxy_cache_validdirektifi ile farklı HTTP durum kodları için önbellek geçerlilik süreleri ayarlanır. - Önbellek Anahtarının Tanımlanması:
proxy_cache_keydirektifi ile önbelleğe alınacak içeriği benzersiz şekilde tanımlayan anahtar oluşturulur. - Önbellek Durumunun İzlenmesi:
add_header X-Cache-Status $upstream_cache_status;ile yanıt başlığına önbellek durumu (HIT, MISS, EXPIRED, etc.) eklenerek hata ayıklama kolaylaştırılır.
Bu yapılandırma, Nginx'in gelen istekleri önbellekten karşılamasını sağlayarak performans artışı sunar.
HTTP/2 Yapılandırması ve Optimizasyonlar
Nginx, HTTP/2 protokolünü destekleyerek daha verimli veri aktarımı sağlar. HTTP/2, geleneksel HTTP/1.1'e göre çoklu istekleri tek bir bağlantı üzerinden multiplexing (çoklama) yeteneği sayesinde daha hızlı yükleme süreleri sunar. Nginx'te HTTP/2'yi etkinleştirmek için listen direktifine http2 parametresi eklenir ve SSL/TLS sertifikası zorunlu hale gelir. Performansı daha da artırmak için gzip sıkıştırma ve tarayıcı önbellekleme başlıkları da yapılandırılmalıdır.
Nginx Gzip Sıkıştırma Yapılandırması
Gzip sıkıştırma, sunucu tarafından gönderilen verilerin boyutunu küçülterek bant genişliği kullanımını azaltır ve yükleme sürelerini iyileştirir. Nginx'te gzip'i etkinleştirmek için http bloğunda aşağıdaki direktifler kullanılır:
gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
Bu ayarlar, metin tabanlı dosyaların (HTML, CSS, JavaScript, JSON vb.) sıkıştırılmasını sağlar.
Nginx Tarayıcı Önbellekleme Yapılandırması
Tarayıcı önbellekleme, istemci tarayıcısının tekrar erişilebilecek kaynakları yerel olarak saklamasını sağlar. Bu, Cache-Control ve Expires başlıkları aracılığıyla kontrol edilir. Belirli dosya türleri için uzun geçerlilik süreleri belirlemek, tekrarlanan ziyaretlerde performansı önemli ölçüde artırır.
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public";
}
Bu yapılandırma, resimler, CSS ve JavaScript dosyaları gibi statik varlıkların bir yıl boyunca tarayıcı önbelleğinde saklanmasını sağlar.
Nginx SSL/TLS Yapılandırması
Güvenli bir web sitesi için SSL/TLS sertifikası kullanımı zorunludur. Nginx'te SSL/TLS'yi etkinleştirmek için listen 443 ssl; direktifi kullanılır ve sertifika ile özel anahtar dosyalarının yolları belirtilir. Ayrıca, güncel güvenlik standartlarına uyum sağlamak için SSL/TLS protokol sürümleri ve şifreleme algoritmaları da dikkatlice yapılandırılmalıdır.
Nginx Cache Yapılandırmasında Sık Yapılan Hatalar ve Çözümleri
Nginx cache yapılandırmasında karşılaşılabilecek bazı yaygın hatalar ve çözümleri şunlardır:
- Yanlış Dizin İzinleri: Nginx'in önbellek dosyalarını yazabileceği dizin izinlerinin doğru ayarlanmaması. Çözüm: Nginx çalışan kullanıcısının (genellikle
www-dataveyanginx) önbellek dizini üzerinde yazma iznine sahip olduğundan emin olunmalıdır. - Yanlış Önbellek Anahtarı: Önbellek anahtarının (
proxy_cache_key) doğru tanımlanmaması, farklı içeriklerin aynı önbellek girdisiyle ilişkilendirilmesine neden olabilir. Çözüm: URL, isteğin metodu ve host gibi benzersiz tanımlayıcıları içeren kapsamlı bir anahtar kullanılmalıdır. - Önbellek Geçerlilik Süresinin Yanlış Ayarlanması: Dinamik içeriklerin çok uzun süre önbellekte tutulması güncel olmayan verilerin sunulmasına yol açabilir. Çözüm: İçeriğin doğasına göre uygun
proxy_cache_validsüreleri belirlenmelidir. - Önbellek Temizleme Sorunları: Önbelleğe alınmış verilerin manuel olarak veya otomatik olarak temizlenmemesi. Çözüm:
inactiveparametresi doğru ayarlanmalı veya gerektiğindeproxy_cache_purgemodülü gibi çözümler kullanılmalıdır. use_temp_path=offHatası: Bu ayar bazı durumlarda disk I/O hatalarına neden olabilir. Çözüm: Bu parametreyi devre dışı bırakmak veya geçici dizinleri farklı bir diskte barındırmak gerekebilir.
Teknik Özellikler ve Standartlar
Nginx önbellekleme mekanizması, HTTP/1.0 ve HTTP/1.1 protokol standartlarına tam uyumluluk gösterir. proxy_cache direktifi, RFC 2616 ve sonraki HTTP revizyonlarındaki önbellekleme kurallarını uygular. Önbellek anahtarı oluşturulurken kullanılan değişkenler, RFC 7230 ve RFC 7231'de tanımlanan HTTP başlıklarını temel alır. Disk tabanlı önbellekleme, dosya sistemi izinleri ve performansına bağlıdır. Paylaşımlı bellek (shared memory) kullanımı, keys_zone direktifi aracılığıyla POSIX veya System V IPC mekanizmalarını kullanabilir.
2026 Sektör Verileri ve İstatistikler
W3Techs 2026 verilerine göre, Nginx web sunucuları arasında önemli bir pazar payına sahiptir ve performans odaklı projelerde sıklıkla tercih edilmektedir. Statista 2026 raporuna göre, küresel web trafiğinin artmaya devam etmesiyle birlikte, önbellekleme çözümlerinin önemi daha da artacaktır. Cloudflare Radar 2026 verilerine göre, web sitelerinin ortalama yüklenme sürelerinin iyileştirilmesi, kullanıcı memnuniyetini ve dönüşüm oranlarını doğrudan etkilemektedir. Netcraft 2026 araştırmasına göre, modern web mimarilerinde önbellekleme, sunucu yükünü azaltma ve ölçeklenebilirliği artırma açısından kritik bir rol oynamaktadır.
İlgili Konular
Nginx'in sunduğu avantajları daha iyi anlamak için, Apache vs Nginx Hangisi Daha İyi? makalesini inceleyebilirsiniz. Ayrıca, Nginx'i sunucunuza kurmak için Web Sunucusu Kurulumu rehberimize göz atabilirsiniz.

