Ters Proxy ile NGINX
NGINX ve Ters Proxy’ye Giriş
NGINX yüksek performanslı bir HTTP sunucusu, ters proxy sunucusu ve dünya çapında birçok web sitesi tarafından kullanılan açık kaynaklı bir yazılımdır. Çok yönlülüğü ve hızı, onu web barındırma, yük dengeleme, önbelleğe alma ve ters proxy için popüler bir seçim haline getirmiştir. Özellikle bir ters proxy, bir web sunucusunun önünde oturan ve istemci isteklerini uygun arka uç sunucularına ileten güçlü bir araçtır. Bu makale, ters proxy ile NGINX’in temellerini ve etkili bir şekilde nasıl yapılandırılacağını kapsayacaktır.
Ters Proxy nedir?
Ters proxy, istemciler ve arka uç sunucuları arasında bir aracı görevi görür. İstemciler tarafından kaynaklara anonim olarak erişmek için kullanılan normal bir proxy’nin aksine, bir ters proxy sunucu tarafında konumlandırılır, istemcilerden gelen istekleri işler ve bunları uygun arka uç sunucularına dağıtır. Ters proxy kullanmanın temel faydaları şunlardır:
- Yük Dengeleme: İstemci isteklerini birden fazla sunucuya dağıtarak tek bir sunucuda aşırı yüklenmeyi önler ve genel performansı artırır.
- Güvenlik ve Anonimlik: Arka uç sunucularının IP adreslerini gizleyerek onları internete doğrudan maruz kalmaktan korur.
- ÖnbelleğeAlma: Sıkça talep edilen kaynakların teslimini hızlandırmak için statik içeriği önbelleğe alma.
- SSL Sonlandırma: SSL/TLS şifreleme ve şifre çözme işlemlerini ters proxy’ye yükleyerek arka uç sunucular üzerindeki işlem yükünü azaltır.
Neden NGINX’i Ters Proxy Olarak Kullanmalısınız?
NGINX’in hafif tasarımı ve engellemesiz mimarisi onu ters proxy için mükemmel bir seçim haline getirir. Düşük kaynak tüketimi ile çok sayıda eşzamanlı bağlantıyı idare edebilir, bu da onu yüksek trafik yaşayan veya yüksek kullanılabilirliği sürdürmesi gereken web siteleri için ideal hale getirir. NGINX’i ters proxy olarak kullanmanın bazı avantajları şunlardır:
- Yüksek Performans: NGINX, çok sayıda bağlantıyı verimli bir şekilde işlemek için tasarlanmıştır, bu da onu hızlı istek-yanıt süreleri gerektiren ortamlar için mükemmel hale getirir.
- Esneklik: NGINX, birden fazla arka uç sunucusunun kolay yapılandırılmasına olanak tanıyarak karmaşık yük dengeleme ve yük devretme kurulumlarını mümkün kılar.
- Ölçeklenebilirlik: Trafik arttıkça, daha fazla arka uç sunucusu ekleyebilir ve herhangi bir kesinti olmadan yükü dengeleyebilirsiniz.
- Güvenlik Özellikleri: NGINX HTTPS bağlantılarını zorlayabilir, belirli IP adreslerini engelleyebilir ve kimlik doğrulamayı yönetebilir.
NGINX Ters Proxy Olarak Nasıl Kurulur
NGINX’i ters proxy olarak ayarlamak, NGINX’i gelen HTTP veya HTTPS isteklerini dinleyecek ve bunları bir veya daha fazla arka uç sunucusuna iletecek şekilde yapılandırmayı içerir. İşte başlamak için adım adım bir kılavuz:
Adım 1: NGINX’i Kurun
Sunucunuza NGINX yüklemediyseniz, yükleyerek başlayın. Çoğu Linux dağıtımı için aşağıdaki komutu kullanabilirsiniz:
# Debian/Ubuntu için
sudo apt güncellemesi
sudo apt nginx'i yükle
# CentOS/RHEL için
sudo yum install epel-release
sudo yum install nginx
Kurulduktan sonra NGINX hizmetini başlatın:
sudo systemctl start nginx
Adım 2: Temel NGINX Ters Proxy Yapılandırması
Temel bir ters proxy kurmak için, genellikle /etc/nginx/nginx.conf adresinde bulunan NGINX yapılandırma dosyasını düzenlemeniz veya /etc/nginx/conf.d/ içinde yeni bir yapılandırma dosyası oluşturmanız gerekir. Aşağıda, istekleri bir arka uç sunucusuna ters proxy’lemek için basit bir yapılandırma verilmiştir:
sunucu {
dinle 80;
server_name example.com;
konum / {
proxy_pass http://backend_server;
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;
}
}
- listen 80;: NGINX’e 80 numaralı bağlantı noktasındaki HTTP isteklerini dinlemesini söyler.
- server_name: Example.com yerine alan adınızı veya IP adresinizi yazın.
- proxy_pass: İsteklerin iletilmesi gereken arka uç sunucusunun adresini belirtir.
- proxy_set_header: Arka uca iletilecek, günlük kaydı ve güvenlik için yararlı olabilecek ek başlıkları ayarlar.
Adım 3: Birden Fazla Arka Uç Sunucusu için Ters Proxy
Birden fazla arka uç sunucusu arasında yük dengeleme ayarlamak için bir yukarı akış bloğu tanımlayabilirsiniz:
yukarı akış arka uç {
sunucu backend1.example.com;
sunucu arka uç2.example.com;
sunucu backend3.example.com;
}
sunucu {
dinle 80;
server_name example.com;
konum / {
proxy_pass http://backend;
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;
}
}
Bu yapılandırma, istekleri backend1.example.com, backend2.example.com ve backend3 . example .com arasında round-robin şeklinde dağıtır.
Adım 4: Güvenli Bağlantılar için SSL’yi Etkinleştirin
İstemciler ve NGINX ters proxy arasındaki iletişimi güvence altına almak için SSL/TLS’yi etkinleştirebilirsiniz. Let’s Encrypt gibi sağlayıcılardan edinebileceğiniz bir SSL sertifikasına ihtiyacınız olacaktır:
sunucu {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate_key.key;
konum / {
proxy_pass http://backend_server;
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;
}
}
SSL sertifikanızın ve anahtarınızın yollarını değiştirdiğinizden emin olun. Bu kurulumla, NGINX SSL bağlantısını sonlandıracak ve trafiği HTTP üzerinden arka uç sunucusuna iletecektir.
Adım 5: NGINX’i Test Etme ve Yeniden Başlatma
NGINX yapılandırmasında değişiklik yaptıktan sonra, yapılandırmayı herhangi bir sözdizimi hatasına karşı test etmek önemlidir:
sudo nginx -t
Herhangi bir hata bildirilmezse, değişiklikleri uygulamak için NGINX’i yeniden başlatın:
sudo systemctl nginx'i yeniden başlat
Gelişmiş NGINX Ters Proxy Yapılandırması
Daha gelişmiş kurulumlar için önbelleğe alma, URL yeniden yazma ve özel yük dengeleme algoritmaları yapılandırabilirsiniz. İşte birkaç ek seçenek:
- Önbellekleme: Önbelleklemeyi etkinleştirmek için konum bloğunuza proxy_cache yönergelerini ekleyin.
- Özel Yük Dengeleme: Trafiği en az aktif bağlantıya sahip arka uç sunucusuna dağıtmak için least_conn gibi farklı yük dengeleme stratejileri kullanın.
- Sağlık Kontrolleri: NGINX’in proxy_next_upstream kullanarak trafiği yalnızca sağlıklı arka uç sunucularına iletmesini sağlamak için sağlık denetimlerini yapılandırın.
Sonuç
NGINX’i ters proxy olarak kullanmak, trafiği yönetmenin ve web uygulamalarınızın ölçeklenebilirliğini, performansını ve güvenliğini artırmanın güçlü bir yoludur. NGINX’i istekleri işleyecek ve arka uç sunucular arasında dağıtacak şekilde ayarlayarak, yüksek oranda kullanılabilir ve verimli bir altyapı elde edebilirsiniz. İster küçük bir web sitesi ister büyük ölçekli bir uygulama barındırıyor olun, ters proxy özelliklerine sahip NGINX mimarinizin kritik bir bileşeni olabilir.
Bu kılavuzla, NGINX’i ihtiyaçlarınız için bir ters proxy olarak yapılandırmak ve optimize etmek için iyi bir donanıma sahip olmalısınız.