IP-basierte virtuelle Server
Was ist IP-basiertes virtuelles Hosting?
IP-basiertes virtuelles Hosting ist eine Methode zur Anwendung verschiedener Richtlinien auf der Grundlage der IP-Adresse und des Ports, über die eine Anfrage eingeht.
- Meistens wird dies verwendet, um verschiedene Websites auf verschiedenen Ports oder Schnittstellen bereitzustellen.
In vielen Fällen sind namensbasierte virtuelle Hosts praktischer, da sie es vielen virtuellen Hosts ermöglichen, eine einzige Adresse/einen einzigen Port zu nutzen (siehe Namensbasierte vs. IP-basierte virtuelle Hosts ).
Systemanforderungen
Wie der Begriff " schon sagt, muss der Server für jeden IP-basierten virtuellen Host eine andere Kombination aus IP-Adresse und Port haben.
- Dies kann dadurch erreicht werden, dass der Rechner über mehrere physische Netzwerkverbindungen verfügt, oder durch die Verwendung virtueller Schnittstellen, die von den meisten modernen Betriebssystemen unterstützt werden (Einzelheiten finden Sie in der Systemdokumentation; diese werden häufig als "ip aliases" bezeichnet, und der Befehl "ifconfig" wird am häufigsten zu ihrer Einrichtung verwendet), und/oder durch die Verwendung mehrerer Portnummern.
In der Terminologie des Apache HTTP Servers ist die Verwendung einer einzigen IP-Adresse, aber mehrerer TCP-Ports, auch IP-basiertes virtuelles Hosting.
So richten Sie Apache ein
Es gibt zwei Möglichkeiten, den Apache für die Unterstützung mehrerer Hosts zu konfigurieren.
- Entweder führen Sie für jeden Hostnamen einen eigenen
httpd-Daemon
aus, oder Sie lassen einen einzigen Daemon laufen, der alle virtuellen Hosts unterstützt.
Verwenden Sie mehrere Dämonen, wenn:
- Es gibt Probleme mit der Sicherheitspartitionierung, z. B. möchte Unternehmen1 nicht, dass jemand bei Unternehmen2 seine Daten außer über das Web lesen kann.
- In diesem Fall bräuchten Sie zwei Daemons, die jeweils mit unterschiedlichen
Benutzer-
,Gruppen-
,Listen-
undServerRoot-Einstellungen
laufen. - Sie können sich den Speicher- und Dateideskriptorbedarf leisten, der entsteht, wenn Sie jeden IP-Alias auf dem Rechner abhören.
- Es ist nur möglich, auf die "Wildcard"-Adresse oder auf bestimmte Adressen
zu hören
. - Wenn Sie also aus irgendeinem Grund eine bestimmte Adresse abhören müssen, dann müssen Sie alle bestimmten Adressen abhören. (Obwohl ein
httpd
auf N-1 der Adressen hören könnte, und ein anderer auf die verbleibende Adresse).
Verwenden Sie einen einzelnen Daemon, wenn:
- Die gemeinsame Nutzung der httpd-Konfiguration durch virtuelle Hosts ist zulässig.
- Der Rechner bedient eine große Anzahl von Anfragen, so dass der Leistungsverlust bei der Ausführung separater Daemons erheblich sein kann.
Mehrere Daemons einrichten
Erstellen Sie für jeden virtuellen Host eine eigene httpd-Installation
- Verwenden Sie für jede Installation die
Listen-Direktive
in der Konfigurationsdatei, um auszuwählen, welche IP-Adresse (oder welcher virtuelle Host) von diesem Daemon bedient wird, z. B.
Listen 192.0.2.100:80
Es wird empfohlen, eine IP-Adresse anstelle eines Hostnamens zu verwenden (siehe DNS-Caveats).
Einrichten eines einzelnen Daemons mit virtuellen Hosts
In diesem Fall wird ein einziger httpd
Anfragen für den Hauptserver und alle virtuellen Hosts bearbeiten.
- Die Direktive
VirtualHost
in der Konfigurationsdatei wird verwendet, um die Werte der KonfigurationsdirektivenServerAdmin
,ServerName
,DocumentRoot
,ErrorLog
undTransferLog
oderCustomLog
für jeden virtuellen Host auf unterschiedliche Werte zu setzen. z.B.
<VirtualHost 172.20.30.40:80>
ServerAdminwebmaster@www1.example.com DocumentRoot "/www/vhosts/www1"
ServerName www1.example.com ErrorLog "/www/logs/www1/error_log"
CustomLog "/www/logs/www1/access_log" kombiniert</VirtualHost>
<VirtualHost 172.20.30.50:80>
ServerAdminwebmaster@www2.example.org DocumentRoot "/www/vhosts/www2"
ServerName www2.example.org ErrorLog "/www/logs/www2/error_log"
CustomLog "/www/logs/www2/access_log" combined</VirtualHost>
Es wird empfohlen, in der <VirtualHost>-Direktive eine IP-Adresse anstelle eines Hostnamens zu verwenden (siehe DNS-Caveats).
Bestimmte IP-Adressen oder Ports haben Vorrang vor ihren Platzhalter-Äquivalenten, und jeder virtuelle Host, der übereinstimmt, hat Vorrang vor der Basiskonfiguration des Servers.
Fast jede Konfigurationsrichtlinie kann in die VirtualHost-Richtlinie eingefügt werden, mit Ausnahme von Richtlinien, die die Prozesserstellung steuern, und einigen anderen Richtlinien.
- Um herauszufinden, ob eine Direktive in der VirtualHost-Direktive verwendet werden kann, überprüfen Sie den Kontext mithilfe des Direktivenindex.
SuexecUserGroup
kann innerhalb einer VirtualHost-Direktive verwendet werden, wenn der suEXEC-Wrapper verwendet wird.
SICHERHEIT: Wenn Sie angeben, wohin die Protokolldateien geschrieben werden sollen, sollten Sie sich einiger Sicherheitsrisiken bewusst sein, die bestehen, wenn jemand anderes als der Benutzer, der den Apache startet, Schreibzugriff auf das Verzeichnis hat, in das die Dateien geschrieben werden.
- Siehe das Dokument Sicherheitstipps für weitere Details.