Я новичок в веб-сервере Apache. Когда мы настраиваем веб-сервер Apache, у нас есть возможность настройки name-based virtual host
.
Насколько я понимаю, когда пользователь вводит доменное имя www.example.com
в веб-браузере он подключится к DNS-серверу, который преобразует доменное имя в (общедоступный) IP-адрес. Затем веб-браузер подключится к веб-серверу, используя IP-адрес.
Теперь предположим, что у меня есть сервер с общедоступным IP-адресом, a.a.a.a
. Я зарегистрировал 2 доменных имени, www.example.com
и www.example1.com
. Оба этих 2 доменных имени указывают на один и тот же IP-адрес, a.a.a.a
. Итак, когда пользователь вводит www.example.com
или www.example1.com
в его веб-браузере DNS-сервер будет указывать им на IP-адрес a.a.a.a
.
Я настроил виртуальный хост на основе имени в соответствии с руководством пользователя на этот сайт.
Однако я не понимаю: поскольку DNS-сервер уже преобразовал доменные имена в IP-адрес, все пользователи будут подключаться к веб-серверу, используя IP-адрес. a.a.a.a
. Как Apache узнает, использует ли пользователь www.example.com
или www.example1.com
в своем браузере?
Заголовок http будет содержать хост. В приведенном выше примере это будет www.example.com или www.example1.com. Этот заголовок хоста считывается apache и затем используется для отправки клиенту правильного виртуального хоста.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23