Web performansı, 2026 yılında SEO (Arama Motoru Optimizasyonu) ve kullanıcı deneyimi (UX) için en kritik faktör haline gelmiştir. Google'ın Core Web Vitals metrikleri, özellikle LCP (Largest Contentful Paint) ve INP (Interaction to Next Paint) skorları, sunucu yanıt süresine doğrudan bağlıdır.
Bu rehberde, Linux Hosting altyapılarında en çok tercih edilen web sunucusu olan Nginx'in, varsayılan ayarlarının ötesine geçerek nasıl bir performans canavarına dönüştürüleceğini adım adım inceleyeceğiz. İster SSD VDS kullanın ister fiziksel sunucu, bu ayarlar web sitenizin trafiğini daha verimli karşılamasını sağlayacaktır.
/etc/nginx/nginx.conf dosyası üzerinde yapılır. Değişiklik yapmadan önce mutlaka cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak komutu ile yedek alınız.
1. Worker Processes ve Bağlantı Yönetimi
Nginx, olay güdümlü (event-driven) bir mimariye sahiptir. Bu, Apache gibi her bağlantı için yeni bir işlem (process) veya iş parçacığı (thread) oluşturmak yerine, asenkron olarak binlerce bağlantıyı işleyebileceği anlamına gelir. Ancak bunun için doğru yapılandırılması şarttır.
Worker Processes
Bu direktif, Nginx'in kaç adet işçi işlemi çalıştıracağını belirler. 2026 modern sunucu mimarilerinde en iyi pratik, bu değeri sunucudaki CPU çekirdek sayısına eşitlemektir.
user www-data; # İşlemci çekirdek sayısına göre otomatik ayarlar worker_processes auto; # Açık dosya limitini artırır (ulimit -n değerinden yüksek olmamalı) worker_rlimit_nofile 100000; events { # Her worker'ın aynı anda kabul edebileceği bağlantı sayısı worker_connections 4096; # Linux için en verimli event modeli use epoll; # Aynı anda birden fazla bağlantıyı kabul et multi_accept on; }
Hesaplama: Maksimum Müşteri Sayısı = worker_processes * worker_connections. Örneğin 4 çekirdekli bir Fiziksel Sunucu için 4 * 4096 = 16.384 eşzamanlı bağlantı teorik olarak işlenebilir.
2. Buffer ve Timeout Ayarları
Buffer boyutları çok düşükse, Nginx sürekli olarak diske yazma işlemi yapar, bu da performansı öldürür. Çok yüksekse, RAM tüketimi artar ve DDoS saldırılarına açık hale gelebilirsiniz. Dengeli bir yapılandırma şarttır.
http { # --- Buffer Ayarları --- client_body_buffer_size 10K; client_header_buffer_size 1k; client_max_body_size 8m; # Dosya yükleme limiti large_client_header_buffers 2 1k; # --- Timeout Ayarları (Saniye) --- # Bağlantıyı gereksiz yere açık tutmamak için düşürün client_body_timeout 12; client_header_timeout 12; # Keepalive süresi - çok yüksek olması RAM şişirir keepalive_timeout 15; send_timeout 10; # Dosya gönderimi optimizasyonları sendfile on; tcp_nopush on; # Paketleri tam dolu gönder tcp_nodelay on; # Keepalive bağlantılarında gecikmeyi önle }
3. Gzip ve Brotli Sıkıştırma
Verilerin sıkıştırılarak gönderilmesi, bant genişliği kullanımını azaltır ve sitenizin yüklenme hızını artırır. 2026'da Brotli, Gzip'e göre daha iyi sıkıştırma oranları sunduğu için standart haline gelmektedir. Eğer sunucunuzda Brotli modülü yoksa, önce Gzip'i optimize edin.
gzip on; gzip_comp_level 5; # 1-9 arası. 5 ideal denge noktasıdır. gzip_min_length 256; gzip_proxied any; gzip_vary on; gzip_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css text/plain text/x-component;
brotli on; ve brotli_comp_level 6; komutlarını ekleyerek metin tabanlı dosyalarda %20'ye varan ekstra sıkıştırma sağlayabilirsiniz.
4. FastCGI Cache (Mikro Önbellekleme)
WordPress veya Laravel gibi PHP tabanlı sistemler kullanıyorsanız, PHP işlemlerini azaltmanın en iyi yolu FastCGI Cache kullanmaktır. Bu, dinamik sayfaları statik HTML gibi sunarak TTFB (Time to First Byte) süresini dramatik şekilde düşürür.
Önce önbellek dizinini oluşturun:
mkdir -p /var/cache/nginx/fastcgi_temp chown -R www-data:www-data /var/cache/nginx
Ardından nginx.conf veya vhost dosyanıza ekleyin:
# Cache yolunu tanımla (http bloğu içine) fastcgi_cache_path /var/cache/nginx/fastcgi_temp levels=1:2 keys_zone=WORDPRESS:100m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; server { # ... diğer ayarlar ... location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 301 302 60m; fastcgi_cache_use_stale error timeout updating invalid_header http_500; fastcgi_cache_min_uses 1; fastcgi_cache_lock on; # Cache bypass kuralları (Admin paneli, çerezler vb. için) fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-FastCGI-Cache $upstream_cache_status; include fastcgi_params; } }
5. Keepalive ve Upstream Optimizasyonu
Nginx'in backend (PHP-FPM veya Node.js) ile konuşurken her seferinde yeni bağlantı açmasını engellemek için keepalive kullanmalısınız. Bu, SSL el sıkışma maliyetlerini ve TCP bağlantı kurulum sürelerini ortadan kaldırır.
upstream php-handler { server unix:/var/run/php/php8.3-fpm.sock; keepalive 16; }
6. SSL/TLS ve Güvenlik Tuning
HTTPS artık bir standarttır, ancak yanlış yapılandırılmış SSL, sunucuyu yavaşlatabilir. HTTP/2 ve yeni nesil HTTP/3 (QUIC) protokollerini aktif ederek paralel veri akışı sağlayın. Güvenlik için SSL Sertifikaları sayfamızı inceleyebilirsiniz.
server { listen 443 ssl http2; # SSL Session Cache (El sıkışma süresini azaltır) ssl_session_cache shared:SSL:50m; # ~20.000 oturum ssl_session_timeout 1d; ssl_session_tickets off; # Modern şifreleme algoritmaları ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...'; ssl_prefer_server_ciphers on; # OCSP Stapling (DNS sorgu süresini azaltır) ssl_stapling on; ssl_stapling_verify on; }
7. Linux Kernel (Sysctl) Ayarları
Nginx ne kadar iyi ayarlanırsa ayarlansın, altındaki işletim sistemi (Linux) binlerce bağlantıyı kabul edecek şekilde ayarlanmazsa darboğaz oluşur. /etc/sysctl.conf dosyasını düzenleyerek ağ yığınını optimize edin.
# Maksimum açık dosya sayısı fs.file-max = 2097152 # Bağlantı kuyruğu limiti (Backlog) net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65535 # TIME_WAIT durumundaki soketleri yeniden kullan net.ipv4.tcp_tw_reuse = 1 # TCP Keepalive ayarları net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 15 # TCP Pencere boyutları (Yüksek bant genişliği için) net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 # SYN Flood koruması net.ipv4.tcp_syncookies = 1
Ayarları uygulamak için: sysctl -p komutunu çalıştırın.
8. İzleme ve Log Yönetimi
Performansı ölçemezseniz, iyileştiremezsiniz. Nginx'in stub_status modülünü aktif ederek anlık bağlantı sayılarını takip edin. Ancak, access log yazmak yüksek disk I/O yaratabilir. Yüksek trafikli sitelerde access logları bufferlayarak yazmak performansı artırır.
# Logları bellekte biriktirip toplu yaz (Diski yormaz) access_log /var/log/nginx/access.log main buffer=16k flush=2m; # Statik dosyalar için log tutmayı kapat location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { access_log off; expires 365d; }
Sonuç ve Öneriler
Nginx optimizasyonu, tek seferlik bir işlem değil, sürekli izleme ve ince ayar gerektiren bir süreçtir. Eka Sunucu olarak, tüm Sunucu Optimizasyon hizmetlerimizde bu ileri düzey teknikleri uyguluyoruz.
LiteSpeed Web Server gibi alternatifler de performans konusunda iddialıdır. Eğer Nginx yapılandırması karmaşık geliyorsa, LiteSpeed Nedir? makalemizi inceleyerek alternatifleri değerlendirebilirsiniz.