Merhabalar,
Bugün siz değerli ziyaretçilerimize Nginx optimizasyonu konusunda ipuçları vermeye çalışacağız.
Öncelikle Nginx Nedir ?
Nginx aslen mail.ru isimli rus mail sunucusu sitesi için Rus yazılım mühendisi Igor Sysoev tarafından geliştirilen hafif, stabil, hızlı bir mail istemcisi olarak kodlanan daha sonraları geliştirilerek tüm sunucular için uygun hale getirilen bir web sunucusudur. Apacheden % 400 daha performanslı olduğu testler ile kesindir. Nginx özellikle yüksek trafikli ve yoğun web siteleri için birebirdir. Single Thread yanıt yapısıyla sayfayı tek hamlede yükleyip sayfa açılma hızlarında gözle görülür bir artış sağlar. Ayrıca nginx apache ve litespeed ile karşılaştırıldığında çok daha az cpu kullanır. Buda vps, vds gibi sanal sunucular için Nginx'in ideal olduğu anlamına gelir.
Temel HTTP özellikleri
* Statik ve index dosyalarının sunumu, otomatik indeksleme; açık dosya açıklayıcı önbellek;
* Önbellek ile hızlandırılmış reverse proxying; basit yük dengeleme ve hata toleransı;
* Uzak FastCgi sunucularının önbelleklenmesi ile hızlandırılmış destek; basit yük dengeleme ve hata toleransı;
* Modüler yapı. Gzip, byte aralıkları, yığın cevaplar (chunked responses), XSLT, SSI, imaj boyutlandırma gibi filtreler. FastCGI veya proksilenmiş sunucular ile tek bir sayfada çoklu SSI içermelerinin paralel işlenmesi.
* SSL ve TLS SNI desteği.
Nginx Optimizasyonuna Giriş Yapalım
* Worker_process ve worker_connection ayarları
Konsoldan aşağıdaki komutu çalıştırıyoruz
grep processor /proc/cpuinfo | wc -l
örnek çıktı aşağıdaki gibi olacaktır
$ grep processor /proc/cpuinfo | wc -l 8
Şimdi nginx.conf dosyasında
worker_processes Çekirdek Sayısı; olarak ayarlayalım
worker_connections ayarları için
max_clients = worker_processes * worker_connections
Tweaking Buffers
client_body_buffer_size 10K; client_header_buffer_size 1k; client_max_body_size 8m; large_client_header_buffers 2 1k;
client_body_buffer_size
If the request body size is more than the buffer size, then the entire (or partial) request body is written into a temporary file.
client_header_buffer_size
For the overwhelming majority of requests it is completely sufficient with a buffer size of 1K.
client_max_body_size
Specifies the maximum accepted body size of a client request, as indicated by the request header Content-Length.
large_client_header_buffers
assigns the maximum number and size of buffers for large headers to read from client request.
Timeout Sürelerini ayarlamak
client_body_timeout 12; client_header_timeout 12; keepalive_timeout 15; send_timeout 10;
Sendfile, tcp_nodelay ve tcp_nopush ayarları
sendfile on; tcp_nopush on; tcp_nodelay on;
Gzip Sıkıştırma Ayarları
gzip on; gzip_min_length 1100; gzip_buffers 4 32k; gzip_types text/plain application/x-javascript text/xml text/css
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; }
Log dosyalarını ayarlamak
access_log off;
error_log logs/error.log crit;
open_file cache ayarları
open_file_cache max=5000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on;
service nginx restart
komutu ile nginx servisini yeniden başlatıyoruz.
İyi Çalışmalar ve bol hitli günler dileriz