Несколько доменов, указывающих на одно приложение Heroku Rails через серверы имен, отображающие различный контент?
У нас есть приложение Rails 3, которое позволяет пользователям создавать профиль и получать доступ к нему с помощью субдомена. Так, например:
- user1.app.com
- user2.app.com
- user3.app.com
Теперь предположим, что они хотели указать свое собственное доменное имя в свой профиль, поэтому www.user1.com показывает user1.app.com и www.user1.com/my-content/показывает user1.app.com/my -поперечник/. Возможно ли, чтобы они просто изменили свои серверы имен, чтобы указать на нас, и мы обрабатываем маршрутизацию? Я боюсь, что это был бы прерыватель транзакций, если бы пользователь должен был выполнять какую-либо настройку DNS, не изменяя их серверов имен.
Спасибо!
Ответы
Ответ 1
Вам нужно получить их, прежде всего, чтобы они установили www.user1.com, чтобы указать на proxy.heroku.com(или настроить свою собственную запись cname на proxy.heroku.com и получить их в домене cname) и тогда вам нужно зарегистрировать свой собственный домен с помощью своего приложения heroku, чтобы правильное приложение отвечало на Heroku, хранящемся на их учетной записи? в вашем приложении, чтобы его можно было сопоставлять с входящими запросами.
Этот метод используется в CMS Locomotive Rails, поэтому я хотел бы взглянуть на это - он использует встроенное приложение Heroku INSIDE, поэтому пользовательские домены могут быть добавлены через администратора сайта, который, в свою очередь, будет обращаться к API Heroku, чтобы добавить пользовательский домен для приложения.
Ответ 2
Это действительно два вопроса.
Поэтому я думаю, что я отвечу на это так.
Как я могу разрешить клиентам добавлять настраиваемый домен в мое приложение на основе героика?
Итак, в вашем примере их доменное имя www.user1.com
Должны произойти две вещи.
-
www.user1.com
необходимо добавить к вашим доменам heroku для приложения
- dns для
www.user1.com
необходимо установить на серверы heroku.
Чтобы добавить этот новый домен, я думаю, вам нужно сохранить пользовательский домен в приложении,
и когда он будет изменен или создан, убедитесь, что поставленная задача настроена таким образом, чтобы изменить это изменение на герою.
Чтобы правильно выполнить dns, я надеюсь, что достаточно добавить CNAME
для user1.app.com
.
Поэтому, если у вас есть подстановочная ссылка CNAME на heroku dns, вы можете избежать типа времени простоя, которое может произойти, если Heroku снова получит DOS-ed.
Как показывать контент на основе домена, а не только поддомена?
Ну, как-то вы уже дифференцировали user1.app.com
от user2.app.com
Возможно, вы просто понюхали request.host
.
Теперь вам нужно сначала попробовать пользовательский домен.
Возможно, это сработает.
before_filter :set_client
def set_client
@client = Client.find_by_custom_domain(request.host) || Client.find_by_subdomain(request.host.split(".").first)
unless @client
raise "unrecognised domain #{request.host}"
end
end