Как разрешить сайтам поддоменов клиентов использовать их собственный домен

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

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

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

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

Спасибо.


person Jim Jones    schedule 15.07.2010    source источник


Ответы (1)


Вашему клиенту потребуется настроить 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 с полем «хост», в котором указано что-то вроде «customer1.myapp.com» или «customer1.com», что соответствует полю хоста.

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

person tadman    schedule 15.07.2010