Назад | Перейти на главную страницу

Что на самом деле запрашивается при настройке псевдонима в Apache с CNAME?

У меня есть много поддоменов, установленных на моей машине разработки, как показано ниже.

У меня есть много сайтов на моем сервере разработки, и Apache может обрабатывать их на основе доменного имени.

Однако мне не нравится устанавливать фиксированный IP. Поэтому я хочу использовать такие псевдонимы:

Преимущество здесь в том, что при изменении IP-адреса dev-сервера мне нужно изменить только один, а не многие.

Если я прошу test1.example.com с сервера Apache, принимает ли он это как test1.example.com или default.example.com?

Как правило, это хорошая идея, поскольку вы указываете, что теперь вам нужно изменить IP только в одном месте.

Клиент будет искать test1, указывать на значение по умолчанию, а затем получать IP. Затем он подключится к Apache и сообщит Apache, что ему нужен сайт test1 (он не сообщает серверу, как он нашел сервер, а только каков исходный запрос).

Вы определили одно ключевое преимущество записи CNAME.

Что касается apache, поле Host HTTP-заголовка останется тем, что было введено в клиент, и CNAME не будет иметь никакого эффекта.

Одним из возможных недостатков CNAME является то, что для поиска записи, содержащей запись CNAME, потребуется два запроса: первый для получения CNAME, а второй - для получения записи A. Это, вероятно, не имеет большого значения, но стоит упомянуть.

Наконец, будьте осторожны с «цепочкой CNAME», которая создает CNAME для CNAME. Хотя это разрешено RFC, это не рекомендуется.

Чтобы ответить на ваш последний вопрос: если вы используете NameVirtualHost в Apache и настроив виртуальный хост для каждой записи CNAMEed, вы получите уникальные страницы, определенные этим виртуальным хостом.

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName test1.example.com
    DocumentRoot /var/www/test1
</VirtualHost>

Вообще говоря, исходя из моего опыта, я бы рекомендовал вам не зависеть от конфигурации по умолчанию для любого живого контента, а вместо этого настроить виртуальный хост (с серверами, если требуется) для каждого имени. Всегда есть исключения, но, как правило, их легче отлаживать, потому что каждое имя, которое вы размещаете, учитывается путем явного определения в config.