Это следующая часть конфигурации виртуального хоста, по которой мне нужны дополнительные пояснения:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin example@example.com
ServerName 141.29.495.999
ServerAlias example.com
...
Это и пример конфигурации, похожей на то, что у меня есть сейчас (у меня сейчас нет доменного имени).
<VirtualHost *:80>
- Разрешите следующие настройки для всех HTTP-запросов, сделанных через порт 80 на IP-адреса, по которым можно связаться с этим сервером. Например, если к серверу можно получить доступ по более чем одному IP-адресу, вы можете ограничить эту директиву только одним, а не обоими.
ServerName
- Если хост-часть HTTP-запроса совпадает с этим именем, разрешить запрос. Обычно это доменное имя, которое сопоставляется с IP, но в этом случае хост HTTP-запроса должен соответствовать этому IP.
ServerAlias
- Альтернативные имена, принимаемые сервером.
Меня запутывает то, что в приведенном выше сценарии я установил ServerAlias mytestname.com
а затем отправил HTTP-запрос на mytestname.com
, для этого должна быть запись DNS, указывающая на IP-адрес сервера? В каком случае ServerAlias - это просто записи EXTRA ServerName?
Скажем, у меня есть такая запись DNS, что foobar.com = 141.29.495.999
но тогда у меня было ServerName = 141.29.495.999
и ServerAlias
было пустым, означало бы это, что, хотя foobar.com разрешается с правильным IP-адресом, потому что нет ссылки на принятие foobar.com в ServerName
или ServerAlias
?
Или что-то. Человек, я в замешательстве.
Подумайте об этом так:
DNS - это телефонный справочник / желтые страницы. Когда кто-то хочет позвонить на ваш телефон, он может найти ваше имя, получить ваш номер телефона и позвонить по нему. DNS делает то же самое, но для компьютеров - когда кто-то хочет www.example.com
они запрашивают у DNS IP-адрес, а затем могут связаться с компьютером, имеющим этот IP-адрес. Что это разрешить средства. Разрешение IP-адреса не имеет ничего общего с Apache; это строго вопрос DNS.
В ServerName
и ServerAlias
больше похож на внутренний список телефонов компании. Ваш веб-сервер - это коммутатор; он будет принимать все входящие подключения к серверу. Затем клиент / вызывающий сообщит им, какое имя они ищут, и посмотрит в конфигурации Apache, как обрабатывать это имя.
Если имя не указано как ServerName / ServerAlias в конфигурации apache, apache всегда будет предоставлять им первый из перечисленных VirtualHost. Или, если VirtualHost вообще отсутствует, он будет предоставлять один и тот же контент независимо от того, какое имя хоста указано в запросе.
http://www.example.com
в ваш браузер.www.example.com
.www.example.com
(это Host:
заголовок в HTTP).www.example.com
. Может произойти одно из следующего: www.example.com
указан как ServerName
или ServerAlias
для VirtualHost
- если да, то он будет использовать конфигурацию этого VirtualHost для доставки контента.www.example.com
не указан ни в одном из них - в этом случае первый виртуальный хост в списке будет использоваться для доставки контента.Если вы не определяете ServerName, apache2 попытается угадать его из / etc / hosts. ServerAlias не является обязательным. Самый обычный вариант использования - это когда
ServerName example.com
ServerAlias www.example.com
Вы (а не задача apache2) должны убедиться, что запросы достигают IP-адреса веб-сервера, например, регистрация домена и настройка записей DNS. Очень распространенный способ сделать это (для тестирования и разработки) без записей домена и DNS - это настроить файл / etc / hosts на локальном компьютере так, чтобы example.com указывал на IP-адрес вашего сервера.
192.168.0.12 example.com
192.168.0.12 www.example.com
Я настоятельно рекомендую прочитать официальную документацию по теме: https://httpd.apache.org/docs/2.4/vhosts/name-based.html
это говорит «Если совпадение ServerName или ServerAlias не найдено в наборе виртуальных хостов, содержащем наиболее конкретную совпадающую комбинацию IP-адреса и порта, то будет использован первый из перечисленных виртуальных хостов, который соответствует этому». . Итак, в вашем случае, если вы заходите на «foobar.com», первая запись VirtualHost, которая каким-то образом соответствует IP 141.29.495.999, будет использоваться httpd
В том же документе говорится: «Многие серверы хотят быть доступными под более чем одним именем. Это возможно с помощью директивы ServerAlias». Таким образом, вы можете рассматривать ServerAlias просто как дополнительные записи ServerName.