Ga naar inhoud

🌐 Apache vs Nginx Webservers

Webservers zijn software die HTTP-verkeer afhandelt en websites beschikbaar maakt op het internet.
De twee populairste webservers op Linux zijn Apache en Nginx.

  • Apache: Klassieke, modulaire webserver, zeer configureerbaar, goed voor dynamische content.
  • Nginx: Lichtgewicht, event-driven, ideaal voor statische content en hoge load.

πŸ”Ή Belangrijkste verschillen

Kenmerk Apache Nginx
Architectuur Process/Thread-based Event-driven, asynchroon
Performance Goed bij lage tot middelmatige load Uitstekend bij hoge load
Modules Dynamisch via .so-modules Statistisch gecompileerd
Configuratie per site .htaccess Geen .htaccess, centraal config
Dynamische content PHP via mod_php PHP via FPM

πŸ”Ή Installatie op Ubuntu/Debian

Apache installeren

sudo apt update
sudo apt install apache2

Nginx installeren

sudo apt update
sudo apt install nginx

Controleren of de server draait

Apache:

sudo systemctl status apache2

Nginx:

sudo systemctl status nginx

Starten / stoppen / herstarten

Apache:

sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2

Nginx:

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx


πŸ”Ή Configuratiebestanden

Apache

  • Hoofdconfig: /etc/apache2/apache2.conf
  • Sites-enabled: /etc/apache2/sites-enabled/
  • Sites-available: /etc/apache2/sites-available/
  • Modules: /etc/apache2/mods-enabled/
  • Ports: /etc/apache2/ports.conf
  • Extra config bestanden: /etc/apache2/conf-available/

Nginx

  • Hoofdconfig: /etc/nginx/nginx.conf
  • Sites-enabled: /etc/nginx/sites-enabled/
  • Sites-available: /etc/nginx/sites-available/
  • Ports en upstream: /etc/nginx/nginx.conf (server blokken)
  • Extra config bestanden: /etc/nginx/conf.d/

πŸ”Ή Logs

Apache

  • Access logs: /var/log/apache2/access.log
  • Error logs: /var/log/apache2/error.log

Nginx

  • Access logs: /var/log/nginx/access.log
  • Error logs: /var/log/nginx/error.log

πŸ”Ή IP binding & Virtual Hosts

Soms wil je meerdere IP’s of poorten koppelen aan verschillende websites.

Apache

In /etc/apache2/ports.conf kun je extra Listen regels toevoegen:

Listen 192.168.1.10:80
Listen 192.168.1.11:8080

Daarna geef je in de VirtualHost (VH) aan welk IP gebonden moet worden:

<VirtualHost 192.168.1.10:80>
    ServerName site1.local
    DocumentRoot /var/www/site1
</VirtualHost>

<VirtualHost 192.168.1.11:8080>
    ServerName site2.local
    DocumentRoot /var/www/site2
</VirtualHost>

Nginx

In een serverblok kun je een specifiek IP en poort koppelen:

server {
    listen 192.168.1.10:80;
    server_name site1.local;
    root /var/www/site1;
}

server {
    listen 192.168.1.11:8080;
    server_name site2.local;
    root /var/www/site2;
}

πŸ”‘ Tip: Als je alleen listen 80; gebruikt, luistert de server op alle beschikbare IP’s.


πŸ”Ή Aanpassen van instellingen

Apache

sudo nano /etc/apache2/apache2.conf
Pas site-specifieke configs aan in:
sudo nano /etc/apache2/sites-available/000-default.conf
Modules inschakelen of uitschakelen:
sudo a2enmod rewrite
sudo a2dismod status
Na wijzigingen herstarten:
sudo systemctl restart apache2

Nginx

sudo nano /etc/nginx/nginx.conf
Pas site-specifieke configs aan in:
sudo nano /etc/nginx/sites-available/default
Test configuratie:
sudo nginx -t
Herstart Nginx om wijzigingen toe te passen:
sudo systemctl restart nginx


πŸ”Ή Poorten aanpassen

  • Apache: standaard 80 (HTTP) en 443 (HTTPS), te vinden in /etc/apache2/ports.conf.
  • Nginx: standaard 80 en 443, te wijzigen in server blokken in /etc/nginx/sites-available/default.

πŸ”Ή Best practices

  • Gebruik sites-available + sites-enabled voor overzicht.
  • Test configuratie altijd eerst (apache2ctl configtest of nginx -t).
  • Logrotatie inschakelen om logs beheersbaar te houden (logrotate).
  • Gebruik HTTPS via Let’s Encrypt.
  • Beperk toegestane modules in Apache voor betere performance.
  • Voor hoge load: gebruik Nginx als reverse proxy voor Apache.