Назад |
Перейти на главную страницу
Как лучше всего настроить Apache или AWS для поддержки мультитенантного приложения Rails, которое позволяет каждому клиенту иметь собственное доменное имя?
Я создаю сайт SaaS для Rails 3, который поддерживает мультитенантность.
Когда клиент регистрируется, он вводит собственное доменное имя, например example.com.
я нуждаюсь example.com
чтобы указать на мое приложение SaaS и предоставить им их контент.
У меня следующие вопросы:
Нужно ли мне создавать виртуальный хост Apache для каждого клиента, использующего свой собственный домен?
Есть ли более простой способ с CNAME, чтобы клиент просто указывал на IP-адрес моего сервера (ов), который затем перенаправляет запрос в мое приложение через некоторый захват всего vhost?
Смогу ли я создать запись CNAME для клиента, чтобы ему не нужно было выполнять какие-либо настройки?
Подходит ли этот случай для Amazon Web Services?
Любая помощь, объяснение или исправления в моем понимании DNS будут оценены. Я разработчик, поэтому часть работы с сервером немного мутная.
Короткий ответ:
Apache:
Just use a catchall/wildcard vhost. Makes account provisioning way easier.
DNS:
Only allow subdomains, and have your customer's create a CNAME with their existing DNS provider.
AWS:
Using AWS or not will have no impact on the answer to the question at hand.
Длинный ответ:
Что касается настройки Apache vHost:
У вас есть множество вариантов настройки vhost, в том числе:
,
- Те двое, о которых вы уже упомянули:
- индивидуальные хосты
- один общий виртуальный хост и обработка его на уровне приложения
- Многие другие. Документация Apache, связанная с LavaScornedOven
( http://httpd.apache.org/docs/2.2/vhosts/mass.html ) - хороший ресурс. Как конкретно ты должен действительно ли это выходит за рамки вашего вопроса, и я на мгновение объясню почему.
Однако какой тип настройки vHost вы выберете, зависит от вашего внешнего приложения и других факторов:
- Используется ли в процессе регистрации новых клиентов программное обеспечение, которое вы разработали, или что-то готовое?
- Если первое, какой метод будет проще всего для тебя реализовать в процессе регистрации?
- Если последнее, есть ли в нем уже возможность создания виртуальных хостов при регистрации? Если да, используйте все, что поставляется с программой.
- Что вы хотите, если не-клиент указывает свой домен на ваш IP-адрес? Подумайте об этом, прежде чем использовать какой-либо "захватывающий" vhost.
- В конечном итоге только вы можете определить, какой метод лучше всего подойдет вам.
По поводу настройки DNS:
Во-первых, то, что вам следует определенно избегать:
- CNAME в вершине зоны. т.е.
example.com
НЕ должен быть CNAME. Это нормально, если www.example.com
хотя.
Ваши варианты:
- Оставьте это полностью на усмотрение заказчика:
- Предоставьте клиенту IP-адрес для использования
- Попросите клиента сделать запись А для своего имени хоста, указывающую на этот IP-адрес.
- При желании предоставьте клиенту инструкции по созданию записи DNS.
- Плюсы:
- Самый простой для вас, по крайней мере, заранее.
- Не требует размещения чьего-либо DNS
- Минусы:
- У клиентов могут возникнуть проблемы с соблюдением указаний
- Когда / если вы измените нумерацию и когда-либо появится новый IP-адрес, ожидайте массового притока заявок в службу поддержки - независимо от того, сколько вы заранее предупредите.
- Попросите клиента использовать ваши записи NS:
- Попросите своих клиентов сменить серверы имен своего домена на ваш с помощью своего регистратора или, если они используют поддомен, делегировать этот поддомен вам с помощью записей NS.
- При желании предоставьте своим клиентам подробные инструкции, как это сделать.
- Убедитесь, что в процессе регистрации автоматически создаются соответствующие зоны в вашем DNS.
- При желании предоставьте своим клиентам интерфейс для добавления других записей в свою зону, таких как MX и т. Д., Или предоставьте их автоматически и разместите электронную почту вашего клиента ...
- Плюсы:
- Самый простой подход для ваших клиентов.
- Избегает беспокойства о том, что произойдет, если вам придется изменить нумерацию в будущем.
- Избегает загадки CNAME
- Минусы:
- Теперь вы становитесь хостером DNS, а также хостером приложений.
- Дополнительные шаги интеграции с процессом регистрации
- Разрешить клиентам использовать только субдомен (включая, возможно, www)
- Попросите клиента создать CNAME для этого поддомена.
- Необязательно проинструктируйте клиента, как создать HTTP-перенаправление с его чистого домена на поддомен.
- Плюсы:
- Возможно, самый простой подход.
- Поскольку многие другие службы приложений, размещенных на хосте, используют этот подход, покупатель с большей вероятностью будет с ним знаком и, следовательно, с меньшей вероятностью испортит его.
- Подобно подходу NS, позволяет избежать проблем при перенумерации.
- Минусы:
- НЕ позволяет клиенту использовать свой пустой домен с вашим сервисом
- Я настоятельно рекомендую этот подход - по той единственной причине, что это то, к чему обычно привыкли клиенты. Возможно, вы захотите рассмотреть возможность использования других методов в индивидуальном порядке.