İçeriğe geç

Rehber

Ubuntu üzerinde Nginx ile reverse proxy kurulumu

Bir uygulama sunucusunu doğrudan internete açmak yerine Nginx'i reverse proxy olarak kullanmak; SSL, önbellekleme ve yük dengeleme gibi katmanları merkezi hale getirir.

2 dk okumaOrta seviye
Ubuntu üzerinde Nginx ile reverse proxy kurulumu — editoryal kapak görseli

Bir Node.js, Python veya Docker container'ında çalışan uygulama sunucusunu doğrudan internete açmak yerine önüne bir Nginx reverse proxy koymak, SSL sonlandırma, statik dosya sunumu ve birden fazla uygulamayı tek bir IP üzerinden yönlendirme gibi işlevleri merkezi bir katmanda toplar.

Reverse proxy mimarisi

Nginx reverse proxy'nin internet ve uygulama sunucusu arasındaki konumunu gösteren mimari diyagram
Nginx'in internet trafiği ile arka plandaki uygulama sunucusu arasında nasıl konumlandığını gösteren mimari.

Kurulum adımları

1. Nginx'i kurun

Ubuntu'nun resmi paket deposu üzerinden `sudo apt update && sudo apt install nginx` komutu Nginx'i kurar ve varsayılan olarak systemd servisi olarak etkinleştirir. Kurulumu `sudo systemctl status nginx` ile doğrulamak, servisin çalışır durumda olduğunu teyit eder.

2. Site yapılandırma dosyasını oluşturun

Örnek bir Nginx reverse proxy yapılandırma dosyası içeriği
/etc/nginx/sites-available/ altında oluşturulan örnek bir reverse proxy yapılandırma dosyası.

Nginx'in resmi dokümantasyonuna göre `proxy_pass` direktifi, gelen isteği belirtilen adrese (genellikle localhost üzerindeki bir port) yönlendirir. `proxy_set_header` satırları, orijinal istemci bilgisinin (gerçek IP, host başlığı) arka plandaki uygulamaya doğru şekilde iletilmesini sağlar — bu satırlar atlanırsa uygulama tüm istekleri Nginx'ten geliyormuş gibi görür.

3. Siteyi etkinleştirin ve test edin

KomutNe yapar
sudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/Yapılandırmayı etkinleştirir
sudo nginx -tYapılandırma dosyasında sözdizimi hatası olup olmadığını kontrol eder (yeniden başlatmadan önce mutlaka çalıştırılmalı)
sudo systemctl reload nginxServisi kesintiye uğratmadan yeni yapılandırmayı yükler
Nginx yapılandırmasını etkinleştirme ve doğrulama komutları

4. SSL sonlandırmayı ekleyin

Reverse proxy'nin en yaygın kullanım nedenlerinden biri SSL sonlandırmadır — HTTPS trafiği Nginx'te çözülür, arka plandaki uygulamayla iletişim genellikle şifresiz HTTP üzerinden (aynı sunucu içinde) devam eder. Let's Encrypt'in ücretsiz sertifikalarını Certbot'un Nginx eklentisiyle otomatik olarak yapılandırmak, bu adımı büyük ölçüde otomatikleştirir.

Sık yapılan hatalar

  • `proxy_set_header Host $host;` satırını unutmak — bu durumda arka plandaki uygulama yanlış host bilgisiyle çalışabilir
  • Yapılandırmayı test etmeden (`nginx -t` atlayarak) doğrudan `systemctl restart nginx` çalıştırmak — hatalı yapılandırma servisi tamamen durdurabilir
  • WebSocket bağlantıları için gerekli `Upgrade`/`Connection` başlıklarını eklemeyi unutmak (canlı bağlantı gerektiren uygulamalarda bağlantı kopması yaşanır)
  • Zaman aşımı (timeout) değerlerini varsayılanda bırakmak — uzun süren istekler beklenmedik şekilde kesilebilir

Sonuç

Doğru yapılandırılmış bir Nginx reverse proxy katmanı; güvenlik, performans ve operasyonel esneklik açısından doğrudan internete açık bir uygulama sunucusundan çok daha sağlam bir temel sunar.

Kategoriler

Etiketler

Kaynaklar

  1. Nginx Docs — NGINX Reverse Proxy

Paylaş