Frage Wie haben Sie eine IP-Adresse und viele Websites?


Wie kann ich es haben, wo ich eine IP-Adresse habe, die im Internet sitzt, aber viele Web-Namen? Zum Beispiel, wenn ein Hosting-Unternehmen eine geteilte IP hat, bekomme ich unbegrenzte Domainnamen (zusammen mit allen anderen auf dieser Box).

Ich habe eine Box im Internet, aber ich möchte auf eine andere Maschine zeigen, die eine andere Website enthält, wenn jemand in das andere www eintippt ... (es sitzt direkt daneben in einer anderen Box). Ist das alles Subdomain? Vielen Dank.

Ich bin die Hosting-Firma


25
2018-01-27 17:09


Ursprung




Antworten:


Es ist Teil des HTTP 1.1-Protokolls.

Insbesondere enthält das HTTP 1.1-Protokoll eine Kopfzeile mit dem Namen "host:", die angibt, auf welcher Website auf einem bestimmten Server der Client zuzugreifen versucht.

Also, wenn snoopy.net und woodstock.org beide teilen 192.0.32.10 und Ihr Browser versucht, Inhalte von zu bekommen http://snoopy.net/doghouse  Die spezifische HTTP-Anfrage würde folgendermaßen aussehen:

GET /doghouse HTTP/1.1
Host: snoopy.net

Wenn die gewünschte URL ist http://woodstock.org/seeds die Anfrage würde so aussehen

GET /seeds HTTP/1.1
Host: woodstock.org

In beiden Fällen wäre ein TCP-Socket zwischen Ihrem Computer und dem Port 80 des Servers vorhanden. Der Server würde basierend auf dem Host-Header Informationen von /var/www/snoopy.net oder /var/www/woodstock.org/ erhalten.

Es gäbe andere Header für Cookies und andere Dinge wie den Browsertyp und erlaubten Inhalt, aber der "Host" -Header ist speziell, was es dem Webserver ermöglicht zu wissen, welche virtuelle Website gewünscht wird.

Es gibt mehr in der RFC2616.

Dies ist auch der Grund, warum HTTPS-Sites * ihre eigene IP-Adresse haben müssen - der SSL-Schlüsselaustausch und die Zertifikatsverifizierung finden vor der HTTP-Transaktion statt, so dass der HTTP-Server das Zertifikat für "Woodstock" nicht ausgeben kann. org "oder" snoopy.net ", wenn es an Port 443 von 192.0.32.10 eine https-Verbindung empfängt.


bearbeiten

** in den Kommentaren Grawity weist darauf hin, dass es in der TLS-Spezifikation Erweiterungen von SSL gibt, die es dem Server ermöglichen, zu wissen, auf welche Website der Benutzer zuzugreifen versucht, und dass die meisten modernen Webbrowser diese Erweiterungen haben Muss ist ein bisschen zu stark.


33
2018-01-27 17:55



also würde der Webserver diesen Header sehen und ihn auf die richtige Website verschieben? Können Sie mehrere Websites auf dem gleichen Port haben? - johnny
Genau dafür ist es da. Ein "Server" wie Apache hat Port 80 von 192.0.32.10, der viele DNS-Einträge hat, von denen jeder eine "Site" ist. Der Server weiß, was die gewünschte Site auf dem Header "Host" basiert. - chris
aber ich verstehe nicht, wo diese DNS-Einträge gehalten werden ... auf dem Server? Da mein Hauptport 80 ist www.somesiteA.com wie wird mein Server es auf www.somesiteB.com auf der gleichen Box weiterleiten? - johnny
Der DNS ist so konfiguriert, dass er gemacht wird beide Die Namen verweisen auf dieselbe IP-Adresse, auf der der Server zuhört. Der Server empfängt Verbindungen auf derselben IP-Adresse und demselben Port. Wenn der Browser jedoch "Ich möchte SiteA.com" angeben soll, muss er einen anderen Inhalt angeben, als wenn er nach SiteB.com gefragt wird. - Massimo
Um noch deutlicher zu werden: Die beiden Standorte unterscheiden sich auf der HTTP-Protokoll-Ebene, nicht auf der TCP / IP-Ebene. Es ist, als wenn jemand Ihr Büro anruft und fragt, ob er mit John oder Susan sprechen möchte: Die Telefonnummer ist die gleiche, aber mehr als eine Person kann sie benutzen. - Massimo


Es gibt etwas, das alle modernen Browser mit der Anfrage senden, die "Host:" Header genannt wird.

Die tatsächliche Anfrage, die Firefox für diese Seite sendet, lautet:

Gastgeber: superuser.com
Benutzer-Agent: Mozilla / 5.0 (Windows; U; Windows NT 6.0; de-US; rv: 1.9.1.7) Gecko / 20091221 Firefox / 3.5.7 (.NET CLR 3.5.30729)
Akzeptieren: text / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0,8
Accept-Language: de-de, en; q = 0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1, utf-8, q = 0,7, *, q = 0,7
Keep-Alive: 300
Verbindung: Keep-Alive

Wie Sie sehen können, die

Gastgeber: superuser.com
 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.

Was Ihr spezielles Problem betrifft, müssen Sie sich darüber informieren, wie Ihr bestimmtes Hosting-Unternehmen möchte, dass Sie die Konfiguration anfordern.


11
2018-01-27 16:02



Dies sollte auch erwähnen, dass Sie mehrere DNS-Einträge für Ihre IP-Adresse festlegen müssen. - Tadeusz A. Kadłubowski
@ Tadeusz: Es ist möglich, Wildcard-DNS-Einträge einzurichten, dies ist also nicht unbedingt notwendig. - John Gietzen


Die Technik zum Hosten von mehr als einer Domäne / Subdomain auf einer einzelnen IP-Adresse / Host wird aufgerufen virtuelle Hosts. Die HTTP-Get-Anfrage enthält den Domainnamen, für den die Anfragen gelten, wodurch der Webserver die Anfrage mit einer bestimmten virtuellen Domain abgleichen kann.

Wenn Sie mehrere physische Hosts intern mit nur einer externen IP-Adresse haben, sollten Sie sich die Einrichtung genauer ansehen Reverse-Proxy um die Anfragen an die richtige Maschine / interne IP-Adresse weiterzuleiten.


6
2018-01-27 17:14



oder Sie könnten natürlich auch andere http-Server auf verschiedenen Ports haben. - Chopper3
Ja das ist auch eine Option. Aber die Leute sind es nicht gewohnt, einen Port anzugeben, wenn sie eine URL eingeben, also würde ich diese Lösung für einige Situationen reservieren, wie zum Beispiel eine Admin-Oberfläche. - 3dinfluence


Die Funktion auf Ihrem Webserver wird normalerweise 'virtuelle Hosts' genannt. Sobald Sie die DNS-Einträge auf diese eine IP-Adresse verweisen (wie in den anderen Antworten erwähnt), wird der Server dann die verschiedenen Sites Server abhängig von dem was der angeforderte Host ist.

Was das Zeigen auf eine andere Box betrifft. Sie können Redirects in den meisten Webservern konfigurieren, wenn Sie die Abfrage zuerst erwarten. Wenn Sie über Subdomains sprechen, dann weisen Sie alle Subdomains nur auf eine andere IP-Adresse hin.

d. host.com -> IP 1, dann www.host.com -> IP 2 und mail.host.com -> IP 3

Wenn Sie genauere Antworten wünschen, müssen Sie angeben, welche Web-Server-Software auf welchem ​​Betriebssystem ausgeführt wird.

ServeFault ist möglicherweise ein besserer Ort für diese Frage.


3
2018-01-27 16:42





Zusamenfassend...

One - Legen Sie die DNS-Einträge für Ihre verschiedenen Domänen auf alle Ihre Box.

Zwei - Wie von anderen beschrieben, richten Sie Ihren Webserver (Sie sagen nicht, welcher) für den angeforderten Hostnamen ein.

Auf diese Weise werden alle Anfragen für alle Ihre Domains an denselben Rechner gesendet und die Konfiguration übernimmt die angeforderte Domain und leitet sie an den richtigen Ordner weiter, der den Inhalt dieser Site enthält.


1
2018-01-27 16:37





Es klingt für mich von Ihrer Frage aus, als ob 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 abrufen oder b) einen Smart Proxy einrichten, der Anfragen an verschiedene Server in Ihrem internen Netzwerk basierend auf den Host-Headern weiterleitet. Ich bin mir ziemlich sicher, dass b) möglich ist, aber ich habe keine genaue Vorstellung davon, wie es funktioniert. Sie müssen also jemand anderen fragen, ob Sie das wirklich versuchen.


0
2018-01-27 18:35





Wenn ich Ihre Frage richtig lese, haben Sie zwei verschiedene Computer, die eine IP-Adresse über NAT (Network Address Translation) teilen? Wenn dies der Fall ist, muss eine Site auf einen anderen Port (nicht 80) warten - es gibt keine gute Möglichkeit, dass der Router Anforderungen an verschiedene Computer sendet, basierend auf den HTTP- "Host" -Metadaten. Sie sind besser dran, nur eine zweite IP-Adresse für Ihren zweiten Server zu bekommen.


0
2018-01-27 16:47