Nginx, aynı donanımdan Apache'ye göre daha fazla eşzamanlı bağlantı çıkarabildiği için sanal sunucularda en yaygın tercihtir. Kurulumu birkaç dakika sürer; asıl iş yapılandırmayı doğru kurmaktır.
Kurulum
bash# Ubuntu / Debian
apt update && apt install -y nginx
# AlmaLinux / Rocky
dnf install -y nginxServisi başlatıp açılışta çalışacak şekilde işaretleyin:
bashsystemctl enable --now nginx
systemctl status nginx --no-pagerGüvenlik duvarını unutmayın:
bashufw allow 'Nginx Full' # Ubuntu / Debian
# firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reloadSunucunun IP adresini tarayıcıda açtığınızda Nginx karşılama sayfasını görmelisiniz.
Sunucu blokları: birden fazla site
Nginx'te her site bir server bloğudur. Ubuntu ve Debian'da bunlar /etc/nginx/sites-available/ altında tutulur, sites-enabled/ içine sembolik bağlantıyla etkinleştirilir. AlmaLinux'ta ise doğrudan /etc/nginx/conf.d/ altına .conf uzantılı dosya koyulur.
Statik bir site için en yalın blok:
textserver {
listen 80;
server_name alanadiniz.com www.alanadiniz.com;
root /var/www/alanadiniz.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Ubuntu tarafında etkinleştirme:
bashln -s /etc/nginx/sites-available/alanadiniz.com /etc/nginx/sites-enabled/PHP-FPM bağlantısı
WordPress, Laravel gibi PHP uygulamaları için isteklerin PHP-FPM'e aktarılması gerekir:
bashapt install -y php-fpm php-mysqlServer bloğuna şu iki konumu ekleyin:
textindex index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}Soket yolundaki sürüm numarası kurduğunuz PHP'ye göre değişir; doğrusunu şu komutla görebilirsiniz:
bashls /run/php/Yapılandırmayı yayına almadan önce sınayın
Bu adım isteğe bağlı değil. Hatalı bir yapılandırmayla servisi yeniden başlatmak, çalışan tüm siteleri birden düşürür:
bashnginx -tÇıktı syntax is ok ve test is successful diyorsa güvenle yükleyebilirsiniz:
bashsystemctl reload nginxreload, restartten farklıdır: mevcut bağlantıları kesmeden yeni yapılandırmayı devreye alır. Alışkanlık olarak reload kullanın.
HTTPS ve yönlendirme
Sertifikayı Certbot ile alın; Nginx yapılandırmasını kendisi düzenler:
bashcertbot --nginx -d alanadiniz.com -d www.alanadiniz.comCertbot HTTP'den HTTPS'e yönlendirme eklemeyi teklif eder, kabul edin. Ayrıntılar ve otomatik yenileme kontrolü için SSL kurulum rehberimize bakabilirsiniz.
Faydalı iki ayar
Sıkıştırma. Metin tabanlı dosyaların boyutunu belirgin biçimde düşürür:
textgzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;
gzip_min_length 1024;Statik dosya önbelleği. Tarayıcının görselleri ve betikleri tekrar indirmesini engeller:
textlocation ~* \.(jpg|jpeg|png|webp|avif|gif|ico|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}Sık yapılan hatalar
403 Forbidden — Dosya izinleri ya da root yolu yanlış. Nginx kullanıcısının (www-data veya nginx) dizini okuyabildiğinden emin olun.
502 Bad Gateway — PHP-FPM çalışmıyor ya da soket yolu yanlış. systemctl status php8.3-fpm ile kontrol edin.
Değişiklik uygulanmıyor — Yapılandırmayı yeniden yüklemeyi unuttunuz ya da başka bir server bloğu aynı server_name ile önce eşleşiyor.
Varsayılan site devrede kalıyor — Ubuntu'da sites-enabled/default bağlantısını kaldırmayı unutmayın.
Kurulum ya da yapılandırma takıldığınız bir noktada bize yazabilirsiniz.
