Назад | Перейти на главную страницу

Как лучше всего настроить 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, в том числе:

,

  • Те двое, о которых вы уже упомянули:
    1. индивидуальные хосты
    2. один общий виртуальный хост и обработка его на уровне приложения
  • Многие другие. Документация Apache, связанная с LavaScornedOven
    ( http://httpd.apache.org/docs/2.2/vhosts/mass.html ) - хороший ресурс. Как конкретно ты должен действительно ли это выходит за рамки вашего вопроса, и я на мгновение объясню почему.

Однако какой тип настройки vHost вы выберете, зависит от вашего внешнего приложения и других факторов:

  • Используется ли в процессе регистрации новых клиентов программное обеспечение, которое вы разработали, или что-то готовое?
  • Если первое, какой метод будет проще всего для тебя реализовать в процессе регистрации?
  • Если последнее, есть ли в нем уже возможность создания виртуальных хостов при регистрации? Если да, используйте все, что поставляется с программой.
  • Что вы хотите, если не-клиент указывает свой домен на ваш IP-адрес? Подумайте об этом, прежде чем использовать какой-либо "захватывающий" vhost.
  • В конечном итоге только вы можете определить, какой метод лучше всего подойдет вам.


По поводу настройки DNS:

Во-первых, то, что вам следует определенно избегать:

  • CNAME в вершине зоны. т.е. example.com НЕ должен быть CNAME. Это нормально, если www.example.com хотя.

Ваши варианты:

  • Оставьте это полностью на усмотрение заказчика:
    1. Предоставьте клиенту IP-адрес для использования
    2. Попросите клиента сделать запись А для своего имени хоста, указывающую на этот IP-адрес.
    3. При желании предоставьте клиенту инструкции по созданию записи DNS.
    4. Плюсы:
      • Самый простой для вас, по крайней мере, заранее.
      • Не требует размещения чьего-либо DNS
    5. Минусы:
      • У клиентов могут возникнуть проблемы с соблюдением указаний
      • Когда / если вы измените нумерацию и когда-либо появится новый IP-адрес, ожидайте массового притока заявок в службу поддержки - независимо от того, сколько вы заранее предупредите.


  • Попросите клиента использовать ваши записи NS:
    1. Попросите своих клиентов сменить серверы имен своего домена на ваш с помощью своего регистратора или, если они используют поддомен, делегировать этот поддомен вам с помощью записей NS.
    2. При желании предоставьте своим клиентам подробные инструкции, как это сделать.
    3. Убедитесь, что в процессе регистрации автоматически создаются соответствующие зоны в вашем DNS.
    4. При желании предоставьте своим клиентам интерфейс для добавления других записей в свою зону, таких как MX и т. Д., Или предоставьте их автоматически и разместите электронную почту вашего клиента ...
    5. Плюсы:
      • Самый простой подход для ваших клиентов.
      • Избегает беспокойства о том, что произойдет, если вам придется изменить нумерацию в будущем.
      • Избегает загадки CNAME
    6. Минусы:
      • Теперь вы становитесь хостером DNS, а также хостером приложений.
      • Дополнительные шаги интеграции с процессом регистрации


  • Разрешить клиентам использовать только субдомен (включая, возможно, www)
    1. Попросите клиента создать CNAME для этого поддомена.
    2. Необязательно проинструктируйте клиента, как создать HTTP-перенаправление с его чистого домена на поддомен.
    3. Плюсы:
      • Возможно, самый простой подход.
      • Поскольку многие другие службы приложений, размещенных на хосте, используют этот подход, покупатель с большей вероятностью будет с ним знаком и, следовательно, с меньшей вероятностью испортит его.
      • Подобно подходу NS, позволяет избежать проблем при перенумерации.
    4. Минусы:
      • НЕ позволяет клиенту использовать свой пустой домен с вашим сервисом
    5. Я настоятельно рекомендую этот подход - по той единственной причине, что это то, к чему обычно привыкли клиенты. Возможно, вы захотите рассмотреть возможность использования других методов в индивидуальном порядке.