Es ist Teil des HTTP 1.1-Protokolls.
Insbesondere enthält das HTTP 1.1-Protokoll einen Header namens "host:", der angibt, auf welche Website auf einem bestimmten Server der Client zugreifen möchte.
Wenn snoopy.net und woodstock.org 192.0.32.10 gemeinsam nutzen und Ihr Browser versucht, Inhalte von http://snoopy.net/doghouse
der spezifischen http-Anfrage abzurufen, würde dies folgendermaßen aussehen:
GET /doghouse HTTP/1.1
Host: snoopy.net
Wenn die gewünschte URL http://woodstock.org/seeds
die Anfrage ist, würde sie so aussehen
GET /seeds HTTP/1.1
Host: woodstock.org
In beiden Fällen würde sich zwischen Ihrem Computer und Port 80 des Servers ein TCP-Socket befinden. Der Server würde basierend auf dem Host-Header wissen, ob Inhalte von /var/www/snoopy.net oder /var/www/woodstock.org/ abgerufen werden.
Es gäbe andere Header für Cookies und andere Dinge wie Browsertyp und zulässigen Inhalt, aber der "Host" -Header ist speziell das, was dem Webserver ermöglicht, zu wissen, welche virtuelle Website gewünscht wird.
Im RFC2616 steckt noch mehr .
Dies ist auch der Grund, warum https-Sites * eine eigene IP-Adresse haben müssen - der Austausch des SSL-Schlüssels und die Überprüfung des Zertifikats erfolgen vor der http-Transaktion, sodass der http-Server das Zertifikat für "woodstock" nicht herausgeben kann. org "oder" snoopy.net ", wenn eine https-Verbindung auf Port 443 von 192.0.32.10 empfangen wird.
bearbeiten
** in den Kommentaren Grawity weist darauf hin , dass es Erweiterungen SSL in der TLS - Spezifikation sind , dass der Server ermöglichen , die Web - Site der Benutzer als Versuch , den Zugriff, und dass die meisten modernen Web - Browser haben diese Erweiterungen wissen, so muss ein bisschen zu ist stark.
Es gibt etwas, das alle modernen Browser zusammen mit der Anfrage senden, den "Host:" - Header.
Die tatsächliche Anfrage, die Firefox für diese Seite sendet, lautet:
Wie Sie sehen können, die
Bit identifiziert die betreffende Website.In IIS und Apache können Sie virtuelle Websites konfigurieren, die nur Anforderungen von einer bestimmten IP / Host-Kombination akzeptieren.
In Bezug auf Ihr spezielles Problem müssen Sie nachlesen, wie Ihr spezielles Hosting-Unternehmen die Konfiguration anfordern soll.
quelle
Die Technik zum Hosten von mehr als einer Domain / Subdomain auf einer einzelnen IP-Adresse / einem Host wird als virtuelle Hosts bezeichnet . Die http get-Anforderung enthält den Domänennamen, für den die Anforderungen bestimmt sind, sodass der Webserver die Anforderung mit einer bestimmten virtuellen Domäne abgleichen kann.
Wenn Sie intern mehrere physische Hosts mit nur einer externen IP haben, sollten Sie Reverse Proxy einrichten , um die Anforderungen an die richtige Maschine / interne IP-Adresse weiterzuleiten.
quelle
Die Funktion auf Ihrem Webserver wird normalerweise als "virtuelle Hosts" bezeichnet. Sobald Sie die DNS-Einträge auf diese eine IP-Adresse verweisen (wie in den anderen Antworten erwähnt), werden die verschiedenen Sites vom Server abhängig vom angeforderten Host verwaltet.
Soweit der Hinweis auf eine andere Box geht. Sie können Umleitungen auf den meisten Webservern konfigurieren, wenn Sie die Abfrage zuerst abrufen möchten. Wenn Sie über Subdomains sprechen, müssen Sie lediglich jede der Subdomains auf eine andere IP-Adresse verweisen.
dh host.com -> IP 1 dann www.host.com -> IP 2 und mail.host.com -> IP 3
Wenn Sie spezifischere Antworten wünschen, müssen Sie angeben, welche Webserver-Software auf welchem Betriebssystem Sie ausführen.
Möglicherweise ist ServeFault ein besserer Ort für diese Frage.
quelle
Zusamenfassend...
Eins - Legen Sie die DNS-Einträge für Ihre verschiedenen Domänen so fest, dass sie alle auf Ihre Box verweisen.
Zwei - Richten Sie, wie von anderen beschrieben, Ihren Webserver so ein (Sie sagen nicht, welcher), dass er mit dem angeforderten Hostnamen übereinstimmt.
Auf diese Weise werden alle Anforderungen für alle Ihre Domänen an denselben Computer gesendet, und die Konfiguration übernimmt die angeforderte Domäne und leitet sie an den richtigen Ordner weiter, der den Inhalt dieser Site enthält.
quelle
Aus Ihrer Frage ergibt sich für mich, dass Sie einen separaten physischen Server für die zweite Website haben. In diesem Fall können Sie keine einzige IP-Adresse für die beiden Server verwenden. Sie können entweder a) eine zweite öffentliche IP-Adresse für Ihren zweiten Host erhalten oder b) einen Smart Proxy einrichten, der Anforderungen basierend auf den Host-Headern an verschiedene Server in Ihrem internen Netzwerk weiterleitet. Ich bin mir ziemlich sicher, dass b) möglich ist, aber ich habe keine wirkliche Vorstellung davon, wie es funktioniert. Sie müssen also jemanden fragen, ob Sie dies versuchen.
quelle
Wenn ich Ihre Frage richtig lese, haben Sie zwei verschiedene Computer, die sich eine IP-Adresse über NAT (Network Address Translation) teilen? In diesem Fall muss eine Site an einem anderen Port empfangsbereit sein (nicht 80). Ich kenne keinen guten Weg, wie der Router basierend auf den HTTP-Metadaten "Host" Anforderungen an verschiedene Computer senden kann. Sie sollten nur eine zweite IP-Adresse für Ihren zweiten Server erhalten.
quelle