Прошу прощения, если мое описание проблемы неясно. Я работаю над онлайн-системой управления контентом, которая позволяет использовать внешние домены, аналогично Tumblr или Flavors.me. Я заметил, что обе эти службы просто требуют, чтобы вы добавили запись A в DNS вашего домена.
Пытаясь это сделать, я добавил запись A для пустого имени и www, которые ведут к IP-адресу моего веб-сервера. Хотя это успешно направляется на мой сервер, он не сохраняет используемый домен. Это оставляет меня без представления о том, какую учетную запись они пытаются получить на уровне приложения. Я использую nginx в качестве своего веб-сервера.
Раньше я менял все серверы имен для домена, и это работает правильно, однако это вызывает сложности с другими проблемами, такими как почта, и это невозможно в масштабируемом решении.
Что мне здесь делать? Является ли запись A правильным методом для этого? Как сайты, такие как Tumblr и Flavors.me, определяют, на какую учетную запись ссылается домен?
Скорее всего, вы хотите, чтобы люди создавали запись A или CNAME для поддомена в своем домене, которая направляет на IP-адрес вашего сервера (запись A) или имя хоста (CNAME). Необязательно использовать поддомены, но вам нужно предложить такую возможность.
Затем ваш сервер обслуживает контент на основе полученного запроса, точно так же, как вы можете обслуживать несколько сайтов с одного сервера. В Apache вы можете использовать отдельные хосты или, что более вероятно, в вашем сценарии, ваша CMS обслуживает различный контент в зависимости от свойств запроса. Вам просто нужно выяснить, как платформа, на которой находится ваша CMS, может получить доступ к различным частям запроса, а затем передать это логике, которая извлекает контент.
Если вы сделаете свой вопрос более конкретным, включив язык / фреймворк / платформу, на которой построена CMS, вы можете получить более конкретный совет. Или попробуйте опубликовать в Профессиональные веб-мастера или Переполнение стека где вы можете найти людей с более конкретным опытом, делающих это.
Чтобы добавить к тому, что сказал dunxd, вы также делаете запись A, потому что это то, что направляет запросы для этого (под) домена, которые будут обрабатываться серверами поставщиков услуг, при этом поставщик услуг не должен полностью контролировать DNS клиентов. Как только запрос поступает в сервис-провайдер, он может определить, какие данные о клиентах отображать, несколькими способами.
Первый - это Виртуальные хосты которые позволяют вам устанавливать разные конфигурации для каждого обслуживаемого домена.
Второй Правила перезаписи которые позволяют определить, какие данные возвращать на основе запрошенного URL.
Третий - использовать Переменные сервера а затем используйте любой язык, на котором вы кодируете приложение, для обработки запросов на основе значения http_host.
Они не исключают друг друга, вы можете использовать их комбинацию, чтобы делать то, что вы хотите.
Я не уверен, что вы имеете в виду под:
он не сохраняет используемый домен
Меняется ли URL-адрес в адресной строке при посещении домена? Если это так, вероятно, вы где-то делаете перенаправление http 301. Вы все еще можете это сделать, но сначала вам нужно, чтобы сервер переписал URL-адрес, чтобы вы по-прежнему могли передавать информацию об учетной записи.
РЕДАКТИРОВАТЬ: Я не использую nginx, но добавил несколько полезных ссылок.
Краткий ответ: запросы HTTP 1.1 должен укажите поле заголовка Host: (см. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23).
Я думаю, что это читают такие сайты, как tumblr.