У нас другой набор CNAME, указывающих на разные subdomains
. Эти subdomains
(a.domain.com, b.domain.com) указывают на разные IP-адреса на разных машинах.
# Server A
a1.domain.com pointing to a.domain.com
a2.domain.com pointing to a.domain.com
..
aN.domain.com pointing to a.domain.com
# Server B
b1.domain.com pointing to b.domain.com
b2.domain.com pointing to b.domain.com
..
bN.domain.com pointing to b.domain.com
В настоящее время мы должны добавить отдельные записи CNAME (например, a1 ... aN) для одного поддомена (a.dominan.com). Мы повторяем описанный выше процесс для каждого нового сервера, который на самом деле является другим субдоменом (например, c.domain.com). Есть ли способ указать диапазон CNAME (например, [a1..a25] .domain.com указывает на a.domain.com) вместо добавления отдельных адресов CNAME?
Есть ли возможность справиться с этим на уровне DNS или веб-сервера (apache или Nginx)?
Да, это можно сделать как в DNS (если вы используете BIND), так и в Apache (частично) / nginx (полностью).
BIND поддерживает $ GENERATE ключевое слово, и вы можете сделать следующее:
$GENERATE 1-10 a$.domain.com CNAME a.domain.com
В Apache вы можете использовать только подстановочный знак для ServerAlias, а не регулярное выражение:
ServerAlias a*.domain.com
В nginx вы можете использовать регулярное выражение для название сервера:
server_name ~^a[1-10]\.domain\.com$;
Конкретный ответ BIND уже дан; но в случае, если у кого-то такая же проблема с другим сервером и он имеет доступ только к основам, я думал бы изменить адреса на X.a.domain.com / X.b.domain.com, а затем использовать подстановочный знак *
В DNS есть только один подстановочный знак: *
Нет ничего плохого в том, чтобы перечислить все эти записи в файле зоны.
Я почти уверен, что Apache не может делать такие диапазоны в ServerAlias
директивы, но меня не удивит, если nginx сможет обрабатывать регулярные выражения в своих server
директива.
Ты мог генерировать конфигурация вашего веб-сервера или конфигурация DNS с помощью seq 1 25
или такой инструмент, как марионетка, если печатать их все вручную слишком обременительно.
Вы также можете сделать это на уровне приложения, если все эти разные домены должны запускать одно и то же приложение. (Вот как это делает компания, в которой я работаю.)