#dns
Вопрос:
Мы позволяем нашим клиентам направлять свои поддомены, такие как sub.client1.com
и sub.client2.com
, на наши серверы, на которых размещаются веб-сайты клиентов.
Мы просим наших клиентов создавать записи CNAME , которые указывают our-sub.domain.com
, например:
CNAME sub.clientx.com -> our-sub.domain.com
Затем у нас появляется запись A, которая указывает our-sub.domain.com
на IP-адреса наших веб-серверов, например 1.11.111.11
, и 2.22.222.22
:
A our-sub.domain.com -> [1.11.111.11, 2.22.222.22]
Наша внутренняя настройка может затем переключать эти базовые IP-адреса без каких-либо изменений, требуемых в DNS клиентов:
A our-sub.domain.com -> [3.33.333.33, 4.44.444.44]
Но что, если клиенты захотят направить свои корневые домены к нам, например client1.com
, и client2.com
?
- Они не могут создать запись CNAME для корневого домена
- Они не могут указать запись A на наш поддомен, потому что разрешены только IP-адреса
Может быть, мы сможем решить эту проблему, создав статический IP 0.00.000.00
-адрес, к которому клиенты могут обращаться с помощью простой записи A:
A clientx.com -> 0.00.000.00
Затем мы могли бы сделать одно из следующих действий:
1:
Перенаправление на все IP-адреса наших веб-серверов с помощью внутренне управляемой записи 0.00.000.00
, например:
A 0.00.000.00 -> [1.11.111.11, 2.22.222.22]
2:
Перенаправить 0.00.000.00
на our-sub.domain.com
, потому что он уже маршрутизируется на IP-адреса нашего веб-сервера. Я заметил, как, например, Shopify просит клиентов перенаправлять свои поддомены на статический IP-адрес. Затем этот статический IP-адрес, по-видимому, содержит запись PTR, на которую указывает IP myshopify.com
-адрес . Я не знаю, что тогда происходит внутри. Но все должно было произойти вот так:
PTR 0.00.000.00 -> our-sub.domain.com
Не уверен, возможны ли какие-либо из этих предложений.
Есть идеи, как это можно было бы решить?
Комментарии:
1. Вы самостоятельно размещаете DNS или используете поставщика услуг? Большинство поставщиков в наши дни поддерживают записи псевдонимов, которые делают то, что вы хотите.
2. Этот вопрос не относится к теме переполнения стека. Вопросы о DNS должны быть связаны с программированием, в соответствии с описанием тега. Этот вопрос может лучше работать при неисправностях сервера или при проектировании сети .
Ответ №1:
Я бы сделал это:
- Попросите вашего клиента установить запись A на один общедоступный IP-адрес, находящийся под вашим контролем.
- Настройте прокси-сервер nginx по этому адресу, и прокси-сервер будет передавать запросы на ваши веб-серверы.
Ссылка: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
Примечание. Сделав это, вы можете легко добавить также возможности балансировки нагрузки:
https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/
Комментарии:
1. Спасибо, но это предложение решает проблему с балансировкой нагрузки на одном узле, а не с помощью маршрутизации DNS. Решение, которое я ищу, включает в игру несколько узлов балансировки нагрузки.
2. Ну, тогда ваш клиент может создать несколько записей типа А, указывающих на разные прокси-серверы. Также решит ли вашу проблему тип псевдонима записи? См . docs.gandi.net/en/domain_names/faq/record_types/. …
3. Несколько записей A, указывающих непосредственно из домена клиента на узлы веб-сервера, потребовали бы, чтобы клиент сам поддерживал свой DNS каждый раз, когда мы переключали наши узлы веб-сервера. Это неприемлемо. И ПСЕВДОНИМ, похоже, не является чем-то, что может быть установлено большинством DNS-хостов. Проверил несколько из них, и в их интерфейсах таких опций не существует.
4. В последнем разделе следующей статьи показано, как некоторые поставщики DNS разрешают это с помощью псевдонимов, имен или записей CNAME (виртуальных). freecodecamp.org/news/…