multi tenant with custom domain on rails

apache, multi-tenant, ruby-on-rails

Solution

I have a similar setup and am using nginX. What I did for ease of maintenance was accepted all the connections from nginx and did the filtering in my app.

# 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 can have your clients have a domain record with there domain/subdomain pointing to `you_ip` or `your_domain_pointing_to_your_ip.com` and capture that in a form and save in database. Then alter the query in `current_client` like:

@current_client ||= Client.or(:host => request.host).or(:alias => request.host).first

Problem

I'm creating a multi tenant application like shopify and wanna know how can I create custom domain on server that points to the same application instance? For example: ``` app1.mysystem.com == www.mystore.com app2.mystem.com == www.killerstore.com ``` I need to do that config on CNAME like Google Apps? If so, how can I do that? Is there some good paper showing how this works ? PS: app1 AND app2 points to the same application! Thanks

Original source