Apache Setup: Virtual Hosts sauber einrichten

Apache ist einer der meistgenutzten Webserver weltweit und bietet mit Virtual Hosts die Möglichkeit, mehrere Webseiten auf einem Server unter verschiedenen Domains oder Subdomains zu betreiben. Dieses Tutorial zeigt Schritt für Schritt, wie Sie Virtual Hosts sauber einrichten und gleichzeitig Best Practices für Sicherheit und Wartbarkeit beachten.

Apache Installation

Die Installation hängt von Ihrer Linux-Distribution ab. Für Debian/Ubuntu und RHEL/CentOS/AlmaLinux/Rocky Linux lauten die Befehle:

# Debian/Ubuntu
sudo apt update
sudo apt install apache2

RHEL/CentOS/AlmaLinux/Rocky Linux

sudo dnf install httpd

Apache-Dienst starten und aktivieren

Nach der Installation sollte der Apache-Dienst gestartet und beim Booten automatisch aktiviert werden:

# Debian/Ubuntu
sudo systemctl enable --now apache2
sudo systemctl status apache2

RHEL/CentOS/AlmaLinux/Rocky Linux

sudo systemctl enable --now httpd
sudo systemctl status httpd

Firewall konfigurieren

HTTP- und HTTPS-Verkehr muss erlaubt sein, damit Clients die Webseiten erreichen können.

# Beispiel mit UFW auf Ubuntu
sudo ufw allow 'Apache Full'
sudo ufw status

Beispiel mit firewalld auf RHEL/CentOS

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Verzeichnisstruktur für Webseiten

Für jede Domain sollte ein eigenes Verzeichnis unter /var/www/ angelegt werden. Standardmäßig liegt die Apache-Root für Debian/Ubuntu unter /var/www/html.

sudo mkdir -p /var/www/meine-webseite
sudo chown -R www-data:www-data /var/www/meine-webseite
sudo chmod -R 755 /var/www/meine-webseite

Virtual Hosts einrichten

Für jede Domain wird eine separate Konfigurationsdatei erstellt. Auf Debian/Ubuntu liegt der Standardpfad unter /etc/apache2/sites-available/, auf RHEL/CentOS unter /etc/httpd/conf.d/.

# Beispiel für Debian/Ubuntu: /etc/apache2/sites-available/meine-webseite.conf

    ServerAdmin admin@meine-webseite.de
    ServerName meine-webseite.de
    ServerAlias www.meine-webseite.de
    DocumentRoot /var/www/meine-webseite
ErrorLog ${APACHE_LOG_DIR}/meine-webseite_error.log
CustomLog ${APACHE_LOG_DIR}/meine-webseite_access.log combined


Virtual Hosts aktivieren

Auf Debian/Ubuntu müssen die Sites aktiviert und Apache neu geladen werden:

sudo a2ensite meine-webseite.conf
sudo systemctl reload apache2

RHEL/CentOS/AlmaLinux/Rocky Linux

Bei diesen Systemen genügt es meist, die Konfigurationsdatei in /etc/httpd/conf.d/ zu speichern und den Dienst neu zu laden:

sudo systemctl reload httpd

Hosts-Datei testen (lokal)

Zum Testen ohne DNS kann die lokale /etc/hosts Datei genutzt werden:

sudo nano /etc/hosts
# Eintrag hinzufügen
192.168.1.10 meine-webseite.de www.meine-webseite.de

SSL/TLS aktivieren

HTTPS schützt den Datenverkehr zwischen Clients und Server. Mit Let’s Encrypt können kostenlose Zertifikate erstellt werden.

# Debian/Ubuntu mit Certbot
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d meine-webseite.de -d www.meine-webseite.de

Security Best Practices

  • Unnötige Module deaktivieren: sudo a2dismod autoindex
  • Directory Listing deaktivieren: Options -Indexes
  • ServerTokens verbergen: ServerTokens Prod und ServerSignature Off
  • Regelmäßige Updates von Apache und System durchführen
  • Fail2ban nutzen, um wiederholte Angriffe auf Admin-Panels zu blockieren

Logging und Monitoring

Apache erstellt Zugriffs- und Fehlerprotokolle für jede Virtual Host. Diese sollten regelmäßig überprüft werden:

sudo tail -f /var/log/apache2/meine-webseite_access.log
sudo tail -f /var/log/apache2/meine-webseite_error.log

Performance-Optimierungen

Für produktive Umgebungen können Caching, KeepAlive und Mod_deflate aktiviert werden:

# Beispiel KeepAlive und Timeout in /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Gzip-Kompression aktivieren

sudo a2enmod deflate
sudo systemctl reload apache2

Mit diesen Schritten ist ein Apache-Webserver mit sauberen Virtual Hosts einsatzbereit. Die Trennung der Konfiguration pro Domain, SSL/TLS, Logging und Security-Einstellungen sorgen für einen stabilen und sicheren Betrieb im Unternehmens- oder Homelab-Umfeld.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles