Bu yazıda Apache web sunucumuza Nginx kurulumu yaparak WordPress sitemizi daha da hızlandıracağız.
Bölümler
Daha önceki yazılarda WordPress içerik yönetim sistemimiz için CentOS 7 sunucu üzerine Apache kurduk ve PHP cache üzerinde değişiklik yaptık, MPM+php-fpm kurduk ve son olarak PHP 5 sürümümüzü PHP 7 olarak değiştirdik. Bu aşamaya kadar sayfa yükleme ve saniye başı istek sayısında yaklaşık 3 kat hız elde ettik.
Nginx Kurulumu
Nginx, Rusya’da geliştirilmiş hafif ve yüksek hızlı bir web sunucusudur. Nginx, reverse proxy ve yük dengeleme için de kullanılabilir ancak en güçlü özellikleri reverse proxy önbellek ve FastCGI önbellektir.

Önce, Nginx repo oluşturmak için aşağıdaki yolu izliyoruz.
nano /etc/yum.repos.d/nginx.repo
En son sürümü yüklemek için aşağıdaki satırları ekliyor ve CTRL + X ile kaydediyoruz.
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
Nginx’i yüklüyoruz ve sonrasında versiyonu kontrol edeceğiz.
yum install nginx -y

nginx -V komutuyla son sürüm olup olmadığını kontrol ediyoruz. 29 Aralık 2017 itibarıyla, Nginx’in en son sürümü 1.13.8’dir.
[[email protected] ~]# nginx -V nginx version: nginx/1.13.8 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled
Web sunucusunu Apache’den Nginx’e çeviriyoruz.
systemctl disable httpd
systemctl stop httpd
systemctl enable nginx
systemctl start nginx
Her şey düzgün çalışıyorsa, site veya IP adresinizi yazdığınızda Nginx karşılama ekranını göreceksiniz.

Nginx Kurulumu Sonrası Konfigürasyon Dosyası Ayarları
Şimdi Nginx’i WordPress’i çalıştıracak şekilde düzenleyeceğiz.
nano /etc/nginx/nginx.conf
Keepalive_timeout’u değiştirin ve gzip’i etkinleştirin. Server_names_hash_bucket_size satırını daha büyük yaparak, uzun site adreslerinin sorunlara neden olmayacağını garanti edebiliriz. Son hali aşağıdaki gibi olacak.
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; 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; sendfile on; #tcp_nopush on; keepalive_timeout 3; #65 yerine 3 olarak degistirildi. gzip on; #basindaki isaret kaldirilarak gzip etkinlestirildi. server_names_hash_bucket_size 128; #bu satır eklenerek olasi DNS sorunları onlendi. include /etc/nginx/conf.d/*.conf; }
Ardından sanal host dosyamızı düzenleyerek WordPress’i çalışır hale getiriyoruz.
nano /etc/nginx/conf.d/default.conf
Burada yapacağımız değişiklikler yalnızca dosyanın başındaki satırlar. Aşağıda belirtilen noktayı kendinize göre düzenleyin. Dosyanın içeriğini tamamen silip bu satırları kullanarak daha sade bir konfigürasyon dosyası elde etmiş olursunuz.
server {
listen 80;
server_name herhangi.net; #site adresinizi yazin
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* /\. {
deny all;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Nginx’i yeniden başlatıyoruz.
systemctl restart nginx
Performans Testi
Nginx kurulumu tamamlandı. Şimdi ab komutu ile benchmark testi yapıyoruz.
ab -n 300 -c 30 http://herhangi.net/
Concurrency Level: 30 Time taken for tests: 14.514 seconds Complete requests: 300 Failed requests: 0 Write errors: 0 Total transferred: 16045800 bytes HTML transferred: 15977700 bytes Requests per second: 20.67 [#/sec] (mean) Time per request: 1451.431 [ms] (mean) Time per request: 48.381 [ms] (mean, across all concurrent requests) Transfer rate: 1079.61 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.3 0 1 Processing: 138 1426 173.9 1442 2078 aiting: 77 1370 163.2 1382 1876 Total: 138 1426 173.9 1442 2078
Nginx kurulumu sonrası sayfa yükleme süresinde artış mevcut ancak saniye başına isteklere yanıt bir önceki optimizasyonla kıyaslandığında 14.94’dan 20.67’ye ulaşarak %38.35 artış gösterdi. Varsayılan yapılandırmayla kıyasladığımızda ise toplam artış %293.71.