Як передається субдомен веб-серверу?


12

Я знаю, що dns вирішує таку адресу, як example.com, на таку IP-адресу, як 11.22.33.44, але я трохи заплутався в тому, як вирішуються субдомени, так що коли ви вводите http://subdomain.example.com , що насправді передається на сервер о 11.22.33.44? Іншими словами, example.com = 11.22.33.44, але subdomain.example.com/path = ???

Чи "субдомен" і "шлях" передаються заголовками http, або відображаються в URL-адресі якимось чином, чи що?

Заздалегідь спасибі.

Редагувати: Якщо я правильно розумію, BloodPhilia каже, що subdomain.example.com насправді - це інший домен, який в принципі може вирішити зовсім інший IP. Але якщо це так, то що робити з хостами, які мають величезну кількість (як виглядають) субдоменів, але які насправді відображають певний шлях на сайті. Наприклад, blogspot розміщує мільйони блогів, і всі вони виглядають так:

aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com

Очевидно, це не субдомени з власними IP-адресами, а скоріше деякі карти, такі як aaa.blogspot.com -> www.blogspot.com/aaa, але як це зробити? Що насправді передається веб-серверу на blogspot.com?

Відповіді:


18

Домени, субдомени, субдомени та суб (х) -суб-субдомени (зроблені два останніх!) Обробляються DNS точно так само, як кінцевий користувач та веб-сервер.

Наприклад, DNS-сервер може повертати різні результати для domain.com, www.domain.comабо mysite.domain.com.

Зараз, як ви, напевно, знаєте, у світі набагато більше доменів, ніж IP-адреси.

Через це сервери використовують щось відоме як "Заголовки хостів", щоб обслуговувати правильний вміст.

Неважливо, що ви насправді запитуєте, ваша машина обробляє все те саме - вона дізнається на DNS, до якого IP-адреси він повинен підключитися, і після підключення він надішле заголовка хоста як частину запиту. Потім веб-сервер повертає назад той вміст, який він був налаштований для надсилання назад.

Хорошим інструментом для тестування / навчання / діагностики є Wfetch, його можна завантажити тут .

Ось приклад заголовків, надісланих під час доступу до сайту superuser.com

alt текст

Ось конфігурація заголовків хостів у IIS (веб-сервер):

alt текст

(Зображення тут )

Якщо вам було цікаво, Serverfault.com та Superuser.com знаходяться в одній і тій же IP-адресі, і це техніка, яка використовується для розділення сайтів та подання різного контенту.

Щоб дізнатися більше про цю тему, ви можете прочитати статтю Вікіпедії про віртуальний хостинг .

(Я знаю, що ви розумієте основи, але я подумав, що було б добре сказати ще трохи, щоб хтось із Google, якщо це хоче, навчиться трохи, якщо захоче!)

Редагувати

Отже, згідно з вашим прикладом, я б припустив, що хтось великий, як blogspot, швидше за все, має заголовок DNS-підстановки (запис в wildcard повертає той самий результат для будь-якого запиту), який вказує на балансир навантаження, балансир навантаження потім відправить його багатьом різним веб-серверам, які, ймовірно, не мають окремого сайту на заголовок хоста, а натомість один сайт / скрипт, на який введена адреса (заголовки хостів чи ні), розбирається і витягує правильний вміст зі свого CDN туди-сюди.

Хоча також можливо (але малоймовірно), що у них просто є кілька тисяч записів на ip, ip призводить до декількох серверів, і вони просто мають запис для кожного сайту, який має відповідне заголовка хоста.


1
Приємно! Побічна примітка: той факт, що два веб-сайти мають спільну IP-адресу, не означає, що вони завжди розміщуються на одній машині. Балансир навантаження може насправді також зазирнути в ці заголовки і делегувати на різні машини. (Про Super User та ін див. Також Нью-Йоркський центр даних Stack Overflow у Нью-Йорку , який я не дуже читав, хоча ...)
Ар'ян,

@Arjan +1 хороший момент ... Я згадав балансирів навантаження, але це, очевидно, може бути просто IP-адресами балансира навантаження, а потім вони розділили запити на багато серверів.
Вільям Гілсум

1
Позначена як відповідь за детальною інформацією та посиланнями на подальше дослідження. Спасибі!
Джошуа Френк

6

Дійсно, якщо два домени мають однакову IP-адресу, сервер покладається на браузер, щоб вказати запитуваний домен. Як :

GET / HTTP/1.1
Host: data.stackexchange.com

3

Субдомени - це не правильне слово. Зазвичай субдомен є власним доменом, тому sub.example.com спочатку передається в DNS, якщо для цього піддомену не знайдено конкретної записи, запит передається до IP верхнього домену. (example.com) На цьому сервері запит робиться знову, і сервер буде діяти відповідно.

Іншими словами, запит на example.com насправді не відрізняється від запиту на sub.example.com.


Я думаю, може, я не розумію тут чогось важливого. Дозвольте мені відредагувати та уточнити своє запитання. Спасибі.
Джошуа Френк

Ви хочете сказати, що якщо sub.example.comне вирішити, example.comбуде використана IP-адреса ? Я думаю, що браузери цього не роблять. (Якщо не буде запису DNS-підстановки, але тоді я б сказав, що цей субдомен справді вирішиться.)
Ар'ян,

1

Subdomain.example.com не відповідає 11.22.33.44 - для цілей вашого запиту він, як правило, має власний запис DNS A і вирішує іншу адресу.

Можна дозволити дозвіл субдомену за тією ж адресою, що і батьківський домен, і все-таки сервер піднімає різні сторінки, але якщо ви це зробите, вам слід розмістити обидва сайти на одному веб-сервері та потребувати облікового запису для цього в конфігурації вашого сервера. Спосіб обліку цього залежить від того, на якому веб-сервері ви працюєте.


1
Ви говорите про те, що у моєму прикладі blogspot "xyz.blogspot.com" не матиме виділеного запису dns, тож dns шукатиме "blogspot.com" і знайде його в 11.22.33.44. Але він надішле весь URL "xyz.blogspot.com" як поле хоста, і сервер вирішить проаналізувати та відправити сторінку xyz у браузер?
Джошуа Френк

Так, правильно.
Joel Coehoorn

nslookup dummy.example.comврожайність server can't find dummy.example.com- як це відповідає вищезгаданому? (Що стосується прикладу в коментарі @ Джошуа?)
Арджан

Вибачте, вам все ще потрібен запис для вашого піддомену - це просто те, що він може дати той самий IP, якщо ви хочете.
Джоель Куехорн

Потім я знову розгубився. Якщо є мільйони субдоменів xyz.blogspot.com, вони не можуть мати всі записи A, тож як здійснюється маршрутизація? А конфігурація запису на стороні сервера. Мене цікавить, як би дізнався клієнт за URL-адресою, чи xyz є правильним піддоменом чи чимось, що відображено на стороні сервера. Зокрема, чи завжди безпечно кешувати IP на деякий час, тому що ви знаєте, що x.domain.com та y.domain.com знаходяться на одному сервері, або ви ніколи не можете знати, просто переглянувши URL?
Джошуа Френк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.