Как указать корневой домен или IP-адрес на другой поддомен домена?

#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:

Я бы сделал это:

  1. Попросите вашего клиента установить запись A на один общедоступный IP-адрес, находящийся под вашим контролем.
  2. Настройте прокси-сервер 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/…