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:
``apache 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
```apache
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined ```
Aktivieren und neu laden:
``bash a2ensite example.com.conf systemctl reload apache2 ``
HTTPS aktivieren (Let’s Encrypt + SSL)
Beispiel 2: Konfiguration für HTTPS
```apache
ErrorLog ${APACHE_LOG_DIR}/example.com-ssl-error.log CustomLog ${APACHE_LOG_DIR}/example.com-ssl-access.log combined ```
Umleitungen einrichten (Redirects)
Beispiel 3: HTTP auf HTTPS umleiten
``apache ``
Beispiel 4: Weiterleitung per .htaccess
``apache RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ``
Voraussetzung: mod_rewrite muss aktiviert sein:
``bash a2enmod rewrite systemctl restart apache2 ``
Zugriffsschutz einrichten
Beispiel 5: Passwortschutz mit .htaccess
``apache AuthType Basic AuthName "Zugang nur für Admins" AuthUserFile /etc/apache2/.htpasswd Require valid-user ``
.htpasswd-Datei erzeugen:
``bash htpasswd -c /etc/apache2/.htpasswd benutzername ``
Fehlerseiten definieren
🔧 Beispiel 6: Eigene Fehlerseiten
``apache 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:
``apache ``
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.