мультитенант с пользовательским доменом на рельсах - PullRequest
3 голосов
/ 26 июля 2011

Я создаю мультитенантное приложение, например shopify, и хочу знать, как я могу создать собственный сервер на сервере, который указывает на тот же экземпляр приложения? Например:

app1.mysystem.com == www.mystore.com
app2.mystem.com == www.killerstore.com

Мне нужно выполнить эту настройку в CNAME, например, в Службах Google? Если так, как я могу это сделать? Есть ли хорошая статья, показывающая, как это работает?

PS: app1 и app2 указывают на одно и то же приложение! Спасибо

Ответы [ 2 ]

6 голосов
/ 26 июля 2011

У меня похожая настройка, и я использую nginX. То, что я делал для простоты обслуживания, принимало все соединения от nginx и выполняло фильтрацию в моем приложении.

# application_controller.rb
before_filter :current_client

private
def current_client
  # I am using MongoDB with Mongoid, so change the syntax of query accordingly
  @current_client ||= Client.where(:host => request.host).first
  render('/public/404.html', :status => :not_found, :layout => false) unless @current_client
end

У ваших клиентов может быть запись домена, в которой домен / поддомен указывает на you_ip или your_domain_pointing_to_your_ip.com, и фиксируйте ее в форме и сохраняйте в базе данных. Затем измените запрос в current_client как:

@current_client ||= Client.or(:host => request.host).or(:alias => request.host).first
0 голосов
/ 06 апреля 2016

Я сейчас работаю над чем-то похожим и только что выполнил настройку Nginx. Это то, как я это сделал.

server {
  listen 80;
  server_name domain1.com domain2.com domain3.com;
  rails_env production;
  passenger_enabled on;
  root /var/www/your_site_folder/current/public;
}

Также обязательно запустите passenger_pre_start, если вы используете пассажир.

Например: passenger_pre_start http://your_domain.com;

Добавьте одну строку для каждого домена, который вы добавляете в вышеупомянутый блок конфигурации.

Ключ здесь находится под server_name. Обычно я бы использовал это для домена, использующего www.domain.com или без «www», domain.com. Но в этом случае вы можете указать здесь все домены, которые вы хотите использовать в своем приложении, и у вас есть настройки Nginx для мультитенантности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...