Virtual Hosts in Apache: Mehrere Domains auf einem Server hosten

Virtual Hosts in Apache ermöglichen es, mehrere Domains oder Websites auf einem einzigen Server zu hosten. Dadurch kann ein Webserver verschiedene Inhalte unter unterschiedlichen Domainnamen bereitstellen, ohne zusätzliche IP-Adressen zu benötigen. Dieser Leitfaden zeigt Schritt für Schritt, wie Virtual Hosts eingerichtet, konfiguriert und optimiert werden, sodass Einsteiger, IT-Studierende und Junior Network Engineers mehrere Websites effizient auf einem Server betreiben können.

Voraussetzungen

Bevor Virtual Hosts eingerichtet werden, sollten einige grundlegende Voraussetzungen erfüllt sein:

  • Ein Linux-Server mit installiertem Apache-Webserver
  • Root- oder Sudo-Zugriff
  • DNS-Einträge der Domains auf die Server-IP zeigen
  • Basiskenntnisse in Dateisystem und Berechtigungen

Apache Installation prüfen

Stellen Sie sicher, dass Apache installiert und aktiv ist.

sudo systemctl status apache2   # Ubuntu/Debian
sudo systemctl status httpd     # CentOS/RHEL

Falls nicht installiert:

sudo apt install apache2 -y      # Ubuntu/Debian
sudo yum install httpd -y          # CentOS/RHEL

Struktur der Virtual Hosts

Virtual Hosts werden in separaten Konfigurationsdateien oder direkt in der Hauptkonfigurationsdatei definiert.

Dateistruktur

  • Ubuntu/Debian: /etc/apache2/sites-available/ und /etc/apache2/sites-enabled/
  • CentOS/RHEL: /etc/httpd/conf.d/
  • Dokumentstamm der Websites: z. B. /var/www/domain1, /var/www/domain2

Einrichten von Virtual Hosts

Für jede Domain wird ein eigener Virtual Host konfiguriert.

Beispiel: Domain 1

sudo mkdir -p /var/www/domain1
sudo chown -R www-data:www-data /var/www/domain1
sudo chmod -R 755 /var/www/domain1
sudo nano /etc/apache2/sites-available/domain1.conf
<VirtualHost *:80>
    ServerName www.domain1.de
    ServerAlias domain1.de
    DocumentRoot /var/www/domain1
ErrorLog ${APACHE_LOG_DIR}/domain1_error.log
CustomLog ${APACHE_LOG_DIR}/domain1_access.log combined

Beispiel: Domain 2

sudo mkdir -p /var/www/domain2
sudo chown -R www-data:www-data /var/www/domain2
sudo chmod -R 755 /var/www/domain2
sudo nano /etc/apache2/sites-available/domain2.conf
<VirtualHost *:80>
    ServerName www.domain2.de
    ServerAlias domain2.de
    DocumentRoot /var/www/domain2
ErrorLog ${APACHE_LOG_DIR}/domain2_error.log
CustomLog ${APACHE_LOG_DIR}/domain2_access.log combined

Virtual Hosts aktivieren

Unter Ubuntu/Debian werden die Konfigurationen aktiviert und Apache neu geladen:

sudo a2ensite domain1.conf
sudo a2ensite domain2.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

Unter CentOS/RHEL sind die Konfigurationsdateien in /etc/httpd/conf.d/ automatisch aktiv, Neustart genügt:

sudo systemctl restart httpd

HTTPS für Virtual Hosts

SSL/TLS sollte für alle Domains aktiviert werden. Let’s Encrypt bietet kostenlose Zertifikate.

Certbot Installation

sudo apt install certbot python3-certbot-apache -y  # Ubuntu/Debian
sudo yum install certbot python3-certbot-apache -y  # CentOS/RHEL

HTTPS für Domain 1

sudo certbot --apache -d domain1.de -d www.domain1.de

HTTPS für Domain 2

sudo certbot --apache -d domain2.de -d www.domain2.de

Fehlerprotokolle und Logs

Separate Logs pro Virtual Host erleichtern Monitoring und Debugging.

  • Access Logs: /var/log/apache2/domain1_access.log
  • Error Logs: /var/log/apache2/domain1_error.log
  • Analysieren von HTTP-Statuscodes, IP-Adressen und User-Agents

Netzwerk und Subnetze

Eine korrekte Netzwerkarchitektur erleichtert den Betrieb mehrerer Domains und die Analyse von Zugriffen.

Subnetzberechnung

Beispiel: Server-IP 10.3.1.10/24

<math>
Subnetzadresse = 10.3.1.10 & 255.255.255.0 = 10.3.1.0
Broadcastadresse = 10.3.1.0 | ~255.255.255.0 = 10.3.1.255
</math>

Netzwerkinterface konfigurieren

sudo nano /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 10.3.1.10/24
      gateway4: 10.3.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply

Best Practices

  • Separate Document Roots für jede Domain
  • Eigene Error- und Access-Logs pro Virtual Host
  • HTTPS für alle Domains aktivieren
  • Regelmäßige Backup der Konfigurationen
  • DNS-Einträge korrekt setzen und testen
  • Serverressourcen beobachten, um Überlastungen zu vermeiden
  • Logrotate für Logs pro Virtual Host konfigurieren

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