Jest to część protokołu HTTP 1.1.
W szczególności protokół HTTP 1.1 zawiera nagłówek o nazwie „host:”, który określa, do której strony internetowej na określonym serwerze próbuje uzyskać dostęp klient.
Więc jeśli snoopy.net i woodstock.org oba współużytkują 192.0.32.10, a twoja przeglądarka próbuje uzyskać zawartość z http://snoopy.net/doghouse
określonego żądania http wyglądałby tak:
GET /doghouse HTTP/1.1
Host: snoopy.net
Jeśli pożądany adres URL http://woodstock.org/seeds
będzie wyglądał, żądanie będzie wyglądać
GET /seeds HTTP/1.1
Host: woodstock.org
W obu przypadkach między komputerem a portem 80 serwera znajdowałoby się gniazdo tcp. Serwer wiedziałby, aby uzyskać zawartość z /var/www/snoopy.net lub /var/www/woodstock.org/ na podstawie nagłówka Host.
Istnieją inne nagłówki plików cookie i inne rzeczy, takie jak typ przeglądarki i dozwolona zawartość, ale nagłówek „Host” jest tym, co pozwala serwerowi internetowemu wiedzieć, która wirtualna strona internetowa jest pożądana.
W RFC2616 jest więcej .
Dlatego też strony https * muszą *** mieć swój własny adres IP - wymiana transakcji ssl i weryfikacja certyfikatu odbywają się przed transakcją http, więc serwer http nie będzie wiedział o wydaniu certyfikatu dla woodstock. org ”lub„ snoopy.net ”, gdy odbierze połączenie https na porcie 443 192.0.32.10.
edytować
** w komentarzach Grawity wskazuje, że w specyfikacji TLS istnieją rozszerzenia protokołu SSL, które pozwalają serwerowi dowiedzieć się, do której strony użytkownik próbuje uzyskać dostęp, i że większość współczesnych przeglądarek internetowych ma te rozszerzenia, więc to też musi być trochę zbyt silny.
Jest coś, co wszystkie nowoczesne przeglądarki wysyłają wraz z żądaniem, zwane nagłówkiem „Host:”.
Rzeczywiste żądanie firefox wysyłane dla tej strony to:
Jak widać,
bit identyfikuje daną stronę internetową.W usługach IIS i Apache można skonfigurować wirtualne witryny sieci Web, które akceptują tylko żądania z określonej kombinacji adresu IP / hosta.
Jeśli chodzi o konkretny problem, musisz przeczytać, w jaki sposób Twoja firma hostingowa chce, abyś poprosił o konfigurację.
źródło
Technika hostowania więcej niż jednej domeny / subdomeny na jednym adresie IP / hoście nazywa się hostami wirtualnymi . Żądanie HTTP get zawiera nazwę domeny, dla której są one żądane, co pozwala serwerowi internetowemu dopasować żądanie do konkretnej domeny wirtualnej.
Jeśli masz wiele hostów fizycznych wewnętrznie za pomocą tylko jednego zewnętrznego adresu IP, możesz spróbować skonfigurować odwrotne proxy, aby przekazywać żądania na właściwy komputer / wewnętrzny adres IP.
źródło
Funkcja na twoim serwerze WWW jest zwykle nazywana „wirtualnymi hostami”. Po wskazaniu pozycji dns, aby wskazywały na jeden adres IP (jak wspomniano w innych odpowiedziach), serwer będzie następnie serwował różne witryny w zależności od żądanego hosta.
Jeśli chodzi o wskazanie innego pola, to idzie. Możesz skonfigurować przekierowania na większości serwerów internetowych, jeśli najpierw spodziewasz się zapytania. Jeśli mówisz o subdomenach, wystarczy wskazać każdą z subdomen na inny adres IP.
tzn. host.com -> IP 1, a następnie www.host.com -> IP 2 i mail.host.com -> IP 3
Jeśli chcesz uzyskać bardziej szczegółowe odpowiedzi, musisz powiedzieć, jakie oprogramowanie serwera WWW działa na jakim systemie operacyjnym.
Może się okazać, że ServeFault jest lepszym miejscem na to pytanie.
źródło
W skrócie...
Jeden - Ustaw wpisy DNS dla różnych domen tak, aby wskazywały na twoje urządzenie.
Dwa - zgodnie z opisem innych, skonfiguruj swój serwer internetowy (nie mówisz, który), aby pasował do żądanej nazwy hosta.
W ten sposób wszystkie żądania dla wszystkich domen trafiają na ten sam komputer, a jego konfiguracja pobiera żądaną domenę i kieruje ją do odpowiedniego folderu zawierającego zawartość tej witryny.
źródło
Z twojego pytania wynika, że masz osobny serwer fizyczny dla drugiej strony internetowej. W takim przypadku nie będzie można użyć jednego adresu IP dla dwóch serwerów. Możesz albo a) uzyskać drugi publiczny adres IP dla drugiego hosta, albo b) skonfigurować inteligentny serwer proxy, który będzie przekazywał żądania do różnych serwerów w sieci wewnętrznej na podstawie nagłówków hosta. Jestem pewien, że b) jest możliwe, ale nie mam pojęcia, jak to działa, więc będziesz musiał zapytać kogoś innego, czy właśnie to próbujesz zrobić.
źródło
Jeśli dobrze czytam twoje pytanie, masz dwa różne komputery współdzielące adres IP przez NAT (Network Address Translation)? Jeśli tak, musisz mieć jedną stronę nasłuchującą na innym porcie (nie 80) - nie ma dobrego sposobu, aby router wysyłał żądania do różnych komputerów na podstawie metadanych HTTP „Host”. Lepiej jest po prostu uzyskać drugi adres IP dla drugiego serwera.
źródło