Apache2 Workshop VirtualHosts: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 19: Zeile 19:
 
* IP-based VirtualHosts sind sinnvoll, wenn verschiedene SSL-Zertifikate ohne SNI genutzt werden sollen.   
 
* IP-based VirtualHosts sind sinnvoll, wenn verschiedene SSL-Zertifikate ohne SNI genutzt werden sollen.   
  
=Namedbased Virtual Host==
+
=Namedbased Virtual Host=
  
 
==/etc/apache2/sites-available/000-default.conf==
 
==/etc/apache2/sites-available/000-default.conf==
Zeile 58: Zeile 58:
 
*Danach wird sie mit a2ensite '''Dateiname''' aktiviert.
 
*Danach wird sie mit a2ensite '''Dateiname''' aktiviert.
 
===Zuerst erstellen wie ein Verzeichnis und eine Webseite===
 
===Zuerst erstellen wie ein Verzeichnis und eine Webseite===
*mkdir /var/www/html/porty
+
*mkdir /var/www/porty
*cd /var/www/html/porty
+
*cd /var/www/porty
 
*wget https://xinux.de/downloads/html/porty.html
 
*wget https://xinux.de/downloads/html/porty.html
 
*mv porty.html index.html
 
*mv porty.html index.html
Zeile 69: Zeile 69:
 
ServerName porty.it113.int
 
ServerName porty.it113.int
 
ServerAdmin technik@it113.int
 
ServerAdmin technik@it113.int
DocumentRoot /var/www/html/porty
+
DocumentRoot /var/www/porty
 
ErrorLog ${APACHE_LOG_DIR}/porty-error.log
 
ErrorLog ${APACHE_LOG_DIR}/porty-error.log
 
CustomLog ${APACHE_LOG_DIR}/porty-access.log combined
 
CustomLog ${APACHE_LOG_DIR}/porty-access.log combined
Zeile 93: Zeile 93:
 
*Konfigure 2 Virtuelle Nameserver
 
*Konfigure 2 Virtuelle Nameserver
 
*Aktivere sie.
 
*Aktivere sie.
 +
 
==Warum geht das eigentlich?==
 
==Warum geht das eigentlich?==
 
*[[Warum können virtuelle Webserver über den Namen unterschieden werden?]]
 
*[[Warum können virtuelle Webserver über den Namen unterschieden werden?]]
 +
 
=IP basierter Virtuell Host=
 
=IP basierter Virtuell Host=
 +
==Vorbereitung==
 
*Wir müssen an die Schnittstelle weitere freie IPs binden
 
*Wir müssen an die Schnittstelle weitere freie IPs binden
 
*Dies geschieht mit
 
*Dies geschieht mit
Zeile 104: Zeile 107:
 
   address 192.168.178.45/24
 
   address 192.168.178.45/24
 
   gateway 192.168.178.1
 
   gateway 192.168.178.1
   '''post-up ip addr add 10.88.113.46/24 dev enp0s3'''
+
   '''post-up ip addr add 192.168.178.46/24 dev enp0s3'''
 +
==Verzeichnis mit Seite erstellen==
 +
*cd /root
 +
*wget https://xinux.de/downloads/html/webgen.sh
 +
*mkdir /var/www/ipbased
 +
*bash webgen.sh ipbased > /var/www/ipbased/index.html
 +
==Konfiguration erstellen==
 +
*cat /etc/apache2/sites-available/03-ipbased.conf
 +
<pre>
 +
<VirtualHost 10.88.113.46:80>
 +
ServerAdmin webmaster@localhost
 +
DocumentRoot /var/www/ipbased
 +
ErrorLog ${APACHE_LOG_DIR}/ipbased-error.log
 +
CustomLog ${APACHE_LOG_DIR}/ipbased-access.log combined
 +
</VirtualHost>
 +
</pre>
 +
===Aktivieren der Seite===
 +
*a2ensite 03-ipbased
 +
===Test ob alles in Ordnung ist===
 +
*apachectl configtest
 +
Syntax OK
 +
===Apache restart===
 +
*apachectl restart
 +
==Aufgaben==
 +
*Lege im Nameser 2 Weitere Domains an.
 +
*hydra.it1XX.int und medusa.it1XX.int mit neuen IPs
 +
*aktiviere die IPs statisch
 +
*Lege wie oben Unterverzeichnisse an
 +
*Erstelle je eine index.html deine Wahl
 +
*Konfigure 2 Virtuelle ip-basierte Nameserver
 +
*Aktivere sie.

Aktuelle Version vom 15. März 2025, 09:08 Uhr

Grundlagen

  • Apache unterstützt VirtualHosts, um mehrere Webseiten auf einer Maschine zu hosten.
  • Es gibt zwei Arten: Named-based (mehrere Domains auf einer IP) und IP-based (jede Seite hat eine eigene IP).
  • Named-based VirtualHosts sind die Standardmethode, da sie weniger IP-Adressen benötigen.
  • Die Konfigurationsdateien für VirtualHosts liegen in /etc/apache2/sites-available/.
  • Aktivierte VirtualHosts werden als Symlink in /etc/apache2/sites-enabled/ hinterlegt.
  • Ein VirtualHost wird mit a2ensite meine-seite.conf aktiviert.
  • Ein VirtualHost wird mit a2dissite meine-seite.conf deaktiviert.
  • Nach Änderungen muss Apache neu geladen werden: systemctl reload apache2.
  • Standardmäßig verarbeitet Apache Anfragen an die erste aktivierte VirtualHost-Datei.
  • Falls keine passende Domain gefunden wird, antwortet Apache mit dem Default VirtualHost.
  • Um HTTPS für VirtualHosts zu nutzen, muss ein Zertifikat und SNI (Server Name Indication) verwendet werden.

IP- vs. Name-based VirtualHosts

  • Bei IP-based VirtualHosts benötigt jede Webseite eine eigene IP-Adresse.
  • Diese Methode wird meist in älteren Systemen oder besonderen Netzwerkkonfigurationen genutzt.
  • Named-based VirtualHosts sind flexibler, da mehrere Domains eine einzelne IP teilen können.
  • Named-based VirtualHosts funktionieren mit HTTPS dank SNI (Server Name Indication).
  • IP-based VirtualHosts sind sinnvoll, wenn verschiedene SSL-Zertifikate ohne SNI genutzt werden sollen.

Namedbased Virtual Host

/etc/apache2/sites-available/000-default.conf

Zweck

  • Diese Datei definiert einen Standard-VirtualHost für HTTP-Anfragen.
  • Sie wird von Apache verwendet, wenn keine andere Konfiguration passt.
  • Standardmäßig lauscht dieser VirtualHost auf Port 80.
  • Die Datei kann als Vorlage für weitere VirtualHosts genutzt werden.
  • Änderungen an dieser Datei erfordern einen Neustart oder Reload von Apache.

Inhalt

  • cat /etc/apache2/sites-available/000-default.conf
# Standard-VirtualHost für HTTP (Port 80)
<VirtualHost *:80>

	# Hauptdomain des VirtualHosts
	ServerName www.example.com

	# E-Mail-Adresse des Administrators (wird in Fehlerseiten angezeigt)
	ServerAdmin webmaster@localhost

	# Wurzelverzeichnis der Webseite
	DocumentRoot /var/www/html

	# Fehlerprotokoll für diesen VirtualHost
	ErrorLog ${APACHE_LOG_DIR}/error.log

	# Zugriffprotokoll mit vordefiniertem Log-Format
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Weitere Domain anlegen

  • Die Konfigurationsdatei sollte man unter /etc/apache2/sites-available ablegen.
  • Danach wird sie mit a2ensite Dateiname aktiviert.

Zuerst erstellen wie ein Verzeichnis und eine Webseite

Datei

  • cat /etc/apache2/sites-available/02-porty.conf
<VirtualHost *:80>
	ServerName porty.it113.int
	ServerAdmin technik@it113.int
	DocumentRoot /var/www/porty
	ErrorLog ${APACHE_LOG_DIR}/porty-error.log
	CustomLog ${APACHE_LOG_DIR}/porty-access.log combined
</VirtualHost>

Default Seite deaktiveren

  • a2dissite 000-default.conf

Aktivieren der Seite

  • a2ensite 02-porty

Test ob alles in Ordnung ist

  • apachectl configtest
Syntax OK

Apache restart

  • apachectl restart

Aufgaben

  • Lege im Nameser 2 Weitere Domains an.
  • kalle.it1XX.int und babsi.it1XX.in
  • Lege wie oben Unterverzeichnisse an
  • Erstelle je eine index.html deine Wahl
  • Konfigure 2 Virtuelle Nameserver
  • Aktivere sie.

Warum geht das eigentlich?

IP basierter Virtuell Host

Vorbereitung

  • Wir müssen an die Schnittstelle weitere freie IPs binden
  • Dies geschieht mit
  • ip addr add 10.88.113.46/24 dev enp0s3
  • Um es bootfähig zu machen sollte man die /etc/network/interfaces ergänzen
auto enp0s3
 iface enp0s3 inet static
 address 192.168.178.45/24
 gateway 192.168.178.1
 post-up ip addr add 192.168.178.46/24 dev enp0s3

Verzeichnis mit Seite erstellen

Konfiguration erstellen

  • cat /etc/apache2/sites-available/03-ipbased.conf
<VirtualHost 10.88.113.46:80>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/ipbased
	ErrorLog ${APACHE_LOG_DIR}/ipbased-error.log
	CustomLog ${APACHE_LOG_DIR}/ipbased-access.log combined
</VirtualHost>

Aktivieren der Seite

  • a2ensite 03-ipbased

Test ob alles in Ordnung ist

  • apachectl configtest
Syntax OK

Apache restart

  • apachectl restart

Aufgaben

  • Lege im Nameser 2 Weitere Domains an.
  • hydra.it1XX.int und medusa.it1XX.int mit neuen IPs
  • aktiviere die IPs statisch
  • Lege wie oben Unterverzeichnisse an
  • Erstelle je eine index.html deine Wahl
  • Konfigure 2 Virtuelle ip-basierte Nameserver
  • Aktivere sie.