Как разрешить сайтам поддоменов клиентов использовать собственный домен - PullRequest
8 голосов
/ 15 июля 2010

У меня есть приложение rails, где клиенты регистрируются и получают собственный поддомен-сайт / URL, например:

  • customer1.myapp.com
  • customer2.myapp.com
  • customer3.myapp.com

Какие шаги мне нужно предпринять, чтобы позволить клиенту использовать собственное зарегистрированное доменное имя, чтобы его домен указывал на мое приложение?

Итак, в приведенном выше примере, если «customer1» принадлежит «customer1.com» - как я могу настроить свое приложение таким образом, чтобы любые запросы к «customer1.com» отправлялись на «customer1.myapp.com»? Кроме того, что мой клиент должен был бы сделать на его конце?

Спасибо.

1 Ответ

7 голосов
/ 15 июля 2010

Вашему клиенту потребуется настроить DNS, чтобы его домен указывал его или его часть на ваш адрес.Это может быть сложно координировать, особенно если адрес сервера, на котором вы размещаете сервис, может время от времени меняться.Намного проще перенаправить субдомен клиента на ваш субдомен.

Вам также понадобится таблица соответствия, которая сопоставляет домен клиента с учетной записью клиента.Обычно это выражается примерно так:

before_filter :load_customer_from_host

def load_customer_from_host
  # Strip "www." from host name to search only by domain.
  hostname = request.host.sub(/^www\./, '')

  @customer = Customer.find_by_host!(hostname)
rescue ActiveRecord::RecordNotFound
  render(:partial => 'customer_not_found', :layout => 'application', :status => :not_found)
end

. Предполагается, что у вас есть модель Customer с полем 'host', в котором указано что-то вроде customer1.myapp.com или customer1.com, что бы ни соответствовалополе хоста.

При настройке приложения вам потребуется конфигурация виртуального хоста, которая отвечает на все произвольные доменные имена.Это легко сделать, если это единственный размещенный сайт, так как это поведение по умолчанию.Если вы делаете это на виртуальном хостинге, вам может потребоваться настроить псевдоним для каждого домена клиента, что может быть неприятно.

...