Web sunucuları, web sitelerini ve uygulamalarını barındırmak için kullanılan temel bileşenlerden biridir. En popüler iki web sunucusu Apache HTTP Server ve NGINX’tir. Bu makalede, Ubuntu üzerine Apache ve NGINX’in nasıl kurulacağını, yapılandırmalarını ve performans açısından nasıl karşılaştırıldıklarını ele alacağım.
1. Apache ve NGINX Nedir?
Apache HTTP Server
- İlk sürüm: 1995
- Geliştirici: Apache Software Foundation
- Modüler mimari: Ekstra işlevsellik sağlayan modülleri destekler (mod_rewrite, mod_ssl, mod_proxy vb.).
- İşlem tabanlı (Process-driven) model: Her isteği ayrı bir işleme atayarak çalışır.
- .htaccess desteği: Kullanıcı bazlı yapılandırmalar sağlar.
- PHP ve diğer dinamik diller için dahili destek sunar.
NGINX
- İlk sürüm: 2004
- Geliştirici: Igor Sysoev
- Olay tabanlı (Event-driven) model: Yüksek eşzamanlılık sağlar.
- Daha az kaynak tüketimi: CPU ve RAM kullanımında Apache’ye kıyasla daha verimlidir.
- Ters proxy, yük dengeleme ve statik içerik sunma konusunda daha başarılıdır.
- Apache’den farklı olarak .htaccess desteği bulunmaz.
2. Apache Web Server Kurulumu (Ubuntu 22.04/20.04)
Apache’yi yüklemek için aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt install apache2 -y
Apache’yi başlatın ve sistemde otomatik başlamasını sağlayın:
sudo systemctl start apache2
sudo systemctl enable apache2
Apache’nin çalışıp çalışmadığını kontrol etmek için:
sudo systemctl status apache2
Tarayıcınızdan aşağıdaki adresi ziyaret ederek Apache’nin çalıştığını doğrulayabilirsiniz:
http://localhost
Eğer uzak bir sunucudaysanız, sunucu IP adresinizi kullanın.
Apache Performans Ayarları
Varsayılan yapılandırmayı optimize etmek için /etc/apache2/apache2.conf
dosyasına aşağıdaki ayarları ekleyebilirsiniz:
<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers 150
MaxConnectionsPerChild 3000
</IfModule>
Bu ayarlar, daha iyi kaynak yönetimi sağlar ve Apache’nin yoğun trafik altında çökmesini önler.
Güvenlik duvarında (UFW) Apache için HTTP ve HTTPS trafiğini açalım:
sudo ufw allow 'Apache Full'
3. NGINX Web Server Kurulumu (Ubuntu 22.04/20.04)
NGINX’i yüklemek için aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt install nginx -y
NGINX’i başlatın ve sistemde otomatik başlamasını sağlayın:
sudo systemctl start nginx
sudo systemctl enable nginx
NGINX’in çalışıp çalışmadığını kontrol etmek için:
sudo systemctl status nginx
Tarayıcınızdan aşağıdaki adresi ziyaret ederek NGINX’in çalıştığını doğrulayabilirsiniz:
http://localhost
Eğer uzak bir sunucudaysanız, sunucu IP adresinizi kullanın.
NGINX Performans Ayarları
NGINX’in varsayılan ayarlarını optimize etmek için /etc/nginx/nginx.conf
dosyasını açın ve şu satırları ekleyin:
worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
gzip on;
Bu ayarlar, daha iyi performans ve düşük gecikme süresi sağlar.
Güvenlik duvarında (UFW) NGINX için HTTP ve HTTPS trafiğini açalım:
sudo ufw allow 'Nginx Full'
4. Apache ve NGINX Karşılaştırması
Özellik | Apache | NGINX |
---|---|---|
Performans | İşlem tabanlı model, yüksek yükte yavaşlayabilir | Olay tabanlı model, yüksek eşzamanlılık |
Kullanım Alanı | Küçük ve orta ölçekli projelerde yaygın | Yüksek trafikli siteler, ters proxy |
Esneklik | Modüler yapı, .htaccess desteği | Daha az modüler, merkezi konfigürasyon |
Kaynak Kullanımı | Daha fazla RAM ve CPU kullanabilir | Daha düşük RAM ve CPU kullanımı |
Ters Proxy | Destekler, ancak genellikle önerilmez | Yüksek verimli ters proxy desteği |
5. Apache ve NGINX’i Birlikte Kullanmak
Apache ve NGINX’i birlikte kullanarak NGINX’i ters proxy olarak yapılandırabiliriz. Böylece, statik içerikler NGINX tarafından hızlı bir şekilde sunulurken, dinamik içerikler Apache tarafından işlenir.
NGINX’i ters proxy olarak yapılandırmak için aşağıdaki adımları uygulayın:
sudo nano /etc/nginx/sites-available/default
Aşağıdaki satırları ekleyin:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
NGINX yapılandırmasını yeniden yükleyin:
sudo systemctl restart nginx
Böylece, Apache 8080 portunda çalışırken NGINX 80 portunda isteği karşılayıp Apache’ye yönlendirecektir.
NGINX ve Apache, farklı kullanım alanlarına sahip güçlü web sunucularıdır. Apache, .htaccess gibi esnek yapılandırma seçenekleri sunarken, NGINX yüksek eşzamanlılık ve düşük kaynak kullanımıyla ön plana çıkar. Ters proxy olarak birlikte kullanıldığında, performans açısından en iyi sonucu elde edebilirsiniz.
Eğer düşük kaynak tüketimi ve yüksek performans istiyorsanız NGINX, modüler yapı ve genişletilebilirlik istiyorsanız Apache sizin için daha iyi bir seçenek olabilir.
Her iki sunucuyu denedikten sonra projelerinize en uygun olanı seçebilirsiniz!