У нас есть подстановочный знак для обработки всех поддоменов для example.com
ЗАПИСЬ: * .example.com указывает на 10.10.10.10
У нас есть более конкретная запись A для обработки специального поддомена (это отлично работает):
Запись: staging.example.com баллы 10.10.10.9
Проблема, с которой мы сталкиваемся, заключается в том, что мы переносим стадию в новую среду хостинга, и нас проинструктировали использовать CNAME:
CNAME: new-staging.example.com указывает на proxy.heroku.com
Мы думали, что это сработает. Однако new-staging.example.com преобразуется в подстановочный знак верхнего уровня 10.10.10.10 и не указывает на proxy.heroku.com.
Что мне не хватает? Это невозможно? Или это плохая практика? Спасибо,
Обычно ответ - «Нет» - должна победить более конкретная запись, поэтому все должно работать так, как вы описали / ожидали. Я предполагаю, что у вас где-то в кеше есть запись A с подстановочным знаком, и вам нужно дождаться истечения срока действия этого кеша.
быстрый тест с BIND 9.6.2-P2 / FreeBSD 8.1:
Зона, содержащая записи:
example.net. IN A 127.0.0.2
*.test.example.net. IN A 127.0.0.1
specific.test.example.net. IN CNAME example.net.
Постановляет о следующем:
% dig specific.test.example.net
; <<>> DiG 9.6.2-P2 <<>> specific.test.example.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17222
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;specific.test.example.net. IN A
;; ANSWER SECTION:
specific.test.example.net. 3600 IN CNAME example.net.
example.net. 3600 IN A 127.0.0.2
;; AUTHORITY SECTION:
example.net. 3600 IN NS ns1.example.net.
;; ADDITIONAL SECTION:
ns1.example.net. 3600 IN A 127.0.0.1
(Возвращает CNAME)
и
% dig nonspecific.test.example.net
; <<>> DiG 9.6.2-P2 <<>> nonspecific.test.example.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26980
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;nonspecific.test.example.net. IN A
;; ANSWER SECTION:
nonspecific.test.example.net. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
example.net. 3600 IN NS ns1.example.net.
;; ADDITIONAL SECTION:
ns1.example.net. 3600 IN A 127.0.0.1
(Возвращает запись A с подстановочным знаком)
Согласно вашему комментарию к вопросу:
при запуске dig -t ANY new-staging.example.com мы получаем: new-staging.example.com. 82880 В CNAME proxy.heroku.com.example.com. proxy.heroku.com.example.com. 86400 IN A 10.10.10.10
... вы неправильно настроили DNS. Вам необходимо установить цель CNAME на proxy.heroku.com.
- важен заключительный период! Без него ваш DNS-сервер предполагает, что вы имеете в виду хост в своем example.com
зона - proxy.heroku.com.example.com
- и это перехватывается подстановочной записью.
Я наткнулся на этот пост, в котором исследую, как это делается на общем сервере Plesk Linux. В своем примере они относятся к комбинированному решению DNS / vhost.conf, в котором вы должны добавить и vhost.conf, и обновить DNS.
Цитата: «Он должен быть последним в списке поддоменов, который отсортирован в алфавитном порядке, поэтому начинайте его имя с« zz ». http://kb.parallels.com/2239
Я предполагаю, что это отличается от «нормальной» теории DNS, согласно которой будет возвращена более конкретная запись.