Apache ve Nginx Nedir?
Web siteleri ya da uygulamalar internette yayınlandığında, bu içerikleri ziyaretçilere ulaştıran bir motor gerekir: işte bu noktada devreye web sunucuları girer. Apache HTTP Server, uzun yıllardır kullanımda olan, dünya genelinde milyonlarca sunucuda görev yapan köklü bir çözümdür. Esnek yapısı, modül desteği ve geniş topluluk desteği sayesinde özellikle özelleştirme gereken projelerde ilk akla gelen sistemlerden biridir. Özellikle Plesk Apache entegrasyonları sayesinde, bu sunucu altyapısı görsel bir panel üzerinden kolayca yönetilebilir hale gelir ve küçük ya da orta ölçekli projelerde teknik karmaşıklığı azaltır. Apache, geleneksel işleyişi ve geniş eklenti desteğiyle hem yeni başlayanlar hem de sistem yöneticileri için kullanıcı dostu bir deneyim sunar.
Nginx ise daha farklı bir yaklaşımı temsil eder. Hafif, hızlı ve özellikle yüksek trafik altında performans kaybı yaşamayan yapısı sayesinde modern web projelerinin favorilerinden biri haline gelmiştir. Apache’den farklı olarak bağlantıları eş zamanlı işlemek yerine olay tabanlı bir mimari kullanır; bu da onu aynı anda binlerce isteği karşılamaya hazır hale getirir. Statik içerikleri (resim, CSS, JavaScript gibi) çok hızlı sunabildiği için sıkça bir ön katman (front-end proxy) olarak konumlandırılır.
Reverse Proxy Nedir?
Reverse Proxy kavramı genellikle karmaşık terimlerle açıklansa da, aslında oldukça sade bir işleyişe sahiptir. Bu sistem, kullanıcıdan gelen talepleri alarak arka plandaki sunucuya iletir ve o sunucudan dönen yanıtı kullanıcıya iletmekle görevlidir. Yani kullanıcı, gerçek sunucuya doğrudan erişmeden tüm işlemleri bu aracı yapı üzerinden gerçekleştirir.
Bu mimarinin en bilinen örneklerinden biri Nginx’tir. Nginx, gelen HTTP isteklerini karşılar; ancak içerik dinamikse, bu istekleri Apache’ye yönlendirir.
Apache işlemleri tamamlayarak çıktıyı Nginx’e iletir ve son olarak kullanıcıya sunulur. Bu şekilde, her sunucu kendi uzmanlık alanında çalışarak hem verimlilik hem de performans sağlar: Nginx statik dosyaları üstlenirken, Apache dinamik işlemleri yürütür.
Reverse proxy sistemlerinin en büyük faydalarından biri sistem performansını artırmalarıdır çünkü işlem yükü sunucular arasında paylaşılır. Ek olarak, doğrudan erişimi engelleyerek güvenliği artıran bir katman oluşturur. Trafik yönetimi, önbellekleme ve SSL işlemlerinin dış kaynaklarca yönetilmesi gibi gelişmiş fonksiyonlar da bu yapı sayesinde kolayca entegre edilebilir.
Kurulum Öncesi Gereksinimler
Apache ve Nginx kurulumuna başlamadan önce sistemin bazı temel gereksinimleri karşılaması gerekir. Bu kurulumun sorunsuz şekilde ilerlemesi için Linux’un 8.x veya 9.x sürümlerinden biri tercih edilmelidir. İşlemleri gerçekleştirecek kullanıcının root veya sudo yetkilerine sahip olması önemlidir. Kurulum sırasında gerekli paketlerin indirilmesi için aktif bir internet bağlantısına ihtiyaç duyulur. Ayrıca SELinux servisi ya kapatılmalı ya da önceden yapılandırılmış olmalıdır.
Apache Web Sunucusunun Kurulumu
sudo dnf install httpd -y
systemctl enable httpd
sudo systemctl start httpd
Apache’nin durum kontrolü;
sudo systemctl status httpd
Yapılandırma ve içerik dizinleri:
/etc/httpd/conf/httpd.conf
/var/www/html/
Nginx’in Kurulumu ve Reverse Proxy Yapılandırması
sudo dnf install nginx -y
systemctl enable nginx
sudo systemctl start nginx
Apache’nin portu değiştirmek için bu adımı izleyelim.
sudo nano /etc/httpd/conf/httpd.conf
Listen 80
satırını şu şekilde değiştirelim;
Listen 8080
Apache yeniden başlatılıyor
sudo systemctl restart httpd
Nginx yapılandırma dosyası:
sudo nano /etc/nginx/conf.d/reverse-proxy.conf
İçeriği:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nginx test edilip başlatalım.
sudo nginx -t
sudo systemctl restart nginx
Güvenlik Duvarı ve SELinux Ayarları
sudo firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https firewall-cmd --reload
sudo setsebool -P httpd_can_network_connect 1
Kurulum Sonrası Test
Tarayıcı üzerinden http://sunucu-ip-adresi
kontrol edilir ya da:
curl -I http://localhost
Sıkça Sorulan Sorular (SSS)
Neden hem Nginx hem Apache birlikte kullanılmalı?
Nginx, bağlantıları yönetme ve statik dosyaları sunma konusunda son derece hızlı çalışır. Apache ise PHP gibi sunucu taraflı işlemler için modüler yapısı sayesinde daha fazla esneklik sunar. Bu iki sunucu birlikte kullanıldığında, yük dengesi sağlanarak daha hızlı ve kararlı bir yapı oluşturulabilir. Özellikle kaynakların verimli kullanımı hedefleniyorsa, bu kombinasyon büyük avantaj sağlar.
Apache’yi 8080’e almak zorunlu mu?
Nginx ve Apache varsayılan olarak 80 numaralı portu kullanır; bu da çakışmaya neden olur. Aynı sistemde sorunsuz çalışmaları için Apache genellikle 8080 gibi alternatif bir porta yönlendirilir. Böylece Nginx, gelen HTTP isteklerini 80 üzerinden alırken, gerektiğinde Apache’ye yönlendirme yapabilir. Bu yapı, iki sunucunun çakışmadan birlikte çalışmasını sağlar.
HTTPS ile birlikte kullanılabilir mi?
Kesinlikle evet. Nginx’in en güçlü yönlerinden biri, HTTPS bağlantılarını doğrudan yönetebilmesi ve bu trafiği güvenli biçimde Apache gibi arka uç sunuculara iletebilmesidir. Bu durum, performans açısından fayda sağlarken, aynı zamanda SSL sertifika süreçlerini de basitleştirir. Let’s Encrypt gibi ücretsiz araçlarla kurulum oldukça kolay ve etkilidir.
Sadece Nginx kullanmak yeterli mi?
Bu durum, projenin altyapısına bağlı olarak değişir. Sadece HTML, CSS ve resim dosyaları barındıran statik sitelerde Nginx tek başına yeterli olur. Ancak PHP altyapısı, WordPress veya Laravel gibi dinamik sistemler kullanılıyorsa Apache’nin sağladığı entegrasyon avantajları devreye girer. Özellikle sunucu taraflı işlemlerin yoğun olduğu projelerde, arka uçta Apache kullanmak en ideal çözümlerden biridir.