apache:virtuelle-server

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
apache:virtuelle-server [2008/03/02 21:22] stapache:virtuelle-server [2014/04/21 02:45] (aktuell) – [Namens-basierte virtuelle Hosts] st
Zeile 1: Zeile 1:
 +====== Virtuelle Webserver mit Apache2 ======
 +[[http://buecher.lingoworld.de/apache2/showdir.php?id=757&o=mod
 +|gute Übersichtsseite zu virtuellen servern mit Konfigurationsbeispielen]]
  
 +===== Ziel und Zweck von virtuellen Webservern =====
 +Man teilt einen physikalischen Server/Computer in mehrere virtuelle Teile auf, die dann unterschiedliche Webseiten/Dienste anbieteten.
 +
 +===== 3 unterschiedliche Möglichkeiten: =====
 +
 +==== IP-basierte virtuelle Hosts ====
 +Der Server lauscht unter verschiedenen IPs. Die verschiedenen Ports laufen dann auf andere Verzeichnisse, das ist gerade für [[netzwerke:ssl und tls|SSL oder TLS]]-verschüsselte Adressen nötig.
 +
 +
 +
 +==== Namens-basierte virtuelle Hosts ====
 +Namens-basierte virtuelle Server werden am häufigsten verwendet, Apache entscheidet anhand der vom Browser gesendeten HTTP/1.1-Header welcher virtueller Server das Ziel ist. Ältere (sehr alte) Browser, die nur HTTP/1.0 unterstüzen landen als immer auf dem ersten virt. Server, allerdings kommen so alte Browser in der Praxis kaum vor.
 +
 +Man kann leicht Subdomains anlegen, z.B. mail.server.de, www.server.de, ...
 +
 +:!: [[apache:virtuelle server#namens-basierte virtuelle hosts|namensbasierte virtuelle Server]] sind in Verbindung mit SSL nur sehr eingeschränkt möglich (Zertifikat gilt dann nur für einen der virt. Server). Es muss eine eigene IP pro [[netzwerke:ssl und tls|SSL oder TLS]]-geschützter Seite existieren. Der Grund ist das die passende IP Teil des HTTP-Request ist, der nur mit dem passenden Host-Schlüssel entschlüsselt werden kann. Da aber der passende Host erst anhand des HTTP-Request ermittelt wird, kann es an dieser Stelle zu keiner Verifizierung kommen.
 +
 +Hier eine minimale Konfiguration:
 +<file>
 +Listen 80
 +NameVirtualHost *
 +
 +  <VirtualHost *>
 +  ServerName Domain1.tld
 +  ServerAlias www.Domain1.tld
 +  ...
 +  </VirtualHost>
 +  
 +  <VirtualHost *>
 +  ServerName Domain2.tld
 +  ServerAlias www.Domain2.tld
 +  ...
 +  </VirtualHost>
 +</file>
 +==== Port-basierte virtuelle Hosts ====
 +Auf einem Server/einer IP lauscht der [[apache:Apache]]2-[[server:Webserver]] auf verschiedenen Ports, z.B. 80,81,82, 8080, ...
 +Die verschiedenen Ports laufen dann auf andere Verzeichnisse.
 +
 +===== Konfiguration =====
 +==== Wo kann man das einstellen? ====
 +...in der Apache2-Konfigurationsdatei, es bietet sich an die Anweisungen für virtuelle Server in eigene Datei zu legen.
 +
 +Hier ist z.B. bei Debian und Ubuntu **das Unterzeichnis ''sites-enabled''** vorgesehen.
 +
 +
 +Es ist eine einfache Textdatei die Direktiven (Anweisungen) enthalten. Diese wird beim starten von Apache eingelesen und ausgewertet.
 +
 +==== Wie kann man es einstellen? ====
 +Man legt sog. <Virtual-Host>-Container an die dann die Einstellungen (genauer: Direktiven) für den jeweiligen virtuellen Host an.
 +
 +Beispiel:
 +<code>
 +   <VirtualHost 196.23.17.51>
 +    ServerName www1.mynet.de
 +    ServerAdmin webguy@mynet.de
 +    DocumentRoot /var/www1/htdocs
 +    ErrorLog logs/www1.error_log
 +    CustomLog logs/www1.access_log common
 +  </VirtualHost>
 +</code>
 +
 +Es ist ein Ip-Basierter Virtueller Host\\ 
 +''ServerName'' gibt den angezeigten Namen an\\ 
 +''ServerAdmin'' gibt die eMail des Admins des virt. Servers an\\ 
 +**''DocumentRoot''** (ganz wichtig) gibt das Stammverzeichnis an, in dem die Webseiten für diesen Host liegen, man würde also hier beim eingeben von ''www1.mynet.de'' die Index-Seite aus ''/var/www1/htdocs'' angezeigt bekommen \\ 
 +ErrorLog oder CustomLog gibt andere Speicherort für die Logdateien (fehler- und normale Logdatei)\\
 +Dann wird der Comtainer wieder mit ''</VirtualHost>'' geschlossen.
 +
 +===== Spezialfall lokaler Testserver =====
 +Grundsätzlich wird man entweder für die 127.x.x.x-IPs in die hosts-Datei eintragen (schwer zu merken) oder Subdomänen von localhost anlegen (namensbasiert).
 +
 +Allerdings bleibt immer der Nachteil alle virtuellen Hosts in die hosts-Datei einzutragen (''C:\Windows\System32\Drivers\etc\hosts'' in Windows oder ''/etc/hosts'' unter Linux).
 +
 +Eine elegante Lösung: [[http://www.schmidtwisser.de/cms/blog/all/2005/07/komfortabel-virtualhosts-fr-lokales.html|Komfortabel VirtualHosts für lokales Testing mit Apache]].
 +
 +==== urspüngliche Lösung ====
 +wenn man es nicht wie oben machen will, hier der umständlichere Weg:
 +<file>
 +Servername linux.intern
 +NameVirtualHost *:80
 +
 +  <VirtualHost *:80>
 +    ServerName virtuell1.linux.intern
 +    ServerAdmin webmaster@localhost
 +    DocumentRoot /var/www/virtuell1
 +
 +    ErrorLog /var/log/apache2/virtuell_error_log
 +    CustomLog /var/log/apache2/virtuell_access_log combined
 +
 +  </VirtualHost>
 +
 +
 +  <VirtualHost *:80>
 +    ServerName virtuell2.linux.intern
 +    ServerAdmin webmaster@localhost
 +    DocumentRoot /var/www/virtuell2
 +
 +    ErrorLog /var/log/apache2/virtuell_error_log
 +    CustomLog /var/log/apache2/virtuell_access_log combined
 +
 +  </VirtualHost>
 +</file>
 +in der /etc/hosts :
 +<file>
 +127.0.0.1 linux.intern
 +127.0.0.1 virtuell1.linux.intern
 +127.0.0.1 virtuell2.linux.intern
 +</file>