> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Ich tippe 93.184.216.34
statt http://example.com
in Chrome. Die Website wird nicht geladen. Warum?
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Ich tippe 93.184.216.34
statt http://example.com
in Chrome. Die Website wird nicht geladen. Warum?
Antworten:
Denn Host
oft wird der richtige HTTP- Header benötigt, um die beabsichtigte Site tatsächlich zu erhalten.
Häufig werden mehrere Websites unter derselben IP-Adresse gehostet und anhand des Host
vom Client angegebenen HTTP- Headers (sowie des TLS-SNI-Werts heutzutage bei HTTPS) voneinander unterschieden .
Das heißt, wenn Sie http://example.com
in Ihren Browser eingegeben haben, war der Host
Header example.com
, aber das ist nicht der Fall, wenn Sie eingegeben haben 93.184.216.34
. Sie erreichen in beiden Fällen denselben Webserver, erhalten jedoch unterschiedliche Antworten (in diesem speziellen Fall 200 vs. 404).
Host
eingehen und für welche Webserver wird sie im Allgemeinen verwendet? Es ist ziemlich schwer online zu suchen, weil dieses Wort so überladen ist.
curl -H "Host: example.com" http://93.184.216.34/
oder so ähnlich.
example.com example.net example.org example.edu
dieselben Adressen, weshalb er den Namen im Host-Header wirklich benötigt.
Da Webserver normalerweise die "Virtual Server" -Technologie verwenden und in der Lage sind, auf Ihre HTTP-Anfrage genau den von Ihnen angeforderten Domainnamen zu beantworten, jedoch nicht die IP-Adresse der Webserver. Dank dem Verstecken von mehr als einem Domainnamen auf einer IP-Adresse.
Beispielsweise kann der Apache -Webserver auf Ihre HTTP-Anfrage mit einer IP-Adresse antworten, die den folgenden Abschnitt enthält:
<VirtualHost *:80>
ServerName Default
...
</VirtualHost>
oder wenn in der Konfiguration überhaupt kein VirtualHost verwendet wird.
Die VirtualHost-Funktion in Apache wurde 1996 eingeführt.
In Apache können Sie viele Websites mit nur einer einzigen IP-Adresse hosten. Dies wird als virtuelles Hosting bezeichnet. Auf diese Weise können Unterdomänen erstellt werden, auch eigenständige Domänen. Dies erfolgt durch Einrichten einer Apache-Konfigurationsdatei, die VirtualHost-Anweisungen für jede Domain / Subdomain enthält.
Ein Beispiel-HTTP-Server mit zwei virtuellen Hosts, example1.com und example2.com, kann folgendermaßen aussehen (IP-Adressdefinition):
<VirtualHost 93.184.216.34:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost 93.184.216.34:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
Es kann auch so aussehen (namensbasierte Definition):
<VirtualHost *:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
In beiden Fällen werden zwei virtuelle Host-Datensätze intern im Speicher erstellt und von Apache verwendet, um einen Vergleich mit dem Zeitpunkt durchzuführen, zu dem eine URI-Anforderung eingeht.
Wenn ein Benutzer die IP-Adresse über einen Benutzeragenten eingibt, wird der erste in der Konfigurationsdatei aufgeführte virtuelle Host als primäre Domäne verwendet (dh in diesem Fall example1.com).
Wenn ein Benutzer einen Domänennamen eingibt, wird die Anforderung an ein öffentliches Internet-DNS-Netzwerk (ICANN) gesendet, das die damit verbundene IP-Adresse bereitstellt. Sie haben beide über einen ICANN-Registrar (wie GoDaddy) registriert. Beides muss korrekt sein und einige Zeit in Anspruch genommen werden, bevor die Weitergabe an alle DNS-Server im ICANN-Netzwerk erfolgt. In diesen Tagen kann es bis zu 24 Stunden dauern.
Wenn die Anforderung an Ihren Apache-HTTP-Server weitergeleitet wird, werden die IP-Adresse und der Domänenname mit der Liste der internen VirtualHost-Einträge abgeglichen. Wenn eines gefunden wird, wird der Dokumentstamm verwendet, um den vollständigen Dateisystempfad zur Objektressource zu bilden und zum Benutzeragenten zurückzukehren. Wenn nicht, wird ein HTTP 404 zusammen mit einem zugehörigen Fehlerdokument gesendet.
Ich verwende gerne die "Haus" -Terminologie.
Sie können ganz einfach einen Brief an ein Haus senden, auf dem sich kein Name befindet, und der Brief kommt im Haus an.
Wenn Sie den Namen der Person darauf setzen, senden Sie ihn an den vorgesehenen Empfänger.
Das Ziel ist das gleiche, aber wie es gehandhabt wird, wenn es das Haus erreicht, ist unterschiedlich.
Wenn Sie die Site, dh www.example.com, angeben, weiß der Server, wie die Anfrage zu behandeln ist, für welchen Host er bestimmt ist und welche Site zurückgeschickt werden soll.
Der Schlüsselbegriff für die Suche ist "name based virtual hosting".
Die Benutzer möchten demselben Webserver mehrere Hostnamen zuweisen und für jeden Hostnamen unterschiedliche Inhalte bereitstellen. Dies wird als virtuelles Hosting bezeichnet (nicht zu verwechseln mit dem neueren Konzept virtueller Maschinen).
Anfänglich wurde virtuelles Hosting durchgeführt, indem dem Server mehrere IP-Adressen zugewiesen wurden. Der Server konnte dann je nach verwendeter IP-Adresse unterschiedliche Inhalte senden, was jedoch als verschwenderisch angesehen wurde.
Aus diesem Grund wurde der "Host" -Header eingeführt, zunächst als Erweiterung, später jedoch als obligatorischer Bestandteil der http 1.1-Spezifikation von 1997. Dieser Header gibt den Hostnamen an, nach dem der Client gefragt hat. Der Server kann dann verschiedene Inhalte basierend auf dem Wert des Headers bereitstellen.
Um die Kosten für Webserver niedrig zu halten, hosten viele Webserver mehrere Websites. Sie tun dies, indem sie virtuelle Hosts oder Vhosts in apache2 / nginx / etc verwenden. Wenn Sie also direkt zur IP-Adresse der Website gehen, wird höchstwahrscheinlich ein "Apache funktioniert" -Bildschirm angezeigt, oder Sie werden möglicherweise sogar zur Hauptwebsite des Webservers weitergeleitet.
Ein Vhost überprüft die eingehende Website-Adresse und vergleicht sie mit den Namen ServerName oder ServerAlias in den aktivierten Vhosts-Dateien. Wenn einer von ihnen übereinstimmt, wird diese bestimmte Website geladen.
Sofern die Website nicht über eine massive Auslastung (hohe Anzahl eindeutiger Besucher / Seitenaufrufe) verfügt oder Anwendungen mit hoher Auslastung (z. B. youtube.com, Facebook usw.) ausführt, ist der Betrieb auf einem gemeinsam genutzten Server wahrscheinlich kostengünstiger. Es wäre eine Geldverschwendung, sich einen dedizierten Server (ab 60 USD / Monat) zu besorgen, um eine Wordpress-Blog-Website zu betreiben. Sie sollten eine gemeinsame Plattform auf einem Server mit mehr als 200 Websites auf einem Server einrichten. Die Kosten werden mehr im Bereich von 5 $ / Monat liegen.
Ein weiterer Grund dafür ist das Fehlen von IP-Adressen. Es sind einfach nicht genug IPv4-Adressen übrig. Es ist nur durch die Verwendung von NAT für Heim- / Geschäftsnetzwerke und die Verwendung von Vhosts möglich, dass wir überhaupt noch etwas übrig haben. Auch wenn IPv6 zum Mainstream wird, bleiben Server wahrscheinlich bei Vhosts (Serverkosten).
Eine dedizierte IP-Adresse ist teuer, während das Erstellen einer neuen Website auf einem Server grundsätzlich kostenlos ist.
Das Hosting-Unternehmen mietet eine einzelne IP-Adresse, die auf einen physischen Server verweist, und hostet dann mithilfe der Funktion "Virtueller Host" Tausende von Websites auf dieser IP-Adresse
Denken Sie wie ein Postfach, wenn Sie nur die Postanschrift aufschreiben, aber ohne die Postfachnummer, wird die Post nicht zugestellt.
Hier gibt es viele Antworten mit technischen Details, aber ich denke, die einfachste Erklärung auf hoher Ebene ist, dass selbst wenn ein Webserver den HTTP-Verkehr auf seiner IP-Adresse richtig überwacht, der Server normalerweise auch so konfiguriert werden muss, dass er für eine bestimmte Domain antwortet Name, und dieser Name muss in der vom Client (dh dem Webbrowser) gesendeten Anfrage enthalten sein
Ich sage "normalerweise", weil es fast immer so gemacht wird, aber es gibt tatsächlich Methoden, bei denen Sie den http-Server so einrichten können, dass er antwortet, wenn nur die IP-Adresse verwendet wird.
Wir müssen die Unterschiede zwischen virtuellen und dedizierten IPs verstehen.
Wenn eine Website über eine dedizierte (nicht freigegebene) IP verfügt, wird die Website (zum Beispiel) unter http://123.456.789.012 aufgerufen .
Versuchen Sie Folgendes: Dies ist die dedizierte IP-Adresse einer Website, die ich besitze ( www.negativeiongenerators.com) : http://75.126.128.174. Wie andere bereits gesagt haben, ist dies normalerweise keine gute Idee.