Apache2 Workshop VirtualHosts: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(31 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
 
* Apache unterstützt VirtualHosts, um mehrere Webseiten auf einer Maschine zu hosten.   
 
* 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).   
 
* 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/''.   
 
* Die Konfigurationsdateien für VirtualHosts liegen in ''/etc/apache2/sites-available/''.   
 
* Aktivierte VirtualHosts werden als Symlink in ''/etc/apache2/sites-enabled/'' hinterlegt.   
 
* Aktivierte VirtualHosts werden als Symlink in ''/etc/apache2/sites-enabled/'' hinterlegt.   
 
* Ein VirtualHost wird mit '''a2ensite meine-seite.conf''' aktiviert.   
 
* Ein VirtualHost wird mit '''a2ensite meine-seite.conf''' aktiviert.   
 
* Ein VirtualHost wird mit '''a2dissite meine-seite.conf''' deaktiviert.   
 
* Ein VirtualHost wird mit '''a2dissite meine-seite.conf''' deaktiviert.   
* Nach Änderungen muss Apache neu geladen werden: '''systemctl reload apache2'''.
+
* Nach Änderungen muss Apache neu geladen werden: '''systemctl reload apache2'''.
=/etc/apache2/sites-available/000-default.conf=
+
* 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.
  
== Zweck ==
+
= 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.   
 
* Diese Datei definiert einen Standard-VirtualHost für HTTP-Anfragen.   
 
* Sie wird von Apache verwendet, wenn keine andere Konfiguration passt.   
 
* Sie wird von Apache verwendet, wenn keine andere Konfiguration passt.   
Zeile 16: Zeile 30:
 
* Änderungen an dieser Datei erfordern einen Neustart oder Reload von Apache.   
 
* Änderungen an dieser Datei erfordern einen Neustart oder Reload von Apache.   
  
== Inhalt ==
+
=== Inhalt ===
 
*cat /etc/apache2/sites-available/000-default.conf
 
*cat /etc/apache2/sites-available/000-default.conf
  
Zeile 40: Zeile 54:
 
</VirtualHost>
 
</VirtualHost>
 
</pre>
 
</pre>
=Weitere Domain anlegen=
+
==Weitere Domain anlegen==
 
*Die Konfigurationsdatei sollte man unter '''/etc/apache2/sites-available''' ablegen.
 
*Die Konfigurationsdatei sollte man unter '''/etc/apache2/sites-available''' ablegen.
 
*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/porty
 
*mkdir /var/www/porty
cat<<HERE > /var/www/porty/index.html
+
*cd /var/www/porty
<pre>
+
*wget https://xinux.de/downloads/html/porty.html
<!DOCTYPE html>
+
*mv porty.html index.html
<html lang="de">
 
<head>
 
    <meta charset="UTF-8">
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
    <title>Willkommen bei Porty</title>
 
    <style>
 
        body {
 
            font-family: Arial, sans-serif;
 
            text-align: center;
 
            margin: 50px;
 
            background-color: #f4f4f4;
 
        }
 
        .container {
 
            background: white;
 
            padding: 20px;
 
            border-radius: 10px;
 
            box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
 
            display: inline-block;
 
        }
 
        h1 {
 
            color: #0073e6;
 
        }
 
        p {
 
            color: #333;
 
        }
 
    </style>
 
</head>
 
<body>
 
    <div class="container">
 
        <h1>Willkommen auf Porty!</h1>
 
        <p>Schön, dass du da bist. Dies ist eine kleine Testseite für die Domain porty.</p>
 
        <p>Viel Spaß beim Erkunden!</p>
 
    </div>
 
</body>
 
</html>
 
 
 
HERE
 
</pre>
 
 
 
  
==Datei==
+
===Datei===
 
*cat /etc/apache2/sites-available/02-porty.conf
 
*cat /etc/apache2/sites-available/02-porty.conf
 
<pre>
 
<pre>
Zeile 99: Zeile 74:
 
</VirtualHost>
 
</VirtualHost>
 
</pre>
 
</pre>
 +
 +
===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?==
 +
*[[Warum können virtuelle Webserver über den Namen unterschieden werden?]]
 +
 +
=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==
 +
*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.