2010-07-15 3 views
8

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

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

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

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

Спасибо.

ответ

6

Вашему клиенту будет необходимо настроить 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 

, предполагающая у вас есть модель клиента с полем «хозяина» установить что-то вроде «customer1.myapp.com» или «customer1.com», независимо соответствует хост поле.

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

Смежные вопросы