Sitemap | Nicht eingeloggt

Layout: V2_DayTime
V2_DayTime
| V2
V2
| V2 Dark
V2 Dark
| Alle

DE

Tux

Virtuelle Hosts für Apache erstellen

Was ist ein virtueller Host?

Wenn eine Domain auf die IP des Apachen zeigt, wird sie, wenn nichts anderes konfiguriert ist, automatisch auf /var/www verwiesen und daraus die verfügbaren Webseiten geladen. Man kann aber mehrere Seiten auf einem Webserver haben, die alle auf die gleiche IP "hören".
Um zu konfigurieren welcher Domainname auf welche Verzeichnisse zeigen soll, nimmt man die Virtual Hosts zur Hilfe.

Voraussetzungen

Dokumentation

Mehr Infos über virtuelle Hosts und die Einstellungen dafür findet man wenn man hier klickt (Englisch).

Einrichtung für mehrere Seiten

Bitte ein Terminal öffnen und in das Verzeichnis /etc/apache2/sites-available navigieren. Da drin sind die Virtual Host Konfigurationsdateien die wir benötigen.
In dieser Anleitung machen wir selber eine neue 000-default-Datei, erstellen eine Datei für die Hauptwebseite des Servers und eine für eine Intranetseite.
Zudem wirden die Virtualhost so konfiguriert, dass man die Intranetseite nicht von aussen erreichen kann, sondern nur von einem internen Adressbereich.

000-default anlegen und konfigurieren

Die Datei nennen wir so, da der Apache immer die erste Virtualhosts-Datei die er findet für Anfragen, die er nicht kennt auflöst. 000 am Anfang stellt sicher, dass diese Datei immer zuerst gelesen wird.
Also öffnen wir die Datei mit nano:

sudo nano 000-default

...und füllen die Datei mit folgendem Inhalt:

<VirtualHost *:80>
# Da hier kein Servername und oder Alias steht, wird diese Seite aufgerufen
# wenn ein unbekannter Domainname auf diese IP verlinkt
    ServerAdmin EMAILADRESSE
    DocumentRoot /var/www/seiten/easeli.ch

# Falls /intranet eine unterseite von root waere, koennte sie so
# nur fuer das intranet verfuegbar gemacht werden:
#<Directory /var/www/seiten/easeli.ch/intranet/>
#    Order Deny,Allow
#    Deny from all
#    Allow from 192.168.0
#</Directory>

# Eigene Errorseiten kann man so aktivieren (Der Documentroot des Hauptvirtualhosts gilt!):
# ErrorDocuemnt Errorcode Errorseite oder (in Anführungszeichen) Text
# ErrorDocument 404 /errors/404.html

# Die LOGs habe ich deaktiviert
#    ErrorLog /var/log/apache2/error.log
#    LogLevel warn
#    CustomLog /var/log/apache2/access.log combined
    ServerSignature On
</VirtualHost>

Damit das unser neuer Standard-Virtualhost wird müssen wir abspeichern und noch aktivieren.

Wir deaktivieren zuerst alle Virtualhosts die momentan aktiv sind. Dafür nehmen wir das Tool von Apache namens a2dissite zur Hilfe. Alles was a2dissite macht ist den Link in /etc/apache2/sites-enabled zu entfernen. a2ensite macht das Gegenteil und legt einen Link in /etc/apache2/sites-enabled an.

sudo a2dissite default && sudo a2dissite default-ssl

Damit jetzt unsere neue Virtualhostsdatei aktiv wird führen wir folgenden Befehl aus:

sudo a2ensite 000-default

Testen ob der Syntax aller aktivierten VirtualHost-Dateien korrekt ist, kann man mit dem Befehl:

sudo apachectl configtest

Wenn hier die Meldung Syntax OK erscheint, kann man den Apachen ohne Gefahr neu starten (nächster Schritt).

Alles was jetzt noch gemacht werden muss ist folgenden Befehl ausführen, damit Apache neu geladen wird und die Konfigurationsdateien einliest (Nach a2ensite oder a2dissite wird eine Meldung ausgegeben, dass man das machen soll):

sudo service apache2 reload

Virtualhostdatei für eigene Seite einrichten

Meine eigene Seite heisst easeli.ch, deshalb ist easeli.ch in diesem Beispiel mit Deiner gewünschten Adresse zu ersetzen.
Das ServerAlias macht, damit dieselbe Datei auch für www.easeli.ch gilt, anstatt nur für easeli.ch. Solche Dateien kannst Du so viele Du möchtest anlegen, damit der Server auf die angesprochenen Adressen reagiert. Natürlich muss die Namens und IP kombination den Clients bekannt sein, deshalb kann man wie hier unter DNS beschrieben die Hosts-Datei auf einem Client anpassen (auch Windows), dass man den Namen wie gewünscht auflöst.
Die Unterordner die ich ausnehme nach der ersten Deny Regel, sind Unterordner, die der Browser trotzdem anzeigen können muss, da die Bilder zum Beispiel da abgespeichert sind.

Also öffnen wir die Datei mit nano:

sudo nano easeli.ch

...und füllen die Datei mit folgendem Inhalt:

<VirtualHost *:80>
    ServerName easeli.ch
# www.easeli.ch, sowie die DynDNS Adresse von noip.com wird auch auf diesen Virtualhost aufgeloest
    ServerAlias www.easeli.ch easelee.ddns.net
    ServerAdmin EMAILADRESSE
    DocumentRoot /var/www/seiten/easeli.ch

# Eigene Errorseiten kann man so aktivieren (Der Documentroot des Hauptvirtualhosts gilt!):
# ErrorDocuemnt Errorcode Errorseite oder (in Anführungszeichen) Text
# ErrorDocument 404 /errors/404.html



#Inhalt ist so nur per Includes von Aussen aufrufbar
<Directory /var/www/seiten/easeli.ch/inhalt>
    Order Deny,Allow
    Deny from all
    Allow from none
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/audio>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>
# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/audio>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/calendar>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/downloads>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/forum>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/gallery>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/kommentare>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/login>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/main/pictures>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/pictures>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>

# Unterordner von obiger Regel ausnehmen
<Directory /var/www/seiten/easeli.ch/inhalt/videos>
    Order Deny,Allow
    Deny from none
    Allow from all
</Directory>



#    ErrorLog /var/log/apache2/error.log
#    LogLevel warn
#    CustomLog /var/log/apache2/access.log combined
    ServerSignature On
</VirtualHost>

Damit jetzt unsere neue Virtualhostsdatei aktiv wird führen wir folgenden Befehl aus:

sudo a2ensite easeli.ch

Alles was jetzt noch gemacht werden muss ist folgenden Befehl ausführen, damit Apache neu geladen wird und die Konfigurationsdateien einliest (Nach a2ensite oder a2dissite wird eine Meldung ausgegeben, dass man das machen soll):

sudo service apache2 reload

Virtualhostdatei für Subdomain der eigenen Seite einrichten

subdomain ist hier ein Platzhalter für Deine gewünschte Subdomain.

Wir kopieren die Datei von unserer Hautpseite in eine neue:

sudo cp easeli.ch subdomain.easeli.ch

...und füllen die Datei mit folgendem Inhalt:

<VirtualHost *:80>
    ServerName subdomain.easeli.ch
    ServerAdmin EMAILADRESSE
    DocumentRoot /var/www/seiten/subdomain

    ServerSignature On
</VirtualHost>

Damit jetzt unsere neue Virtualhostsdatei aktiv wird führen wir folgenden Befehl aus:

sudo a2ensite subdomain.easeli.ch

Alles was jetzt noch gemacht werden muss ist folgenden Befehl ausführen, damit Apache neu geladen wird und die Konfigurationsdateien einliest (Nach a2ensite oder a2dissite wird eine Meldung ausgegeben, dass man das machen soll):

sudo service apache2 reload

Virtualhostdatei für Intranetseite einrichten

Meine eigene Intranetseite heisst intranet, deshalb ist intranet in diesem Beispiel mit Deiner gewünschten Adresse zu ersetzen.

Datei mit nano öffnen:

sudo nano intranet

...und füllen die Datei mit folgendem Inhalt:

<VirtualHost *:80>
    ServerName intranet
    ServerAdmin EMAILADRESSE
    DocumentRoot /var/www/seiten/intranet/

<Directory /var/www/seiten/intranet/>
    Order Deny,Allow
    Deny from all
    Allow from 192.168.0

</Directory>

# Eigene Errorseiten kann man so aktivieren (Der Documentroot des Hauptvirtualhosts gilt!):
# ErrorDocuemnt Errorcode Errorseite oder (in Anführungszeichen) Text
# ErrorDocument 404 /errors/404.html

#    ErrorLog /var/log/apache2/error.log
#    LogLevel warn
#    CustomLog /var/log/apache2/access.log combined
    ServerSignature On
</VirtualHost>

Damit jetzt unsere neue Virtualhostsdatei aktiv wird führen wir folgenden Befehl aus:

sudo a2ensite intranet

Alles was jetzt noch gemacht werden muss ist folgenden Befehl ausführen, damit Apache neu geladen wird und die Konfigurationsdateien einliest (Nach a2ensite oder a2dissite wird eine Meldung ausgegeben, dass man das machen soll):

sudo service apache2 reload

Wenn in einem Document-Root keine Webseite hinterlegt ist, wird das Directory-Listing angezeigt. Es sieht dann etwa so aus:
Index of /
Name Last modified Size Description
Unterordner Datum Grösse Beschreibung
Apache/VERSION (Betriebssystem) Server at IP Port PORT

Infos zum Dokument
Author: Christoph Iseli
Datum: 08.08.2014
Letzte Änderung: 26.11.2014

1 Kommentar

#1 Von Easelee in Jona am 25.9.2015 um 14:51 Uhr

Proxy für einen anderen internen Server:


<VirtualHost *:80>
ServerAdmin Mail@mail.you
ServerName subdomain.domain.com
ProxyPreserveHost On

<Proxy *>
Order allow,deny
Allow from all
Deny from none
</Proxy>
ProxyPass / http://internerservername:port/
ProxyPassReverse / http://internerservername:port/
</VirtualHost>


Dann für Apache noch a2enmod proxy_http und es funktioniert!

Achtung: Der Slash am Ende des anderen internen Servers MUSS dastehen!

Edited: am 01.6.2016 um 23:15 Uhr

Einen neuen Kommentar hinzufügen

Info: Wenn Du eingeloggt bist, musst Du keine Userdaten mehr eingeben.

Ort:
(Optional)

Kommentar:

Impressum
Programmierung: Christoph Iseli | Design: Christoph Iseli
Webseitencode: Darf frei kopiert / verwendet werden (Downloads) | Inhalt: Darf frei verwendet werden, solange ein Link auf diese Seite mitgegeben wird.