1. Gzip Sıkıştırmasını Aktif Hale Getirin
Web sitenizin hızlı yüklenmesi için içeriklerin sıkıştırılması çok önemli. Gzip, Nginx’te veri boyutlarını küçültmek için kullanılan harika bir araçtır. Sayfa yükleme sürelerini kısaltmak ve bant genişliğinden tasarruf sağlamak için, Gzip’i aktif hale getirmek oldukça basittir.
kopyalagzip on; gzip_vary on; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/javascript application/json image/svg+xml;
Bu konfigürasyon, HTML, CSS, JavaScript ve SVG dosyalarınızı sıkıştırarak, sayfa yükleme sürenizi önemli ölçüde hızlandırır.
2. Connection Keep-Alive Özelliğini Aktif Edin
Web tarayıcıları, her istek için sunucuya yeni bir bağlantı kurmak yerine mevcut bağlantıyı birkaç istekte birden kullanabilmelidir. Bu özelliği kullanmak, bağlantı kurma sürelerini azaltarak, sayfaların daha hızlı yüklenmesini sağlar.
kopyalakeepalive_timeout 65;
Bu konfigürasyon, bağlantı sürelerini optimize eder ve sürekli bağlantı kurma işlemini engeller.
3. Nginx’i Reverse Proxy Olarak Yapılandırın
Bir reverse proxy, kullanıcıların doğrudan uygulamanıza erişmesini engelleyerek güvenliği artırır ve yük dengelemesi yapar. Nginx, yük dengelemesi ve proxy hizmeti konusunda oldukça etkili bir çözümdür. Bu, özellikle yoğun trafiğe sahip siteler için mükemmel bir çözümdür.
kopyalalocation / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
Bu yapılandırma, gelen trafiği doğru sunucuya yönlendirirken, tüm başlık bilgilerini de doğru şekilde iletir.
4. Proxy Cache Kullanımı
Nginx’in proxy cache özelliğini etkinleştirerek, sunucunuzun yoğun trafiği daha verimli bir şekilde yönetmesini sağlayabilirsiniz. Sık sık talep edilen içerikler cache’de tutulur ve tekrar tekrar sunucudan çekilmesine gerek kalmaz.
kopyalaproxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 301 302 10m;
Bu konfigürasyonla, sık erişilen veriler hızlıca yüklenir, böylece sunucu üzerindeki yük azalır.
5. FastCGI Cache ile Dinamik İçeriği Hızlandırın
PHP gibi dinamik içeriklerin her seferinde işlenmesini engellemek için FastCGI Cache kullanabilirsiniz. Bu, sayfa oluşturma sürecini hızlandırır ve içerikler daha hızlı sunulur.
kopyalafastcgi_cache_path /tmp/cache levels=1:2 keys_zone=fastcgi_cache:10m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_valid 200 301 302 10m;
Bu ayar, özellikle yoğun trafiğe sahip dinamik siteler için mükemmel bir çözüm sağlar.
6. HTTP/2 Desteğini Etkinleştirin
HTTP/2, HTTP/1.1’e göre çok daha hızlı bir protokoldür. Çoklu bağlantıları tek bir bağlantı üzerinden yönetebilmesi sayesinde, sayfa yükleme hızlarını büyük ölçüde artırır. Nginx, HTTP/2 desteği sunar ve bunu etkinleştirmek oldukça basittir.
kopyalaserver { listen 443 ssl http2; ... }
Bu konfigürasyon, HTTP/2 protokolü sayesinde, özellikle mobil cihazlarda performansı önemli ölçüde artırır.
7. Brotli Sıkıştırmasını Kullanın
Brotli, Gzip’in modern ve daha verimli bir versiyonudur. Özellikle metin tabanlı içerikler üzerinde ciddi boyut avantajları sağlar. Nginx’te Brotli sıkıştırmasını etkinleştirmek için aşağıdaki adımları takip edebilirsiniz.
kopyalabrotli on; brotli_comp_level 6; brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Bu sayede, veri transferini daha hızlı ve verimli bir şekilde gerçekleştirebilirsiniz.
8. Static Content Caching
Statik içeriklerin (resimler, CSS dosyaları, JavaScript) doğru bir şekilde cache edilmesi, sayfa yükleme sürelerini önemli ölçüde azaltır. Nginx, bu tür içeriklerin cache edilmesi için mükemmel bir yapı sunar.
kopyalalocation ~* \.(jpg|jpeg|png|gif|css|js|woff|woff2|svg)$ { expires 30d; add_header Cache-Control "public, no-transform"; }
Bu ayar, statik içeriklerinizin daha hızlı yüklenmesini sağlar ve bant genişliği tasarrufu sağlar.
9. Nginx’e Rate Limiting Ekleyin
Nginx, trafiği sınırlayarak sunucunuzun aşırı yüklenmesini engelleyebilir. Özellikle DDoS saldırılarına karşı koruma sağlamak için bu ayar oldukça önemlidir.
kopyalalimit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=5;
Bu, her IP adresinden saniyede yalnızca 1 istek alacak şekilde yapılandırılmıştır.
10. Nginx’in Loglama Ayarlarını Optimizasyon
Nginx’in log dosyaları, sistem kaynaklarını hızlıca tükenmesine neden olabilir. Logları doğru şekilde yapılandırmak, gereksiz kaynak tüketimini engeller ve performansı artırır.
kopyalaaccess_log off; error_log /var/log/nginx/error.log crit;
Bu ayar, yalnızca kritik hata mesajlarını loglar ve performansı olumsuz etkilemeden sunucunuzun stabil çalışmasını sağlar.
### Sonuç:
Nginx, doğru yapılandırıldığında inanılmaz derecede hızlı ve verimli bir web sunucusu olabilir. Yukarıda bahsedilen konfigürasyonlarla, web sitenizin performansını önemli ölçüde artırabilirsiniz. Bu optimizasyon adımlarını izleyerek, hem kullanıcı deneyimini iyileştirir hem de SEO açısından avantaj sağlar, çünkü hız, arama motorları tarafından önemli bir sıralama faktörü olarak kabul edilir.