open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Apache2 Konfiguration – Grundlagen, Beispiele & Best Practices

Autor
Apache2 Konfiguration – Grundlagen, Beispiele & Best Practices

So richtest du deinen Apache-Webserver richtig ein

Der Apache HTTP Server (Apache2) ist extrem flexibel – und das liegt vor allem an seiner modularen, gut dokumentierten Konfiguration. Egal ob du nur eine statische Webseite hosten oder eine komplexe PHP-Anwendung absichern willst: Apache bietet die nötigen Werkzeuge. In diesem Artikel erfährst du, wie Apache2 konfiguriert wird, welche Dateien eine Rolle spielen und bekommst viele praxisnahe Konfigurationsbeispiele.

Verzeichnisstruktur von Apache2

Je nach Distribution (Debian/Ubuntu vs. RHEL/CentOS) unterscheidet sich der Aufbau leicht:

Unter Debian/Ubuntu:

/etc/apache2/
├── apache2.conf              # Hauptkonfiguration
├── sites-available/          # Konfig. für virtuelle Hosts (inaktiv)
/├── sites-enabled/           # Aktive Konfigurationen (Symlinks)
/├── mods-available/          # Alle verfügbaren Module
/├── mods-enabled/            # Aktivierte Module (Symlinks)
/├── conf-available/          # Allgemeine Zusatzconfigs
/├── conf-enabled/            # Aktivierte Zusatzconfigs

Unter RHEL/CentOS:

/etc/httpd/
├── conf/httpd.conf           # Hauptkonfiguration
├── conf.d/                   # Zusatzkonfigurationen
├── conf.modules.d/           # Modulkonfigurationen

Die zentrale Konfigurationsdatei

Die Datei apache2.conf bzw. httpd.conf ist der Ausgangspunkt aller Konfiguration. Hier werden globale Einstellungen vorgenommen:

Beispielauszug:

ServerTokens Prod
ServerSignature Off
Timeout 60
KeepAlive On
MaxKeepAliveRequests 100

Virtuelle Hosts – mehrere Websites auf einem Server

Virtuelle Hosts erlauben es, mehrere Domains/Webseiten auf einem Apache-Server zu betreiben.

Beispiel 1: Einfache Konfiguration für example.com

Datei: /etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

Aktivieren und neu laden:

a2ensite example.com.conf
systemctl reload apache2

HTTPS aktivieren (Let’s Encrypt + SSL)

Beispiel 2: Konfiguration für HTTPS

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/example.com/public_html
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com-ssl-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-ssl-access.log combined
</VirtualHost>

Umleitungen einrichten (Redirects)

Beispiel 3: HTTP auf HTTPS umleiten

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Beispiel 4: Weiterleitung per .htaccess

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Voraussetzung: mod_rewrite muss aktiviert sein:

a2enmod rewrite
systemctl restart apache2

Zugriffsschutz einrichten

Beispiel 5: Passwortschutz mit .htaccess

AuthType Basic
AuthName "Zugang nur für Admins"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

.htpasswd-Datei erzeugen:

htpasswd -c /etc/apache2/.htpasswd benutzername

Fehlerseiten definieren

🔧 Beispiel 6: Eigene Fehlerseiten

ErrorDocument 404 /error/404.html
ErrorDocument 403 /error/403.html
ErrorDocument 500 /error/500.html

Performance-Tuning (Auszug)

In mpm_prefork.conf oder mpm_event.conf:

<IfModule mpm_prefork_module>
    StartServers           5
    MinSpareServers        5
    MaxSpareServers       10
    MaxRequestWorkers    150
    MaxConnectionsPerChild 3000
</IfModule>

Best Practices

Tipp Beschreibung
🔐 Sicherheitsoptionen ServerTokens Prod, ServerSignature Off, Options -Indexes
🧩 Nur nötige Module aktivieren z. B. mod_php, mod_ssl, mod_rewrite
📄 .htaccess vermeiden Wo möglich, direkt in der VHost-Konfiguration arbeiten
🚫 Directory Browsing deaktivieren Options -Indexes
🚦 Logs aktiv überwachen /var/log/apache2/*.log bzw. /var/log/httpd/*.log
📦 Sites sauber trennen für jede Domain eigene DocumentRoot, Logs, Konfigs

Fazit

Apache2 bietet eine hochmodulare und kontrollierbare Serverumgebung. Mit den richtigen Konfigurationen lässt sich fast jede Anforderung abbilden – von kleinen statischen Seiten bis hin zu großen Portalen mit SSL, Redirects und Zugangsschutz.

Mit etwas Übung wird Apache nicht nur verständlich – sondern zu einem deiner mächtigsten Werkzeuge beim Hosting.