Apache ve Nginx Nedir?
Bir web uygulamasını internette yayınlamak için, içeriğin kullanıcıya sunulmasını sağlayacak bir sunucu altyapısına ihtiyaç duyulur. Bu noktada devreye giren web sunucuları, projenin omurgasını oluşturur. Apache HTTP Server, uzun yıllardır istikrarla kullanılan ve geliştirilen bir çözümdür. Modüler yapısı, geniş eklenti desteği ve özelleştirilebilirliğiyle farklı projelere kolayca adapte olabilir. Özellikle LiteSpeed uyumlu panellere kıyasla daha fazla yapılandırma özgürlüğü sunması, onu birçok kullanıcı için cazip hale getirir.
Nginx , web sunucusu anlayışına daha modern ve farklı bir yaklaşım getirir. Minimal kaynak kullanımı ve yüksek performansı sayesinde, yoğun trafikli sistemlerde vazgeçilmez hale gelmiştir. Olay tabanlı mimarisi, aynı anda çok sayıda isteği etkili şekilde işleyebilmesini sağlar. Statik içeriklerin sunumundaki başarısı nedeniyle genellikle ön uç sunucu olarak görev alır. Sanal sunucu güvenlik yapılandırmalarıyla entegre edildiğinde ise sistem kaynaklarını korurken hızdan ödün vermez.
Reverse Proxy Nedir?
Reverse Proxy, karmaşık anlatımlarla zor gibi görünse de aslında oldukça temel bir görevi yerine getirir. Bu yapı, kullanıcıdan gelen istekleri alır, bu istekleri arka uçtaki sunucuya iletir ve çıkan sonucu tekrar kullanıcıya yönlendirir. Kullanıcı, işlemler sırasında doğrudan asıl sunucuya erişmeden tüm etkileşimini bu aracı sistem üzerinden gerçekleştirir.
Nginx, bu sistemin en yaygın örneklerinden biridir. HTTP isteklerini doğrudan karşılarken, arka planda bu taleplerin işlenmesini Apache gibi başka bir sunucuya bırakabilir. Apache işlemi gerçekleştirip çıktıyı Nginx’e yollar, Nginx ise sonucu kullanıcıya sunar. Böylece görevler uzmanlık alanlarına göre dağıtılır: Nginx statik içerik sunar, Apache ise dinamik verileri işler.
Bu yapının sağladığı avantajlar oldukça fazladır. İlk olarak performans artışı sağlar çünkü iş yükü sunucular arasında dengelenir. Güvenlik açısından da faydalıdır; gerçek sunucu doğrudan internet ortamına maruz kalmaz. Ek olarak, trafik yönlendirme, önbellekleme ve SSL işlemleri bu yapı sayesinde daha etkin biçimde yürütülür.
Kurulum Öncesi Yapılandırma
Apache ile Nginx’i kurmadan önce sistemin belirli koşulları karşılaması beklenir. AlmaLinux işletim sisteminin 8.x veya 9.x sürümleri kurulu olmalıdır. Yönetim işlemleri için root yetkisi veya sudo erişimi bulunan bir kullanıcı hesabı kullanılmalıdır. Bağlantı gerektiren işlemler için sunucuda aktif bir internet bağlantısının mevcut olması önemlidir. Ayrıca SELinux servisinin ya kapatılmış ya da doğru şekilde yapılandırılmış olması gerekir.
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
Kullanıcı Sorunları Ve Çözüm Önerileri
Nginx ve Apache birlikte neden tercih edilir?
Nginx, özellikle eş zamanlı bağlantı sayısı yüksek projelerde performansıyla öne çıkar. Apache ise PHP ve benzeri sunucu taraflı uygulamalarda modüler mimarisiyle avantaj sağlar. Bu iki sistemin birlikte çalışması, hem hız hem de işlevsellik açısından daha dengeli bir çözüm sunar.
Neden Apache 8080 portuna yönlendirilir?
Her iki sunucu da 80 numaralı portu kullanmak istediği için aynı anda çalışmaları çakışmaya neden olur. Bu sorunu çözmek için genellikle Apache 8080 gibi alternatif bir porta alınır. Nginx, gelen istekleri 80 portu üzerinden alır ve gerektiğinde 8080’e yönlendirir. Bu yöntem iki sistemin birlikte çalışmasını mümkün kılar.
HTTPS yapılandırması nasıl olur?
Nginx, SSL işlemlerini üstlenerek HTTPS bağlantılarını doğrudan karşılayabilir. Bu yapı sayesinde güvenli bağlantı sağlanır ve arka uçtaki Apache’ye şifreli veri aktarımı yapılır. Üstelik ücretsiz Let’s Encrypt sertifikaları ile bu işlem birkaç komutla tamamlanabilir.
Yalnızca Nginx yeterli midir?
Statik içerik ağırlıklı web siteleri için Nginx tek başına fazlasıyla yeterlidir. Ancak PHP, veritabanı işlemleri ya da CMS sistemleri söz konusuysa Apache desteği önemli hale gelir. Bu gibi durumlarda Nginx ön yüzde, Apache ise işlemci olarak arka planda çalıştırılabilir.