Kurulum rehberleri

Nginx kurulumu ve temel yapılandırma rehberi

Nginx kurulumu, sunucu blokları, PHP-FPM bağlantısı ve yapılandırmayı yayına almadan önce sınamanın yolu.

9 dakika okuma
Gelen trafiği üç sunucuya dağıtan yeşil Nginx ağ geçidi

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 nginx

Servisi başlatıp açılışta çalışacak şekilde işaretleyin:

bashsystemctl enable --now nginx
systemctl status nginx --no-pager

Güvenlik duvarını unutmayın:

bashufw allow 'Nginx Full'                       # Ubuntu / Debian
# firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reload

Sunucunun 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-mysql

Server 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 nginx

reload, 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.com

Certbot 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.