Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog Nginx Reverse Proxy Nasıl Kurulur? 7 Adımda Tam Kılavuz (2026)

Nginx Reverse Proxy Nasıl Kurulur? 7 Adımda Tam Kılavuz (2026)

Nginx Reverse Proxy Nasıl Kurulur? 7 Adımda Tam Kılavuz (2026)

Reverse Proxy Nedir ve Neden Nginx Kullanmalısınız?

Reverse Proxy Nedir ve Neden Nginx Kullanmalısınız? - Nginx Reverse Proxy Yapılandırması
Reverse Proxy Nedir ve Neden Nginx Kullanmalısınız?

Web uygulamaları gün geçtikçe daha karmaşık hale geliyor; birden fazla servis, mikroservis mimarisi ve farklı coğrafi konumlardaki sunucular bir arada çalışıyor. Bu noktada reverse proxy devreye girer. Gelen istekleri arka uç sunuculara yönlendirir, istekleri önbelleğe alır, SSL terminasyonu yapar ve DDoS gibi saldırılara karşı ilk savunma hattını oluşturur.

Nginx, hafif mimarisi, yüksek eşzamanlı bağlantı kapasitesi ve proxy_pass gibi güçlü yönlendirme direktifleri sayesinde en popüler reverse proxy çözümlerinden biridir. Özellikle AMD Ryzen VDS sunucular üzerinde çalıştırıldığında, %40 daha az CPU tüketimi ve %30 daha düşük gecikme süresi elde edilebilir.

Yaygın bir hata, reverse proxy yapılandırmasında host başlıklarını doğru ayarlamamak ve SSL sertifikasını hem proxy hem de backend sunucuda çift kez yüklemektir. Bu hatalar, “502 Bad Gateway” hatalarına ve performans kayıplarına yol açar; sonuçta hizmet kesintileri ve müşteri kaybı kaçınılmaz olur.

Temel Gereksinimler ve Ön Hazırlık

Reverse proxy kurulumuna başlamadan önce aşağıdaki gereksinimleri kontrol edin:

  • Ubuntu 22.04 LTS veya CentOS 9 gibi güncel bir Linux dağıtımı.
  • Root veya sudo yetkileri.
  • Arka uç servislerin IP adresleri ve portları (örnek: 10.0.0.5:8080).
  • Geçerli bir SSL sertifikası (Let’s Encrypt önerilir).
  • Güvenlik duvarı (UFW, firewalld) kurallarının doğru yapılandırılması.

Bu adımları tamamladıktan sonra web hosting paketleri üzerinden bir domain yönlendirmesi yaparak, DNS kayıtlarınızı Nginx sunucusuna işaretleyin. DNS yayılması genellikle 5‑30 dakika sürer, bu sürede test ortamınızda curl -I https://ornek.com komutuyla yanıt alıp almadığınızı kontrol edebilirsiniz.

Nginx'in Kurulumu ve İlk Konfigürasyon

Ubuntu tabanlı sistemlerde Nginx kurulumu tek satırda tamamlanabilir:

sudo apt update && sudo apt install nginx -y

CentOS için:

sudo dnf install epel-release -y
sudo dnf install nginx -y

Kurulumdan sonra Nginx servisinin otomatik başlatıldığından emin olun:

sudo systemctl enable nginx
sudo systemctl start nginx

Servisin durumunu systemctl status nginx ile kontrol edin. Başarılı bir kurulumda, Welcome to nginx! sayfası tarayıcınızda görünecektir. Şimdi, /etc/nginx/nginx.conf dosyasını yedekleyip, /etc/nginx/conf.d/ içinde bir site dosyası oluşturacağız.

Reverse Proxy Konfigürasyonu: Adım Adım Örnek

Reverse Proxy Konfigürasyonu: Adım Adım Örnek - Nginx Reverse Proxy Yapılandırması
Reverse Proxy Konfigürasyonu: Adım Adım Örnek

Aşağıda, example.com domaini için bir reverse proxy yapılandırması gösterilmektedir. Bu örnek, iki ayrı backend servisine (API ve statik içerik) yönlendirme yapar ve SSL terminasyonunu içerir.

server {
    listen 80;
    server_name example.com www.example.com;

    # HTTP isteklerini HTTPS'ye yönlendir
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # API isteklerini backend API sunucusuna yönlendir
    location /api/ {
        proxy_pass http://10.0.0.5:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering on;
        proxy_cache my_cache;
    }

    # Statik dosyalar için ayrı bir backend
    location /static/ {
        proxy_pass http://10.0.0.6:8081/;
        expires 30d;
        add_header Cache-Control "public";
    }

    # Root istekleri default backend'e gönder
    location / {
        proxy_pass http://10.0.0.7:80/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Bu yapılandırmada proxy_set_header direktifleri, istemcinin gerçek IP adresini ve orijinal protokolü backend'e iletir. Böylece uygulama katmanı loglama ve güvenlik kontrolleri doğru çalışır. Ayrıca, proxy_cache ile sık kullanılan API yanıtları önbelleğe alınarak yanıt süresi %2‑3’e kadar iyileşir.

Performans ve Güvenlik Optimizasyonları

Reverse proxy sadece yönlendirme yapmaz; aynı zamanda performans ve güvenliği artırmak için bir dizi ayar sunar. En kritik optimizasyonları aşağıdaki tabloda özetledik:

OptimizasyonAçıklamaÖnerilen Değer
worker_processesCPU çekirdek sayısına göre işçi süreç sayısı.auto (CPU çekirdek sayısı)
worker_connectionsEşzamanlı bağlantı limiti.1024 ya da daha yüksek
keepalive_timeoutİstemci bağlantılarını ne kadar süre açık tutar.65
gzipYanıtları sıkıştırarak bant genişliği tasarrufu.on (text/html, application/json)
proxy_cache_pathÖnbellek dizini ve boyutu./var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;
ssl_staplingSSL sertifika zinciri doğrulamasını hızlandırır.on

Bu ayarlar, özellikle fiziksel sunucu (dedicated server) ortamlarında yüksek trafik altında %40 daha düşük CPU kullanımına ve %25 daha hızlı yanıt süresine yol açar. Güvenlik açısından ise WAF güvenlik duvarı entegrasyonu, SQL injection ve XSS gibi saldırıları önceden engeller.

Load Balancing ve Sağlık Kontrolü

Birden fazla backend sunucuya sahip olduğunuzda, Nginx'in yerleşik load balancing özelliklerini kullanarak trafiği dağıtabilirsiniz. En yaygın yöntem upstream bloklarıyla tanımlanır:

upstream app_servers {
    server 10.0.0.5:8080 max_fails=3 fail_timeout=30s;
    server 10.0.0.6:8080 max_fails=3 fail_timeout=30s;
    keepalive 16;
}

Burada max_fails ve fail_timeout parametreleri, bir sunucu yanıt vermezse otomatik olarak devre dışı bırakılmasını sağlar. Nginx ayrıca health_check modülüyle periyodik sağlık kontrolleri yapabilir; bu sayede arızalı bir sunucu trafiği almaktan çekilir ve hizmet sürekliliği %99,9’a yükselir.

Load balancing ile birlikte sticky sessions (yapışkan oturum) ayarlamak, oturum bazlı uygulamalarda kullanıcı deneyimini bozmadan dağıtım sağlar. Örneğin, ip_hash direktifi istemci IP'sine göre aynı backend'e yönlendirme yapar.

Gerçek Dünya Senaryosu: E-Ticaret Sitesi için Nginx Reverse Proxy

Bir e‑ticaret platformu, yüksek trafik dalgalanmaları ve güvenlik gereksinimleriyle karşı karşıyadır. Aşağıdaki senaryo, e-ticaret hosting paketinizde Nginx reverse proxy'nin nasıl kullanılacağını gösterir:

  1. Ön yüz (frontend) React uygulaması static.example.com üzerinden CDN ile sunulur.
  2. API katmanı (Node.js) api.example.com adresine yönlendirilir ve Nginx SSL terminasyonu yapar.
  3. Ödeme hizmeti üçüncü parti bir sağlayıcıya (örnek: Stripe) yönlendirilir; bu isteklerde proxy_set_header X-Forwarded-Proto https zorunludur.
  4. Stok ve envanter servisleri ayrı bir mikroservis olarak inventory.internal adresinde çalışır ve Nginx proxy_cache ile sık kullanılan yanıtları önbelleğe alır.

Bu yapı sayesinde, ön yüz CDN üzerinden %70 daha hızlı yüklenirken, API sunucusuna gelen istekler Nginx sayesinde %35 daha düşük gecikme ile işlenir. Ayrıca, SSL terminasyonu tek noktada toplandığı için sertifika yönetimi ve yenileme işlemleri sadece bir sunucuda yapılır.

Sıkça Sorulan Sorular

Reverse proxy ile load balancing aynı şey midir?

Hayır. Reverse proxy gelen istekleri bir veya birden fazla backend sunucuya yönlendirirken, load balancing bu yönlendirmeyi belirli bir algoritmaya (round‑robin, ip_hash vb.) göre dağıtarak sunucu yükünü dengeler.

Nginx'te HTTP yerine HTTPS kullanmak zorunlu mu?

Güvenlik açısından önerilir, özellikle kullanıcı verisi işleyen uygulamalarda HTTPS zorunludur. Nginx, SSL terminasyonu yaparak arka uç sunucuların HTTP üzerinden çalışmasını da sağlayabilir.

Proxy cache ne kadar süreyle saklanmalı?

Cache süresi uygulamaya bağlıdır. Statik içerikler için 30‑60 gün, dinamik API yanıtları için 5‑10 dakika gibi kısa bir proxy_cache_valid süresi tercih edilmelidir.

Bir backend sunucu çökse bile site çalışmaya devam eder mi?

Evet. Nginx upstream blokları içinde max_fails ve fail_timeout ayarlarıyla arızalı sunucular otomatik olarak devre dışı bırakılır ve trafiği sağlıklı sunuculara yönlendirir.

Sonuç ve Bir Sonraki Adım

Nginx reverse proxy, modern web mimarilerinde performans, güvenlik ve ölçeklenebilirlik sağlamak için vazgeçilmez bir araçtır. Bu makalede temel kurulum, detaylı konfigürasyon, load balancing ve önbellekleme gibi kritik konuları ele aldık. Şimdi, kendi ortamınızda bir VDS sunucu paketi kiralayarak Nginx'i kurabilir ve yukarıdaki adımları uygulamaya başlayabilirsiniz. İlk olarak sudo apt install nginx komutunu çalıştırın, ardından örnek yapılandırmayı kendi domain ve backend adreslerinize göre özelleştirin. Sorunsuz bir geçiş için yapılandırma dosyalarını test etmeyi (nginx -t) ve servisi yeniden başlatmayı (systemctl reload nginx) unutmayın.