Nginx reverse proxy kurulumu ve yapılandırması, modern web altyapılarında sunucu yükünü dengelemek, güvenlik katmanları eklemek ve performans artışı sağlamak için
Nginx reverse proxy kurulumu ve yapılandırması, modern web altyapılarında sunucu yükünü dengelemek, güvenlik katmanları eklemek ve performans artışı sağlamak için vazgeçilmez bir adımdır. Bu yapılandırma ile istemci istekleri doğrudan arka uç sunucularına yönlendirilmeden Nginx üzerinden yönetilir, böylece DDoS saldırılarına karşı koruma sağlanır ve trafik optimize edilir. Kurumsal ortamlarda, nginx reverse proxy kullanarak birden fazla web uygulamasını tek bir giriş noktasında birleştirmek mümkündür. Bu makalede, adım adım kurulum ve pratik yapılandırma örneklerini ele alarak, sistem yöneticilerine net bir rehber sunacağız.
Nginx reverse proxy, gelen HTTP isteklerini alır ve bunları belirlenen arka uç sunucularına iletirken, istemcilere tek bir IP adresi üzerinden hizmet sunar. Bu yaklaşım, sunucu kaynaklarını verimli kullanmayı sağlar ve bakım işlemlerini kolaylaştırır. Örneğin, bir e-ticaret sitesinde veritabanı sunucusu ve uygulama sunucusu gibi birden fazla bileşeni yönetirken, Nginx trafiği akıllıca dağıtır. Proxy modunda çalışırken, Nginx başlık bilgilerini değiştirerek gizlilik sağlar ve önbellekleme ile yanıt sürelerini kısaltır.
Reverse proxy’nin avantajları arasında yük dengeleme (load balancing), SSL sonlandırma ve sıkıştırma yer alır. Kurumsal ölçekte, birden fazla veri merkezini entegre etmek için upstream blokları tanımlanır. Bu sayede, bir sunucu arızalandığında trafik otomatik olarak diğerlerine kaydırılır. Uygulamada, nginx.conf dosyasındaki server blokları ile domain bazlı yönlendirme yapılır, örneğin example.com trafiği 192.168.1.10’a proxy_pass ile iletilir.
Kurulum için Ubuntu 22.04 gibi popüler bir Linux dağıtımını temel alalım. Öncelikle sistemi güncelleyin: sudo apt update && sudo apt upgrade -y. Ardından Nginx’i yükleyin: sudo apt install nginx -y. Bu komut, en güncel stabil sürümü (genellikle 1.18+) getirir. Yükleme sonrası, sudo systemctl start nginx ile servisi başlatın ve sudo systemctl enable nginx ile açılışta otomatik çalışmasını sağlayın. Durumu kontrol etmek için sudo systemctl status nginx kullanın; active (running) durumunu görmelisiniz.
Kurulum öncesi en az 1 GB RAM ve 2 CPU çekirdeği önerilir, çünkü proxy trafiği yüksek hacimde yönetilebilir. Firewall ayarlarını yapılandırın: UFW ile sudo ufw allow 'Nginx Full' ve sudo ufw enable. SELinux kullanıyorsanız, permissive moda alın. Paket yöneticisi üzerinden yükleme, bağımlılıkları otomatik çözer ve güvenlik güncellemelerini sağlar. Bu adımlar, stabil bir temel oluşturur ve olası uyumluluk sorunlarını önler, kurumsal üretim ortamlarında kritik öneme sahiptir.
Yükleme tamamlandıktan sonra, tarayıcıda sunucu IP’sini ziyaret ederek Nginx hoş geldin sayfasını görün. curl -I http://localhost ile başlıkları kontrol edin; Server: nginx doğrular. Log dosyalarını inceleyin: /var/log/nginx/access.log ve error.log. Bu dosyalar, istekleri ve hataları kaydeder, sorun gidermede vazgeçilmezdir. Temel kurulum bu şekilde tamamlanır ve yapılandırmaya geçilir.
Yapılandırma /etc/nginx/sites-available/default dosyasını düzenleyerek başlar. Yeni bir site için sudo nano /etc/nginx/sites-available/reverse-proxy oluşturun. İçine server bloğu ekleyin: server { listen 80; server_name example.com; location / { proxy_pass http://backend-server:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }. Sintaksı test edin: sudo nginx -t, sonra sudo ln -s /etc/nginx/sites-available/reverse-proxy /etc/nginx/sites-enabled/ ve sudo systemctl reload nginx.
Upstream bloğu ile birden fazla sunucuyu tanımlayın: upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; } location / { proxy_pass http://backend; } . Bu, round-robin yöntemiyle trafiği dağıtır. ip_hash direktifi ile oturum tutarlılığı ekleyin. Performans için proxy_buffering on; ve proxy_buffers 8 16k; ayarları kullanın. Kurumsal uygulamalarda, bu yöntem %30’a varan yanıt süresi iyileştirmesi sağlar.
HTTPS için Let’s Encrypt ile sertifika alın ve listen 443 ssl; ekleyin. proxy_set_header X-Forwarded-Proto $scheme; ile protokolü iletin. Rate limiting için limit_req_zone tanımlayın: limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;. Bu, brute-force saldırılarını engeller. Her zaman en az iki proxy_set_header kullanın: Host ve X-Real-IP, gerçek istemci bilgisini korur. Yapılandırmayı reload ederek etkinleştirin.
Sonuç olarak, nginx reverse proxy ile web altyapınızı güçlendirmek, ölçeklenebilirlik ve güvenliği artırır. Bu adımları uygulayarak, kendi ortamınıza uyarlayın ve düzenli log izleme ile optimize edin. Pratik deneyimle, yapılandırmaları test ederek en iyi sonuçları elde edeceksiniz.