Apache ve Nginx Nedir?
nternette yayınlanan bir web uygulaması ya da site, bu içeriği son kullanıcıya ulaştırmak için bir web sunucusuna ihtiyaç duyar. Apache HTTP Server, bu görevi uzun yıllardır başarıyla yerine getiren ve dünya genelinde yaygın olarak kullanılan bir çözümdür. Esnek yapısı, kapsamlı modül desteği ve güçlü topluluk ağı sayesinde özellikle özelleştirme gerektiren ortamlarda sıklıkla tercih edilir. Performansı artırmak için sıkça tercih edilen Apache Brotli sıkıştırma desteği gibi teknolojilerle entegre çalışabilir. Geniş eklenti seçenekleri ve klasik yapısıyla, hem yeni başlayanlara hem de tecrübeli yöneticilere kolaylık sunar.
Nginx ise performans ve kaynak kullanımı açısından daha modern bir çözüm sunar. Düşük sistem kaynaklarıyla yüksek performans sağlayan yapısı sayesinde, özellikle yoğun trafiğe sahip projelerde öne çıkar. Apache’nin işleyişinden farklı olarak bağlantıları eş zamanlı değil, olaylara dayalı şekilde işler; bu da binlerce kullanıcıya aynı anda hizmet verebilmesini sağlar. Statik dosya sunumundaki hızı sayesinde sıkça bir ön katman proxy görevi üstlenir. Ayrıca, DirectAdmin Nginx entegrasyonları sayesinde, bu yapının kaynak verimliliği DirectAdmin kullanıcı arayüzüyle birleştirilerek yönetim kolaylığı sağlanabilir.
Reverse Proxy Nedir?
Reverse Proxy çoğu zaman teknik bir kavram gibi görünse de, aslında oldukça basit bir görevi yerine getirir. Kullanıcıdan gelen bir istek, bu sistem aracılığıyla arka uçtaki başka bir sunucuya yönlendirilir ve alınan yanıt kullanıcıya geri gönderilir. Kullanıcı bu süreci yaşarken hangi sunucuya eriştiğini bilmeden tüm etkileşimi bu aracı sistem üzerinden gerçekleştirir.
Nginx bu yapıya örnek gösterilebilecek en yaygın çözümlerden biridir. Ziyaretçilerden gelen istekleri alan Nginx, dinamik içeriğe ihtiyaç duyulması durumunda bu talepleri Apache’ye yönlendirir.
Apache, işlemleri tamamlayarak veriyi Nginx’e iletir; Nginx ise kullanıcıya sonuç döner. Bu sayede iş bölümü yapılır: statik sunumlar Nginx’te, sunucu taraflı iş yükü Apache’de toplanır.
Reverse proxy kullanmak sistem performansını artırır çünkü iş yükü sunucular arasında paylaşılır. Ayrıca doğrudan sunucuya erişim engellenerek daha güvenli bir yapı oluşturulur. Trafik kontrolü, cache mekanizmaları ve SSL offload gibi özellikler bu sistemle kolayca entegre edilebilir.
Kurulum Öncesi Güncellemeler
Apache ve Nginx kurulumu öncesi belirli sistem gereksinimlerinin karşılanmış olması gerekir. AlmaLinux’un 8.x veya 9.x sürümlerinden birinin kurulu olduğu bir sistem tercih edilmelidir. Sunucuda işlem yapacak kullanıcının root ya da sudo yetkilerine sahip olması zorunludur. Kurulum sırasında dış kaynaklara erişim gerekeceği için internet bağlantısının aktif olması önemlidir. Ek olarak, SELinux servisi kapalı olmalı veya sistemle uyumlu şekilde 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.