Daha Yüksek Performans İçin Nginx Ayarları Önerileri

I – Syslog.org’un Nginx Ayaları Önerileri;

Yapılandırma kısmında ilk editleyeceğimiz dosya temel ayarların bulundugu ana yapılandırma dosyası olan /etc/nginx/nginx.conf.
Şimdi aynı dizine bu dosyanın bir yedeğini aldıktan sonra içerisini boşaltalım:

# cp -pr /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# > /etc/nginx/nginx.conf

Ardından dosyayı editliyoruz:

# vi /etc/nginx/nginx.conf

Sonrasında da aşağodaki önergeleri dosyaya yazıyoruz:
(Not: Bazı önemli parametrelerin açıklamaları comment satırlarında yazmaktadır. Değerleri kendi ihtiyaçlarınız doğrultusunda düzenleyebilirsiniz.)

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/
 
# Nginx'i calistiracak kullanici
user              nginx;
 
# Kac adet worker calisacak. Sunucunuzdaki core sayisi kadar arttirabilirsiniz.
worker_processes  1;
 
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
 
events {
    # Maxclient'in belirlenmesinde kullanilan parametre. [maxclients = worker_processes * worker_connections]
    worker_connections  1024;
 
}
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    # Log formati
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    server_tokens off;
    sendfile        on;
    keepalive_timeout  15;
    tcp_nopush     on;
    tcp_nodelay        on;
    client_body_timeout   10;
    client_header_timeout 10;
    send_timeout          10;
 
    # Gonderilen veriyi gzip'le. 
    # CPU costu vardir ancak bandwidth kullanimi ve response time duser. Cpu durumuna gore off yapilablir.
    gzip on;
    gzip_min_length  1100;
    gzip_types    text/plain application/x-javascript text/xml text/css;
    gzip_vary on;
 
    # /etc/nginx/conf.d dizinindeki dosyalari yapilandirmaya dahil et.
    include /etc/nginx/conf.d/*.conf;
 
}

Editleyeceğimiz bir diğer yapılandırma dosyası ise, /etc/nginx/conf.d/ dizini altında bulunan default.conf. Bu dosya default website tanımlarının yapıldığı alandır.

Şimdi bu dosyanında yedeğini alalım ve içini boşaltalım:

# cp -pr /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
# > /etc/nginx/conf.d/default.conf

ve editleyelim:

# vi /etc/nginx/conf.d/default.conf

Sonrasında da aşağıdaki önergeleri ekleyeceğiz. Bu dosya içerisinde php dosyalarının nasıl process edileceği ile ilgili tanımlamalar da yapılmakta. Php-fpm üzerinden php çalıştırmanın iki yolu bulunuyor. Default ayarlarda php-fpm kurulduğu zaman TCP 9000. portu dinlemektedir, ve nginx yapılandırmanızda tüm php dosyalarını bu portun ucundaki fpm’e gönderirsiniz. Bu işlemi tcp üzerinden yapmak özellikle yoğun kullanılan sunucularda TCP stack üzerine gereksiz yük getireceği için bir diğer yol olan unix socket üzerinden bağlanmak daha mantıklı olabilir. Ben yapılandırmayı unix socket’e göre anlatacak olsam da aşağıdaki yapılandırmanın comment bölümlerinde önemli parametreler için comment satırları var. php-fpm’le tcp üzerinden konuşmak için gerekli ayarlar da ilgili alanda comment olarak eklenmiş durumda.

#
# The default server
#
server {
    listen       80 default_server;
 
    # server_name olarak alan adi da yazilabilir; bu sekilde birakilirsa
    # catchall gorevi gorur. Bu sunucuyu gosteren tum alan adlari icin default vhost.
    server_name  _;
 
    # Nginx kok dizini ve default dokumanlar.
    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }
 
    # Bulunamayan icerikle alakali hatalari /404.html'e yonlendir. 
    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }
 
    # 5x server error'lari /50x.html sayfasina yonlendir.
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 
    # php dosyalarinin nasil islenecegi ile ilglii bolum:
    location ~ \.php$ {
        root   /usr/share/nginx/html;
 
        # fpm'e socket uzerinden erismek icin (ki bir bu sekilde yapiyoruz):
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
 
        # Alternatif olarak php-fpm'e TCP uzerinden erismek icin (default yontem bu ama biz kullanmiyoruz.)
        # fastcgi_pass   127.0.0.1:9000;
 
        # NOT: Yukarıdaki parametreyi uncomment etmeden once, 
        # 1 - Ayni dosyadaki fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; ibaresini commnet out edin.
        # 2 - /etc/php-fpm.d/www.conf dosyasindaki listen = /var/run/php-fpm/php-fpm.sock satırını uncomment out
        # etmeniz ve yerine listen = 127.0.0.1:9000 ekledikten sonra fpm'i restart etmeniz gerekir.
 
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
 
    # .htaccess dosyalarina erisime izin verme.
    location ~ /\.ht {
        deny  all;
    }
 
    # favicon dosyalari icin access log'a yazma ve 204 (No Content) status kodu dondur. 
    location ~*  \.(ico)$  {
    access_log off;
    log_not_found off;
    try_files /favicon.ico =204;
    }
 
    # static contet dosyalarinin 72 saat cache'te tutulmasini soyle. Access log'a yazma.
    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
    access_log off;
    expires 72h;
    }
}

Son

https://www.syslogs.org/php5-fpm-mysql-destekli-nginx-kurulumu/

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>