cPanel yıllıkta ücretsiz taşıma + SSLHemen İncele
Buyukweb
VDS'de Nginx Kurulumu ve Yapılandırması: Sıfırdan Production'a

VDS'de Nginx Kurulumu ve Yapılandırması: Sıfırdan Production'a

VDS sunucusunda Nginx kurulumu, PHP-FPM entegrasyonu, TLS, HTTP/2, gzip/brotli, fastcgi_cache, reverse proxy ve güvenlik ayarları adım adım.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü11 dakika okuma

VDS'de Nginx Kurulumu ve Yapılandırması: Sıfırdan Production'a

VDS aldınız, karşınızda sıfır sunucu. PHP-FPM bağlanacak, statik dosyalar hızlı sunulacak, trafiğin altında ezilmeyeceksiniz. Nginx kurulumu iki komut gibi görünse de asıl iş yapılandırmada: worker_processes yanlış ayarlanmış, gzip açık değil, fastcgi_cache yok — ve bunu yoğun trafik altında öğreniyorsunuz. Bu rehber VDS'de Nginx'i sıfırdan production'a taşıyan temel kurulum ve yapılandırma adımlarını anlatır. Uygulamanızı Nginx arkasında reverse proxy olarak çalıştıracaksanız Nginx Reverse Proxy: Yapılandırma, SSL ve Yük Dengeleme yazısına, SSL/TLS sertifikası ve HTTPS sertleştirmesinin tüm detayları için Nginx SSL/TLS Sertifikası Kurulumu ve HTTPS Yapılandırması yazısına bakabilirsiniz.

Büyükweb perspektifi: Büyükweb E5-V4 ve E5-V2 VDS paketleri unmanaged teslim edilir; Nginx kurulumu ve yapılandırması tamamen sizde. AlmaLinux 9, Ubuntu 22.04, Debian 12 seçeneklerinin tamamında resmi paket depolarından Nginx yükleyebilirsiniz. cPanel hosting paketlerimizde ise durum farklıdır: bu paketlerde LiteSpeed 6.x zaten kurulu ve aktif gelir — Apache uyumlu .htaccess direktiflerini destekler, cPanel ile tam entegre çalışır. cPanel hosting üzerinde Nginx'i ayrıca kurmaya gerek yoktur ve önerilmez — LiteSpeed zaten ondan daha hızlı çalışır ve ek yapılandırma sorun çıkarır. Bu rehberdeki her adım yalnızca VDS senaryosu içindir.

Nginx mi Apache mi? Karar Matrisi

VDS'de web sunucusu seçmeden önce iş yükünüze bakın:

Kriter Nginx Apache
Statik dosya sunumu Çok hızlı (epoll, asenkron) Orta
PHP entegrasyonu PHP-FPM (unix socket/TCP) mod_php veya PHP-FPM
.htaccess desteği Yok (tüm config nginx.conf'ta) Tam destek
Reverse proxy / Node.js önü Doğal, hız optimizasyonlu Mümkün ama ek modül
Bellek kullanımı (yüksek bağlantı) Düşük (event-driven) Daha yüksek (process/thread)
HTTP/2 + HTTP/3 (QUIC) Tam destek (1.25+) HTTP/2 tam, HTTP/3 kısıtlı
Gzip + Brotli Her ikisi de native Gzip tam, Brotli modül
Load balancing Dahili (upstream bloğu) mod_proxy_balancer
WordPress / PHP uygulamaları PHP-FPM ile mükemmel mod_php daha kolay başlangıç

Nginx için: yüksek eş zamanlılık (1K+), statik + medya ağırlıklı site, Node.js/Python/Go önü (reverse proxy).

Apache için: .htaccess bağımlı uygulamalar veya mod_php ile hızlı başlangıç.

Kurulum: Ubuntu 22.04 / Debian 12

Ubuntu ve Debian'da Nginx paket deposu işletim sistemiyle gelir. Mainline (1.25+) sürümü için resmi Nginx deposunu ekleyebilirsiniz; LTS sürüm (1.22) için varsayılan repo yeterlidir:

# Paket listesini güncelle
apt update

# Nginx kur (Ubuntu 22.04 → 1.18 LTS; mainline için resmi repo gerekir)
apt install -y nginx

# Sistem başlangıcına ekle ve başlat
systemctl enable --now nginx

# Sürümü doğrula
nginx -v
# nginx version: nginx/1.18.0 (Ubuntu)

Nginx 1.24+ (mainline) için resmi Nginx GPG anahtarını indirip nginx.list deposunu ekleyin, ardından apt update && apt install -y nginx.

Kurulum: AlmaLinux 9 / RHEL 9

AlmaLinux 9 appstream deposunda Nginx 1.22 LTS gelir. Mainline için resmi Nginx deposu eklenebilir:

# AppStream'den Nginx 1.22 LTS
dnf install -y nginx

# Başlat
systemctl enable --now nginx

# Güvenlik duvarında HTTP/HTTPS aç
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload

# Sürüm kontrolü
nginx -v

Mainline sürüm için /etc/yum.repos.d/nginx.repo dosyasına https://nginx.org/packages/mainline/rhel/9/ deposunu ekleyip dnf install -y nginx ile kurabilirsiniz.

nginx.conf Yapısı: Bloklar ve Hiyerarşi

Nginx yapılandırması üç ana blokta şekillenir. Birini yanlış yere koymak direktifin etkisiz kalmasına yol açar:

# /etc/nginx/nginx.conf

user www-data;                    # AlmaLinux'ta: nginx
worker_processes auto;            # CPU sayısı kadar otomatik ayar
worker_rlimit_nofile 65535;       # Açık dosya limiti (ulimit -n ile eşleşmeli)

events {
    worker_connections 1024;      # Worker başına eş zamanlı bağlantı
    use epoll;                    # Linux kernel event notification (varsayılan)
    multi_accept on;              # Worker yeni bağlantıları toplu kabul eder
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    sendfile        on;           # Kernel-level dosya transferi
    tcp_nopush      on;           # sendfile ile birlikte kullanılır
    tcp_nodelay     on;           # Canlı bağlantılarda gecikmeyi azaltır
    keepalive_timeout 65;

    server_tokens   off;          # Nginx sürümünü response header'dan gizle

    # Site/uygulama yapılandırmaları
    include /etc/nginx/conf.d/*.conf;
    # Ubuntu/Debian ek yol:
    include /etc/nginx/sites-enabled/*;
}

Dizin yapısı (Ubuntu/Debian):

/etc/nginx/
├── nginx.conf              Ana yapılandırma (events + http bloğu)
├── conf.d/                 Her site için ayrı .conf dosyaları (AlmaLinux yolu)
├── sites-available/        Tanımlı site blokları (Ubuntu/Debian)
├── sites-enabled/          Aktif site blokları (symlink)
└── snippets/               Tekrar kullanılan yapılandırma parçaları

Virtual Host (Server Block) Oluşturma

Her domain için ayrı server block açın. Ubuntu/Debian'da /etc/nginx/sites-available/ altına, AlmaLinux'ta /etc/nginx/conf.d/ altına yazılır:

# /etc/nginx/sites-available/example.com

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.php index.html;

    # Statik dosyalar için uzun cache süresi
    location ~* .(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|otf)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        access_log off;
    }

    # PHP-FPM'e yönlendir
    location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # WordPress pretty permalink
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # .htaccess ve gizli dosyaları engelle
    location ~ /. {
        deny all;
    }
}

Etkinleştirme (Ubuntu/Debian):

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t          # Söz dizimi hatası var mı?
systemctl reload nginx

AlmaLinux'ta dosyayı /etc/nginx/conf.d/example.com.conf olarak kaydedin; symlink gerekmez.

PHP-FPM Entegrasyonu: Unix Socket vs TCP

PHP-FPM, Nginx'e iki yoldan bağlanır. Performans farkı anlamlıdır:

Yöntem Gecikme Ne zaman
Unix socket Düşük (kernel içi) Nginx ve PHP-FPM aynı sunucuda
TCP (127.0.0.1:9000) Biraz daha yüksek Farklı sunucular / container

PHP-FPM pool yapılandırması (/etc/php/8.2/fpm/pool.d/www.conf):

[www]
user = www-data
group = www-data

listen       = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode  = 0660
; TCP için: listen = 127.0.0.1:9000

pm                   = dynamic
pm.max_children      = 20
pm.start_servers     = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10

php_admin_value[memory_limit]        = 256M
php_admin_value[upload_max_filesize] = 64M
systemctl restart php8.2-fpm
nginx -t && systemctl reload nginx

SSL/TLS: Hızlı Başlangıç

HTTP trafiğini HTTPS'e taşımak için Certbot ile Let's Encrypt sertifikası almak yeterlidir:

# Ubuntu/Debian
apt install -y certbot python3-certbot-nginx

# AlmaLinux 9
dnf install -y epel-release
dnf install -y certbot python3-certbot-nginx

# Sertifika al ve nginx.conf'u otomatik güncelle
certbot --nginx -d example.com -d www.example.com

# Otomatik yenilemeyi test et
certbot renew --dry-run

Certbot, ilgili server bloğuna listen 443 ssl; direktifini ve sertifika yollarını otomatik ekler. Cipher suite seçimi, OCSP stapling, HSTS/HSTS preload, TLS 1.3 ile 0-RTT, HTTP/2 + HTTP/3 (QUIC) etkinleştirme ve SSL Labs A+ skoru için gereken tüm ince ayarlar Nginx SSL/TLS Sertifikası Kurulumu ve HTTPS Yapılandırması yazısında adım adım anlatılıyor.

Gzip ve Brotli Sıkıştırma

Özellik Gzip Brotli
Nginx desteği Yerleşik modül ngx_brotli (ayrı modül)
Sıkıştırma oranı İyi %15–25 daha iyi
CPU maliyeti Orta Biraz daha yüksek
Tarayıcı desteği Evrensel Tüm modern tarayıcılar

Gzip yapılandırması (http bloğuna girin):

gzip              on;
gzip_vary         on;
gzip_proxied      any;
gzip_comp_level   6;        # 1-9; 6 hız/oran dengesi
gzip_min_length   256;      # Küçük dosyalarda sıkıştırma anlamsız
gzip_types
    text/plain
    text/css
    text/xml
    application/json
    application/javascript
    application/xml+rss
    application/atom+xml
    image/svg+xml;

Brotli için ngx_brotli modülü gerekir. Ubuntu'da:

apt install -y libnginx-mod-brotli

Ardından:

brotli            on;
brotli_comp_level 6;
brotli_types      text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;

Gzip ve Brotli birlikte çalışır; Nginx Accept-Encoding header'ına bakarak uygun sıkıştırmayı seçer.

Performans Tuning: Worker, Bağlantı, Keepalive

En sık yanlış yapılan ayarlar:

Parametre Varsayılan Önerilen Açıklama
worker_processes 1 auto CPU çekirdeği sayısı kadar otomatik
worker_connections 1024 2048–8192 Worker başına eş zamanlı bağlantı
worker_rlimit_nofile Sistem limiti 65535 Açık dosya limiti
keepalive_timeout 75s 15–65s Bağlantıyı canlı tutma süresi
keepalive_requests 1000 5000 Bağlantı başına max istek
sendfile off on Kernel seviye dosya transferi
tcp_nopush off on sendfile ile birlikte etkin

CPU sayısına göre worker tuning:

vCPU worker_processes worker_connections Toplam kapasite
1 vCPU 1 2048 ~2K eş zamanlı
2 vCPU 2 4096 ~8K eş zamanlı
4 vCPU auto (4) 4096 ~16K eş zamanlı
8 vCPU auto (8) 8192 ~64K eş zamanlı
events {
    worker_connections 4096;
    use epoll;
    multi_accept on;
}

http {
    keepalive_timeout    65;
    keepalive_requests 5000;
    reset_timedout_connection on;

    upstream php_fpm {
        server unix:/run/php/php8.2-fpm.sock;
        keepalive 32;
    }
}

Açık dosya limitini de artırın: nginx soft nofile 65535 ve nginx hard nofile 65535 satırlarını /etc/security/limits.conf'a ekleyin.

fastcgi_cache: PHP Yanıtlarını Önbelleğe Alma

Her istek için PHP-FPM çağırmak yerine yanıtı diskte önbellekle; aynı URL'ye ikinci istekten itibaren Nginx doğrudan döner.

# http bloğuna ekle (server bloğu dışında)
fastcgi_cache_path /var/cache/nginx/fpm
    levels=1:2
    keys_zone=fpm_cache:10m
    max_size=1g
    inactive=60m
    use_temp_path=off;

fastcgi_cache_key "$scheme$request_method$host$request_uri";

# server bloğuna ekle
fastcgi_cache           fpm_cache;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 301     1h;
fastcgi_cache_valid any     1m;
fastcgi_cache_use_stale error timeout updating http_500 http_503;
fastcgi_cache_min_uses 2;

fastcgi_cache_bypass $cookie_session $cookie_wordpress_logged_in;
fastcgi_no_cache     $cookie_session $cookie_wordpress_logged_in;
add_header X-FastCGI-Cache $upstream_cache_status;
mkdir -p /var/cache/nginx/fpm
chown nginx:nginx /var/cache/nginx/fpm   # AlmaLinux; Ubuntu: www-data:www-data

Reverse Proxy: Kısa Bakış

VDS üzerinde Node.js, Python veya Go uygulamanız ayrı bir portta çalışıyorsa Nginx'i önüne reverse proxy olarak koyabilirsiniz:

upstream app_servers {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
    keepalive 16;
}

server {
    listen 443 ssl;
    server_name app.example.com;

    location / {
        proxy_pass         http://app_servers;
        proxy_http_version 1.1;
        proxy_set_header   Connection "";
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout 60s;
    }
}

Round-robin, least_conn, ip_hash, ağırlıklı dağıtım, sağlık kontrolü ile failover, WebSocket proxy'si ve proxy_cache yapılandırmasının tamamı için Nginx Reverse Proxy: Yapılandırma, SSL ve Yük Dengeleme yazısına bakın.

Güvenlik: Rate Limiting ve Security Header

Rate Limiting

Brute-force ve DDoS girişimlerine karşı limit_req ile istek sınırı koyabilirsiniz:

# http bloğuna ekle
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;

# Login endpoint
location /wp-login.php {
    limit_req zone=login burst=3;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

API endpoint'leri, genel trafik zone'ları, burst/nodelay ayarları ve L7 DDoS hafifletme stratejilerinin tamamı Nginx Reverse Proxy: Yapılandırma, SSL ve Yük Dengeleme yazısında anlatılıyor.

Güvenlik Header'ları

add_header X-Frame-Options        "SAMEORIGIN"  always;
add_header X-Content-Type-Options "nosniff"     always;
add_header Referrer-Policy        "strict-origin-when-cross-origin" always;
# HSTS ve tam security header seti: /blog/nginx-ssl-tls-https-yapilandirmasi

Yapılandırma Test ve Yeniden Yükleme

nginx -t                       # Söz dizimi kontrolü (servis yeniden başlatmadan)
systemctl reload nginx         # Aktif bağlantı kesmeden yeniden yükle
journalctl -u nginx -f         # Canlı log izleme
tail -f /var/log/nginx/error.log

Büyükweb VDS notu: VMware vSphere altyapısı sayesinde Web Konsol erişimi ağ durumundan bağımsızdır. Yanlış yapılandırma sonucu erişim kaybederseniz destek hattı (0850 302 60 70) üzerinden konsola bağlanabilirsiniz.

Sıkça Sorulan Sorular

Nginx ile Apache arasındaki temel fark nedir?

Nginx olay güdümlü (event-driven) asenkron mimarisini kullanır; her bağlantı için yeni process açmaz. Yüksek eş zamanlılıkta (1K+ bağlantı) bellek ayak izi belirgin şekilde daha düşük kalır. Statik dosya sunumunda hız avantajı sunar; Apache'nin .htaccess desteği ise .htaccess bağımlı uygulamalarda yapılandırmayı kolaylaştırır.

PHP-FPM unix socket mi, TCP mi kullanmalıyım?

Nginx ve PHP-FPM aynı sunucuda çalışıyorsa unix socket seçin: kernel içi iletişim TCP'den daha az gecikme üretir. Farklı sunucu ya da container senaryosunda TCP zorunludur. Unix socket için fastcgi_pass unix:/run/php/php8.2-fpm.sock;, TCP için fastcgi_pass 127.0.0.1:9000; yazılır.

HTTP/2 ve HTTP/3 nasıl aktif edilir?

HTTP/2 için TLS zorunludur: Nginx 1.25.1 öncesinde listen 443 ssl http2; ifadesi, 1.25.1 ve sonrasında ayrı bir http2 on; direktifi kullanılır. HTTP/3 (QUIC) ise TCP yerine UDP 443 üzerinden çalışır ve Nginx 1.25+ mainline paketinde hazır gelir. Adım adım yapılandırma, Alt-Svc header'ı ve firewall ayarları için SSL/TLS rehberimize bakabilirsiniz.

Gzip ve Brotli birlikte açılabilir mi?

Evet. İkisi çakışmaz; Nginx gelen Accept-Encoding header'ına bakarak tarayıcının desteklediği sıkıştırmayı seçer. Brotli destekleyen tarayıcılar Brotli alır (%15–25 daha iyi oran), desteklemeyenler Gzip alır. gzip_vary on direktifi önbellek katmanlarının doğru içeriği sunmasını sağlar.

fastcgi_cache ile LSCache (LiteSpeed Cache) arasındaki fark ne?

LSCache, LiteSpeed'e entegre tam sayfa önbellek motorudur; WordPress eklentisi üzerinden cache tag'leri ve otomatik temizleme destekler. Büyükweb cPanel paketlerinde LiteSpeed + LSCache hazır gelir — eklentiden aktif edebilirsiniz. fastcgi_cache ise Nginx tarafında PHP-FPM yanıtlarını önbellekleyen daha basit bir mekanizmadır; tag tabanlı temizleme için nginx-helper gibi ek araç gerekir. cPanel hosting için LSCache tercih edin; VDS + Nginx senaryosunda fastcgi_cache iş görür.

worker_processes'i ne kadar ayarlamalıyım?

auto değeri çoğu senaryo için yeterlidir — Nginx CPU çekirdeği sayısını kendisi algılar. Daha fazla worker eklemek I/O bağımlı yük altında belirleyici değildir; worker_connections ve keepalive_timeout tuning daha kritiktir.

Yapılandırma hatası yaptım, siteye erişemiyorum. Ne yapmalıyım?

nginx -t ile söz dizimini kontrol edin; hata yoksa /var/log/nginx/error.log dosyasına bakın. SSH bağlantısı da kopuksa Büyükweb destek hattı (0850 302 60 70) üzerinden Web Konsol erişimi talep edin.

İlgili Nginx Rehberleri


İlgili Büyükweb Hizmetleri

Sorularınız için 0850 302 60 70 numaralı satış öncesi destek numaramıza ulaşabilir veya iletişim sayfamıza yazabilirsiniz.

VDS & VPS Rehberi İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#nginx kurulum#nginx yapılandırma#vds nginx#virtual host#nginx ssl#nginx optimizasyon#web sunucu

Bu yazıyı paylaş

WhatsApp0850 302 60 70