- Veröffentlicht am
- • How2-Tipps
Apache2 Konfiguration – Grundlagen, Beispiele & Best Practices
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-

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.