Blogchevron_rightSunucu Yönetimichevron_rightNginx Önbellekleme ve Performans Rehberi

Nginx Önbellekleme ve Performans Rehberi

S
Serversium
calendar_today28 Mayıs 2026
schedule5 dk okuma
Nginx Önbellekleme ve Performans Rehberi

Nginx Üzerinde Gelişmiş Önbellekleme ve Performans Ayarları

Nginx, dünya genelinde en popüler web sunucularından biri olarak milyonlarca web sitesine hizmet vermektedir. Performans ve önbellekleme ayarlarını doğru yapılandırmak, sunucu yanıt sürelerini %60-80 oranında azaltabilir ve sunucu kaynak tüketimini önemli ölçüde düşürebilir. Bu kapsamlı rehberde, Nginx'in gelişmiş önbellekleme mekanizmalarını ve performans optimizasyon tekniklerini detaylı olarak inceleyeceğiz.

Nginx Önbellekleme Mekanizmasının Temelleri

Nginx'in önbellekleme sistemi, edge computing mimarisinde kritik bir rol oynar. Proxy katmanında çalışan bu sistem, arka uç sunucularına olan istekleri minimize ederek hem kullanıcı deneyimini hem de sunucu performansını artırır.

Önbellekleme mekanizması temel olarak ikiye ayrılır: proxy cache (ters proxy önbellekleme) ve FastCGI cache (uygulama düzeyinde önbellekleme). Her iki yöntem de farklı use case'ler için optimize edilmiştir.

Proxy Cache Nasıl Çalışır?

Nginx, gelen istekleri arka uç sunucularına iletmeden önce önbellekte olup olmadığını kontrol eder. Bulunan yanıtlar, yapılandırılan süre boyunca disk veya bellekte saklanır. Bu sayede, dinamik içerikler bile statik içerik gibi hızlı bir şekilde sunulabilir.

Önbellekleme oranı (cache hit ratio) %70'in üzerinde tutulduğunda, sunucu yükü dramatik şekilde azalır. Yapılan araştırmalara göre, etkili bir önbellekleme stratejisi ortalama yanıt süresini 200ms'den 50ms'ye düşürebilir.

Proxy Cache Yapılandırması

Proxy cache'i etkinleştirmek için Nginx konfigürasyon dosyasında belirli direktifler kullanılmalıdır. Aşağıda temel bir proxy cache yapılandırması bulunmaktadır:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=app_cache:10m max_size=100m inactive=60m use_temp_path=off;

server {
    location / {
        proxy_cache app_cache;
        proxy_cache_valid 200 60m;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
        proxy_cache_lock on;
        add_header X-Cache-Status $upstream_cache_status;
        proxy_pass http://backend;
    }
}

Bu yapılandırmada, keys_zone parametresi önbellek meta verileri için ayrılan bellek miktarını belirler. max_size ise diske kaydedilecek maksimum önbellek boyutunu tanımlar.

Önbellekleme Süre Stratejileri

İçerik türüne göre önbellekleme sürelerini optimize etmek kritik önem taşır. Aşağıdaki tablo, farklı içerik türleri için önerilen süreleri göstermektedir:

İçerik Türü Önbellekleme Süresi Katman
Statik dosyalar (CSS, JS, Images) 7-30 gün Tarayıcı + Proxy
API yanıtları 5-60 dakika Proxy
HTML sayfaları 1-24 saat Proxy
Kullanıcıya özel içerik 0 (önbelleksiz) Yok

Önbellek Doğrulama ve PURGE İşlemleri

İçerik güncellendiğinde önbelleğin temizlenmesi gerekir. Nginx, ngx_cache_purge modülü ile bu işlemi destekler. Veritabanı yedekleme gibi kritik operasyonlardan sonra önbellek temizliği yapılması önerilir.

location ~ /purge(/.*) {
    proxy_cache_purge app_cache $1;
    access_log off;
}

FastCGI ve PHP Önbellekleme

PHP gibi dinamik içerik üreten diller için FastCGI cache, en etkili çözümlerden biridir. Bu yöntem, PHP-FPM ile Nginx arasında çalışarak uygulama sunucusunun yükünü önemli ölçüde azaltır.

fastcgi_cache_path /var/cache/fastcgi levels=1:2 keys_zone=php_cache:10m max_size=100m inactive=60m;

fastcgi_cache php_cache;
fastcgi_cache_valid 200 60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;

# Koşullu önbellekleme
set $skip_cache 0;
if ($query_string != "") {
    set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin|/wp-login.php") {
    set $skip_cache 1;
}
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

WordPress gibi içerik yönetim sistemlerinde, yönetici paneli isteklerinin önbelleğe alınmaması kritik önem taır. Yukarıdaki yapılandırma, bu durumu $skip_cache değişkeni ile ele almaktadır.

WordPress için Önbellekleme Optimizasyonu

WordPress sitelerinde FastCGI cache kullanımı, sayfa yüklenme sürelerini %90'a varan oranlarda iyileştirebilir. W3 Total Cache veya WP Super Cache eklentileri ile entegrasyon sağlanabilir. Özellikle Docker Swarm ortamlarında çalışan WordPress kurulumlarında bu yapılandırma kritik önem taşır.

Gzip Sıkıştırma Ayarları

Gzip sıkıştırma, aktarılan veri miktarını %60-80 oranında azaltarak bantwidth tasarrufu sağlar ve sayfa yüklenme sürelerini kısaltır. Nginx'te Gzip'i etkinleştirmek için:

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml;
gzip_min_length 1000;
gzip_disable "msie6";

gzip_comp_level parametresi 1 ile 9 arasında değer alır. Optimal değer genellikle 5-6 arasındadır; daha yüksek değerler CPU yükünü artırırken çok az bandwidth tasarrufu sağlar.

Brotli Sıkıştırma Desteği

Brotli, Gzip'e göre %15-25 daha iyi sıkıştırma oranları sunar. Google'ın geliştirdiği bu algoritma, modern tarayıcılar tarafından desteklenmektedir. Brotli kullanımı için ngx_brotli modülü gereklidir:

brotli on;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
brotli_comp_level 6;
brotli_min_length 1000;

Tarayıcı Önbellekleme (Browser Caching)

expires ve cache-control header'ları, kullanıcının tarayıcısında içeriklerin önbelleklenmesini sağlar. Bu yöntem, tekrarlayan ziyaretlerde sunucuya istek atılmasını tamamen engeller:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|webp|svg|woff|woff2|ttf|eot)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
    access_log off;
}

Statik dosyalar için 30 günlük önbellekleme süresi önerilir. CSS ve JavaScript dosyaları için version query string'leri kullanılması, dosya güncellendiğinde tarayıcının yeni sürümü yüklemesini sağlar.

ETag ve Last-Modified Header'ları

ETag ve Last-Modified header'ları, tarayıcının sunucuya koşullu istek göndermesini sağlar. İçerik değişmemişse, sunucu 304 Not Modified yanıtı döner ve aktarılan veri miktarı sıfıra yakın olur:

etag on;
if_modified_since exact;

Worker Process ve Connection Ayarları

Nginx'in performansı, worker process ve connection yapılandırmasına doğrudan bağlıdır. Yanlış yapılandırılmış bir Nginx sunucusu, mevcut donanım potansiyelinin çok altında performans sunabilir.

worker_processes auto;
worker_rlimit_nofile 65535;
events {
    worker_connections 4096;
    use epoll;
    multi_accept on;
}

worker_processes auto parametresi, Nginx'in mevcut CPU çekirdek sayısına göre worker process sayısını otomatik ayarlamasını sağlar. worker_connections değeri, her worker'ın eşzamanlı kaç bağlantıyı yönetebileceğini belirler.

Epoll ve kqueue Yöntemleri

Linux sistemlerde epoll, FreeBSD sistemlerde kqueue kullanılmalıdır. Bu yöntemler, yüksek bağlantı sayılarında select/poll yöntemlerine göre 10 kata kadar performans artışı sağlar.

events {
    worker_connections 10240;
    use epoll;
    multi_accept on;
}

Open File Cache Yapılandırması

Sık erişilen dosyaların descriptor'larını önbelleğe almak, disk I/O operasyonlarını azaltır:

open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

TCP/UDP Optimizasyonları

Socket ayarlarını optimize etmek, yüksek trafikli sunucularda bağlantı verimliliğini artırır:

http {
    keepalive_timeout 65;
    keepalive_requests 100;
    tcp_nopush on;
    tcp_nodelay on;
    
    # Buffer ayarları
    client_body_buffer_size 10k;
    client_header_buffer_size 1k;
    client_max_body_size 8m;
    large_client_header_buffers 4 16k;
}

keepalive_timeout parametresi, boşta kalan bağlantıların ne kadar süre açık kalacağını belirler. tcp_nopush ve tcp_nodelay birlikte kullanıldığında, ağ performansı optimize edilir.

Load Balancing ile Performans

Yüksek trafikli uygulamalarda, birden fazla arka uç sunucusu kullanarak yük dengeleme yapılması önerilir. Nginx'in yerleşik load balancing özellikleri, bu senaryoyu verimli şekilde yönetir:

upstream backend {
    least_conn;
    server backend1.example.com:8080 weight=3;
    server backend2.example.com:8080 weight=2;
    server backend3.example.com:8080 backup;
    keepalive 32;
}

server {
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

least_conn algoritması, en az bağlantıya sahip sunucuya istek göndererek daha dengeli bir yük dağılımı sağlar. keepalive parametresi, arka uç sunucularıyla açık bağlantıların korunmasını sağlar ve yeni bağlantı oluşturma overhead'ını azaltır.

Sağlık Kontrolleri ve Failover

Arka uç sunucularının sağlık durumunu izlemek ve hatalı sunucuları otomatik olarak devre dışı bırakmak kritik önem taşır. DDoS koruma hizmetleri ile entegre çalışan sağlık kontrolleri, sunucu availablity'ini artırır.

Buffer ve Proxy Buffer Ayarları

Proxy buffer'ları, arka uç sunucularından gelen yanıtların Nginx tarafından tamponlanmasını sağlar. Doğru boyutlandırma,

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward