> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Piszę 93.184.216.34
zamiast http://example.com
w Chrome. Nie ładuje strony internetowej. Czemu?
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Piszę 93.184.216.34
zamiast http://example.com
w Chrome. Nie ładuje strony internetowej. Czemu?
Odpowiedzi:
Ponieważ właściwy Host
nagłówek HTTP jest często wymagany, aby faktycznie uzyskać zamierzoną witrynę.
Bardzo często hostuje się wiele witryn internetowych pod tym samym adresem IP i rozróżnia się je na podstawie Host
nagłówka HTTP określonego przez klienta (a także wartości SNI TLS w przypadku HTTPS).
To znaczy, kiedy wszedłeś http://example.com
do przeglądarki, Host
nagłówek był example.com
, ale nie jest tak w przypadku, gdy wszedłeś 93.184.216.34
. W obu przypadkach osiągasz ten sam serwer WWW, ale otrzymujesz różne odpowiedzi (w tym konkretnym przypadku 200 vs. 404).
Host
służy i do jakich serwerów sieciowych z reguły go używa? Trudno jest wyszukiwać w Internecie, ponieważ to słowo jest tak przeciążone.
curl -H "Host: example.com" http://93.184.216.34/
czy coś takiego.
example.com example.net example.org example.edu
ten sam adres (adresy), dlatego tak naprawdę potrzebuje nazwy w nagłówku hosta.
Ponieważ zwykle serwery sieciowe używają technologii „serwera wirtualnego” i są w stanie odpowiedzieć na twoje żądanie HTTP dokładnie w żądanej nazwie domeny, ale nie na adresie IP serwerów internetowych. Dzięki ukryciu więcej niż jednej nazwy domeny na jednym adresie IP.
Na przykład serwer WWW Apache jest w stanie odpowiedzieć na twoje żądanie HTTP za pomocą adresu IP, używając sekcji:
<VirtualHost *:80>
ServerName Default
...
</VirtualHost>
lub jeśli w konfiguracji nie użyto VirtualHost.
Funkcja VirtualHost w Apache została wprowadzona w 1996 roku.
W Apache możesz hostować wiele stron internetowych używając tylko jednego adresu IP. To się nazywa wirtualny hosting. W ten sposób można tworzyć subdomeny, nawet samodzielne domeny. Odbywa się to poprzez skonfigurowanie pliku konfiguracyjnego Apache zawierającego dyrektywy VirtualHost dla każdej domeny / subdomeny.
Przykładowy serwer HTTP, który ma dwa wirtualne hosty, example1.com i example2.com może wyglądać tak (definicja adresu IP):
<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>
Może również wyglądać tak (definicja oparta na nazwie):
<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>
W obu przypadkach dwa rekordy hosta wirtualnego są tworzone wewnętrznie w pamięci i używane przez Apache do porównania z nadejściem żądania URI.
Gdy użytkownik wpisuje adres IP za pośrednictwem agenta użytkownika, pierwszy wirtualny host wymieniony w pliku konfiguracyjnym jest używany jako domena podstawowa (tj. W tym przypadku przyklad.com).
Gdy użytkownik wpisuje nazwę domeny, żądanie jest wysyłane do publicznej internetowej sieci DNS (ICANN), która udostępnia powiązany z nim adres IP. Zarówno zarejestrowałeś się za pośrednictwem rejestratora ICANN (jak GoDaddy). Musisz mieć oba te poprawne i dać trochę czasu, zanim propagacja obejmie wszystkie serwery DNS w sieci ICANN. Obecnie może to potrwać do 24 godzin.
Gdy żądanie jest kierowane do serwera HTTP Apache, adres IP i nazwa domeny są porównywane z listą wewnętrznych rekordów VirtualHost. Gdy zostanie znaleziony, katalog główny dokumentu jest używany do utworzenia pełnej ścieżki systemu plików do zasobu obiektowego w celu powrotu do agenta użytkownika. Jeśli nie, wysyłany jest HTTP 404 wraz z powiązanym z nim dokumentem błędu.
Lubię używać terminologii „house”.
Możesz dość łatwo wysłać list do domu bez nazwiska, a on dotrze do domu.
Jeśli umieścisz na niej imię i nazwisko osoby, wysyłasz ją do adresata.
Cel jest taki sam, ale sposób, w jaki jest obsługiwany, gdy dotrze do domu, jest inny.
Gdy określisz witrynę, np. Www.example.com, serwer będzie wiedział, jak obsłużyć żądanie i dla którego hosta jest przeznaczony, i dla której witryny ma zostać udostępniony.
Kluczowym terminem do wyszukania jest „wirtualny hosting oparty na nazwie”.
Ludzie chcą przydzielić wiele nazw hostów do tego samego serwera WWW i podawać różne treści dla każdej nazwy hosta. Jest to znane jako wirtualny hosting (nie mylić z nowszą koncepcją maszyn wirtualnych).
Początkowo wirtualny hosting został dokonany przez przydzielenie wielu adresów IP do serwera, serwer mógł następnie wysyłać inną treść na podstawie użytego adresu IP, ale było to postrzegane jako marnotrawstwo.
Dlatego nagłówek „host” został wprowadzony, początkowo jako rozszerzenie, ale później stał się obowiązkową częścią specyfikacji http 1.1 w 1997 roku. Nagłówek ten określa nazwę hosta, o którą prosił klient. Serwer może następnie podawać inną zawartość na podstawie wartości nagłówka.
Aby obniżyć koszty serwerów WWW, wiele serwerów hostuje wiele stron internetowych. Robią to za pomocą wirtualnych hostów lub Vhostów w apache2 / nginx / etc. Jeśli więc przejdziesz bezpośrednio do adresu IP witryny, najprawdopodobniej pojawi się ekran „Apache działa”, a może nawet nastąpi przekierowanie do głównej strony internetowej serwera.
Vhost sprawdza przychodzący adres strony internetowej i porównuje go z nazwami ServerName lub ServerAlias w włączonych plikach Vhosts. Jeśli jeden z nich pasuje, ta konkretna strona internetowa jest ładowana.
O ile witryna nie ma dużego obciążenia (duża liczba unikalnych użytkowników / wyświetleń strony) lub nie obsługuje aplikacji o wysokim obciążeniu (np. Youtube.com, facebook itp.), Prawdopodobnie bardziej opłacalne jest działanie na wspólnym serwerze. Byłoby marnotrawstwem pieniędzy, aby uzyskać dedykowany serwer (od 60 USD / mc), aby prowadzić witrynę blogową Wordpress. Lepiej jest mieć udostępnioną platformę na serwerze z prawdopodobnie ponad 200 witrynami na jednym serwerze. Koszty będą wyższe w okolicach 5 USD / mc.
Innym powodem tego jest brak adresów IP. Po prostu nie ma wystarczającej liczby adresów IPv4. Jedynie dzięki wykorzystaniu NAT do sieci domowych / biznesowych i wykorzystaniu hostów Vhosts w ogóle mamy. Nawet gdy IPv6 stanie się głównym strumieniem, serwery prawdopodobnie będą trzymać się Vhostów (koszty serwera).
Dedykowany adres IP jest drogi, a utworzenie nowej strony internetowej na serwerze jest zasadniczo bezpłatne.
To, co się dzieje, polega na tym, że firma hostingowa wynajmuje pojedynczy adres IP wskazujący na fizyczny serwer, a następnie hostuje tysiące stron internetowych pod tym adresem IP za pomocą funkcji „wirtualnego hosta”
Myśl jak skrytka pocztowa, jeśli po prostu zapiszesz adres pocztowy, ale bez numeru skrytki, poczta nie zostanie dostarczona.
Jest tu wiele odpowiedzi ze szczegółami technicznymi, ale myślę, że najprostszym wyjaśnieniem na wysokim poziomie jest to, że nawet jeśli serwer sieciowy odpowiednio nasłuchuje ruchu http na swoim adresie IP, serwer musi zwykle być skonfigurowany tak, aby odpowiadał dla określonej domeny imię i nazwisko musi znajdować się w żądaniu przesłanym przez klienta (tj. przeglądarkę internetową)
Mówię „zwykle”, ponieważ prawie zawsze robi się to w ten sposób, ale w rzeczywistości istnieją metody, w których można skonfigurować serwer HTTP tak, aby odpowiadał, jeśli używany jest tylko adres IP.
Musimy zrozumieć różnice między wirtualnymi adresami IP a dedykowanymi adresami IP.
Jeśli witryna ma dedykowany (niepodzielony) adres IP, wówczas (na przykład) http://123.456.789.012 otworzy witrynę.
Spróbuj tego, czyli dedykowanego adresu IP witryny, którą jestem właścicielem, www.negativeiongenerators.com: http://75.126.128.174 Ale, jak powiedzieli inni, zazwyczaj nie jest to dobry pomysł.