Apache ve Nginx Nedir?
Web siteleri ya da uygulamaların internette yayınlanabilmesi için bu içerikleri kullanıcıya ulaştıracak bir arka plan motoruna ihtiyaç vardır; işte bu noktada web sunucuları devreye girer. ApacheHTTP Server, uzun süredir kullanılan ve köklü geçmişe sahip bir yazılımdır. Geniş modül seçenekleri, esnek yapısı ve güçlü topluluk desteği sayesinde özelleştirme gerektiren projelerde ilk tercihler arasında yer alır.
Apache’nin geleneksel mimarisi, zengin eklenti desteğiyle birleştiğinde, hem acemi kullanıcılar hem de sistem yöneticileri için ideal bir deneyim sunar. LiteSpeed altyapılı panellerle kıyaslandığında, yapılandırma konusundaki esnekliği dikkat çekici bir avantaj sağlar.
Nginx ise bambaşka bir yaklaşım sunar. Daha hafif yapısı, hızlı işlem gücü ve yüksek trafik koşullarında bile performans kaybı yaşamamasıyla modern web dünyasında geniş yer edinmiştir. Apache’nin klasik işleyişinden farklı olarak eş zamanlı bağlantı yerine olay tabanlı bir sistemle çalışır; bu da aynı anda binlerce kullanıcı isteğini yönetmesine olanak tanır.
Statik dosyaları çok hızlı sunabilmesi nedeniyle sıkça ön uç proxy (front-end) olarak görev yapar. Sanal sunucularda uygulanan güvenlik politikalarıyla birlikte çalıştırıldığında ise hem performans hem de bütünlük açısından başarılı bir denge sağlar.
Reverse Proxy Nedir?
Bu kavram çoğu zaman teknik terimlerle karmaşıklaştırılsa da aslında oldukça sade bir yapıyı ifade eder. Reverse proxy, istemciden gelen istekleri alır ve bu talepleri arka plandaki başka bir sunucuya yönlendirir; ardından aldığı yanıtı tekrar istemciye iletir. Kullanıcı, gerçekte hangi sunucudan hizmet aldığını bilmeden işlemleri bu aracı sunucu üzerinden gerçekleştirir.
Bu yapı içinde en çok bilinen örneklerden biri Nginx’tir. Nginx, kullanıcıdan gelen HTTP taleplerini karşılar; ancak dinamik bir içerik söz konusuysa (örneğin PHP tabanlı sistemlerde), isteği Apache sunucusuna iletir. Apache işlemi gerçekleştirir, sonucu Nginx’e gönderir ve Nginx de son yanıtı kullanıcıya sunar. Bu sayede Nginx statik içerikleri işlerken, Apache sunucu taraflı hesaplamaları üstlenir.
Reverse proxy kullanımının birçok avantajı bulunur. En önemlisi, sistemin performansını artırmasıdır çünkü yük farklı sunuculara bölünmüş olur. Ayrıca güvenliği artırır; arka uç sunucu doğrudan internete açık olmadığı için saldırılara karşı daha korunaklı hale gelir. Trafik yönetimi, önbellekleme (cache) ve SSL yük boşaltma (offloading) gibi gelişmiş işlemler de bu mimari üzerinden kolayca yapılabilir.
Kurulum Öncesi Hazırlıklar
Apache ve Nginx kurulumuna başlamadan önce bazı temel sistem gereksinimlerinin sağlandığından emin olunmalıdır. Sistem üzerinde AlmaLinux’un 8 veya 9 serisi bir sürümünün kurulu olması gereklidir. Yönetici düzeyinde işlem yapabilmek için root ya da sudo yetkisine sahip bir kullanıcı kullanılmalıdır. Gerekli paketlerin yüklenebilmesi için sunucuda internet bağlantısının bulunması gerekir. Ek olarak, SELinux hizmeti devre dışı bırakılmalı ya da 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
SSS Sık Sorulan Sorular
Neden hem Nginx hem Apache birlikte kullanılmalı?
Nginx, bağlantı yönetimi ve statik dosya sunumunda yüksek performans sunarken, Apache modüler yapısı sayesinde dinamik içeriklerde daha etkili çalışır. Bu iki sunucunun birlikte çalışması, sistem kaynaklarını daha dengeli kullanarak daha hızlı ve stabil bir altyapı oluşturur. Özellikle hem yüksek hız hem de esnek uygulama desteği arayan projeler için ideal bir çözümdür.
Apache neden 8080 portuna alınmalı?
Nginx ve Apache varsayılan olarak aynı portu (80) kullanmaya çalıştığı için çakışma yaşanır. Bu yüzden genellikle Apache 8080 gibi farklı bir porttan çalışacak şekilde yapılandırılır. Böylece Nginx, 80 numaralı port üzerinden gelen tüm HTTP isteklerini karşılayabilir ve arka planda Apache’ye yönlendirme yapabilir. Bu port düzenlemesi, iki servis arasında sorunsuz iletişim kurulmasını sağlar.
HTTPS ile uyumlu mudur?
Elbette. Nginx, HTTPS trafiğini doğrudan kendi üzerinden yönetebilir ve SSL sertifikası işlemlerini üstlenebilir. Bu sayede kullanıcı bağlantıları şifreli olarak alınır ve arka uçta Apache’ye güvenli şekilde iletilir. Let’s Encrypt gibi servislerle birlikte kullanıldığında HTTPS yapılandırması çok daha kolay hale gelir.
Sadece Nginx kullanmak yeterli olur mu?
Eğer siteniz yalnızca statik içerik barındırıyorsa, örneğin HTML, CSS ve görsel dosyalar sunuyorsa, Nginx tek başına yeterli performansı sağlar. Ancak PHP gibi sunucu taraflı işlemler gerektiren WordPress veya Laravel altyapıları kullanıyorsanız, Apache’nin arka uç desteğine ihtiyaç duyarsınız. Dinamik içeriklerle çalışan projelerde hibrit yapı daha uygundur.