Linux

Nginx Optimizasyonu Yaparak Site Hızını Artırmak

sunucu linux kernel
Share

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.

İlginizi Çekebilecek Diğer Makalalerimiz;

1- Sunucu Optimizasyonu
2- Tarayıcı önbellekleme özelliğinden yararlanın – PageSpeed
3- WordPress Optimizasyonu

Bol trafikler dileriz.