Nginx Ters Proxy Kurulumu ve Yapılandırma Rehberi

Nginx Ters Proxy Kurulumu ve Yapılandırma Rehberi

Modern web uygulamaları geliştirilirken güvenlik, ölçeklenebilirlik ve yüksek performans en kritik öncelikler arasında yer alır. Tek bir uygulama sunucusunun gelen tüm istekleri doğrudan karşılaması, hem güvenlik açıklarına yol açabilir hem de yoğun trafik altında sistemin kilitlenmesine neden olabilir. İşte bu noktada, modern web mimarisinin en güçlü araçlarından biri olan Nginx ters proxy (reverse proxy) yapılandırması devreye girer. Bu rehberde, sunucu performansınızı optimize etmek ve altyapı güvenliğinizi üst seviyeye çıkarmak için Nginx kullanarak nasıl bir ters proxy mekanizması kuracağınızı adım adım anlatacağız.

Ters Proxy (Reverse Proxy) Nedir?

Bir ters proxy sunucusu, istemciler (kullanıcılar) ile arka uçta çalışan uygulama sunucuları (Node.js, Python, Go, PHP vb.) arasında bir köprü görevi görür. İstemciden gelen istekleri ilk karşılayan sunucu Nginx olur. Nginx bu isteği alır, analiz eder ve arkadaki ilgili uygulama sunucusuna iletir. Uygulama sunucusundan aldığı yanıtı da tekrar istemciye geri gönderir.

Bu mimari, istemcinin arka uçtaki gerçek sunucunun IP adresini ve portunu doğrudan görmesini engeller. Böylece sunucu güvenliği artırılmış olur.

Neden Nginx Ters Proxy Yapılandırması Tercih Edilmeli?

Web projelerinde doğrudan uygulama sunucusunu internete açmak yerine önünde bir Nginx katmanı konumlandırmanın birçok önemli avantajı vardır:

  • Güvenlik: Arka uçtaki uygulama sunucularınızın IP adresleri gizli kalır. DDoS saldırılarına karşı ilk savunma hattını Nginx oluşturur.
  • Yük Dengeleme (Load Balancing): Gelen yoğun trafiği birden fazla uygulama sunucusuna dengeli bir şekilde dağıtabilirsiniz.
  • SSL/TLS Sonlandırma: SSL sertifikalarınızı tek bir noktada (Nginx üzerinde) yöneterek arka uç sunucularınızın şifreleme/şifre çözme yükünü hafifletebilirsiniz.
  • Statik İçerik Önbelleğe Alma (Caching): Resim, CSS, JS gibi statik dosyaları doğrudan Nginx üzerinden önbelleğe alıp sunarak uygulama sunucunuzun işlemci yükünü azaltabilirsiniz.
  • Tek IP Üzerinde Çoklu Uygulama: Aynı sunucuda farklı portlarda çalışan birden fazla uygulamayı tek bir IP ve farklı alan adları (domain) üzerinden yayınlayabilirsiniz.
  • Nginx Ters Proxy Kurulumu İçin Gereksinimler

    Kuruluma başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

  • Ubuntu veya Debian tabanlı bir Linux sunucu (CentOS/RHEL de tercih edilebilir).
  • Sunucuya sudo yetkisine sahip bir kullanıcı ile SSH bağlantısı.
  • Alan adınızın (domain) sunucu IP adresinize yönlendirilmiş olması.
  • Adım Adım Nginx Ters Proxy Yapılandırması

    Bu rehberde, yerel ağda veya sunucu içinde http://127.0.0.1:5000 portunda çalışan bir web uygulamasını (örneğin bir Node.js veya Python uygulaması), dış dünyaya ornek.com adresi üzerinden Nginx aracılığıyla nasıl açacağımızı göreceğiz.

    Adım 1: Sunucu Paketlerinin Güncellenmesi ve Nginx Kurulumu

    İlk olarak sunucumuzdaki paket listesini güncelleyelim ve Nginx web sunucusunu kuralım. Terminal üzerinden aşağıdaki komutları sırasıyla çalıştırın:

    sudo apt update
    sudo apt upgrade -y
    sudo apt install nginx -y
    

    Kurulum tamamlandıktan sonra Nginx servisinin aktif olup olmadığını ve arka planda çalışıp çalışmadığını kontrol edelim:

    sudo systemctl status nginx
    

    Eğer servis aktifse, tarayıcınızdan sunucu IP adresinizi yazarak Nginx'in varsayılan karşılama sayfasını görebilirsiniz.

    Adım 2: Sanal Konak (Virtual Host) Dosyasının Oluşturulması

    Nginx üzerinde her bir web sitesi veya servis için ayrı bir yapılandırma dosyası oluşturmak en iyi pratik yöntemdir. Varsayılan yapılandırma dosyasını değiştirmek yerine ornek.com için yeni bir dosya oluşturalım:

    sudo nano /etc/nginx/sites-available/ornek.com
    

    Açılan boş editöre aşağıdaki yapılandırma bloklarını ekleyin. Bu blok, gelen istekleri http://127.0.0.1:5000 adresinde çalışan uygulamanıza yönlendirecektir:

    server {
        listen 80;
        server_name ornek.com www.ornek.com;
    
        location / {
            proxy_pass http://127.0.0.1:5000;
            proxy_http_version 1.1;
            
            # İstemci başlık bilgilerini arka uç sunucusuna iletme
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            
            # İstemcinin gerçek IP adresini iletme
            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;
        }
    }
    

    Dosyayı kaydetmek için CTRL + O ve ardından Enter tuşlarına basın. Çıkış yapmak için ise CTRL + X kısayolunu kullanın.

    Adım 3: Yapılandırmanın Etkinleştirilmesi ve Test Edilmesi

    Oluşturduğumuz bu yapılandırma dosyasını Nginx'in aktif siteler dizinine sembolik bir bağ (symlink) oluşturarak eklememiz gerekir:

    sudo ln -s /etc/nginx/sites-available/ornek.com /etc/nginx/sites-enabled/
    

    Yaptığımız yapılandırmada herhangi bir sözdizimi (syntax) hatası olup olmadığını kontrol etmek için Nginx test komutunu çalıştıralım:

    sudo nginx -t
    

    Eğer ekranda syntax is ok ve test is successful mesajlarını görüyorsanız, her şey yolunda demektir. Değişikliklerin devreye girmesi için Nginx servisini yeniden başlatalım:

    sudo systemctl restart nginx
    

    Artık tarayıcınızdan ornek.com adresine gittiğinizde, istekleriniz arka planda 5000 portunda çalışan uygulamanıza yönlendirilecektir.

    Gelişmiş Nginx Ters Proxy Özellikleri

    Temel yapılandırmayı tamamladıktan sonra, projenizin ihtiyaçlarına göre Nginx'in sunduğu gelişmiş özellikleri de devreye alabilirsiniz.

    Yük Dengeleme (Load Balancing) Yapılandırması

    Eğer uygulamanız yoğun trafik alıyorsa ve birden fazla sunucu üzerinde çalışıyorsa, Nginx gelen istekleri bu sunucular arasında paylaştırabilir. Bunun için upstream bloğunu kullanabiliriz:

    upstream backend_servers {
        server 10.0.0.10:5000;
        server 10.0.0.11:5000;
        server 10.0.0.12:5000;
    }
    
    server {
        listen 80;
        server_name ornek.com;
    
        location / {
            proxy_pass http://backend_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

    Bu yapılandırma sayesinde Nginx, gelen istekleri sırasıyla (Round Robin algoritması ile) belirtilen üç farklı sunucuya yönlendirerek yükü dengeler.

    SSL/TLS Güvenliği ve HTTPS Geçişi

    Web sitenizin güvenliği için HTTPS protokolünü kullanmak zorunluluktur. Let's Encrypt kullanarak ücretsiz SSL sertifikası alabilir ve Nginx üzerinde ters proxy trafiğinizi şifreleyebilirsiniz. Certbot aracını kurarak bu işlemi otomatik hale getirebilirsiniz:

    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d ornek.com -d www.ornek.com
    

    Bu komut, SSL sertifikasını otomatik olarak indirecek ve Nginx yapılandırma dosyanızı HTTPS yönlendirmeleriyle birlikte güncelleyecektir.

    Sık Karşılaşılan Hatalar ve Çözümleri

  • 502 Bad Gateway: Nginx çalışıyor ancak arkadaki uygulama sunucusuna (örneğin Node.js uygulamanıza) ulaşamıyor demektir. Uygulama sunucunuzun belirtilen portta (örneğimizde 5000) çalışıp çalışmadığını kontrol edin.
  • 504 Gateway Timeout: Arka uçtaki uygulama sunucusunun isteğe zamanında yanıt vermediğini gösterir. Ağ gecikmelerini veya uygulamanın veritabanı sorgularının süresini kontrol edin.
  • Permission Denied (SELinux kaynaklı): Eğer CentOS/RHEL kullanıyorsanız, SELinux politikaları Nginx'in dış ağ bağlantılarını engelleyebilir. setsebool -P httpd_can_network_connect 1 komutu ile bu izni verebilirsiniz.

Sonuç

Bu rehberimizde, modern web altyapılarının vazgeçilmez bir parçası olan Nginx ters proxy kurulumunu ve temel yapılandırma adımlarını ele aldık. Nginx kullanarak hem sunucu güvenliğinizi artırabilir hem de yük dengeleme gibi gelişmiş özelliklerle projelerinizin yüksek trafik altında dahi kesintisiz çalışmasını sağlayabilirsiniz. Daha fazla detaylı yapılandırma seçeneği için Nginx resmi web sitesi üzerindeki dökümantasyonları inceleyebilirsiniz.

Sıkça Sorulan Sorular

Nginx ters proxy kullanmanın avantajları nelerdir?
Güvenliği artırır, yük dengeleme sağlar, SSL sertifikası yönetimini merkezileştirir ve statik içerikleri önbelleğe alarak ana sunucunun yükünü hafifletir.
502 Bad Gateway hatası ne anlama gelir?
Nginx'in arkadaki uygulama sunucusuna (örneğin Node.js veya PHP-FPM) ulaşamadığını veya sunucunun yanıt vermediğini gösterir. Uygulama sunucusunun çalışıp çalışmadığı kontrol edilmelidir.
Ters proxy ile normal proxy arasındaki fark nedir?
Normal proxy (forward proxy) istemcileri gizlemek ve internete çıkışlarını yönetmek için kullanılırken; ters proxy (reverse proxy) sunucuları korumak, gelen istekleri yönlendirmek ve yükü dağıtmak için sunucu tarafında kullanılır.
WxDigitals
WxDigitals

WebTeknoloji.net editör ekibi; web geliştirme, SEO, hosting ve yapay zeka alanlarında üretilen içeriklerin araştırma, test ve yayın süreçlerini yürütür. Tüm incelemeler gerçek kullanım deneyimine, karşılaştırmalar ise resmi dokümantasyon ve güncel fiyatlandırma sayfalarına dayanır.

Bu içeriği faydalı bulduysanız…

Haftalık teknoloji & SEO rehberlerimize katılın, 38 maddelik Teknik SEO Kontrol Listesi PDF'ini hediye olarak hemen indirin.

Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Yorum Yazın