How to redirect subdomain to another rails project

May 7, 2016 451 views
DNS Ruby on Rails Ubuntu

I have a project on home/rails/rails_project (myapp.com)
I'v already created the subdmain: test.myapp.com

I want that test.myapp.com redirect to home/rails/project2
How can I do that? thanks

1 Answer

The easiest way to serve two separate Rails apps from the same Droplet is to use an Nginx reverse proxy. If you're not already doing so, take a look at this tutorial:

Bellow is a sample Nginx configuration based on the one used by the DigitalOcean Rails One-Click app. You'll see a few key things. First, it is important to set the server_name directives so that Nginx can correctly route requests to the apps based on their domain names.

Next you'll see that we created a new upstream server. The Unix socket file that it points to is defined in listen directive in the Unicorn configuration for your project.

upstream app_server {
    server unix:/var/run/unicorn.sock fail_timeout=0;
}

upstream project2_server {
    server unix:/var/run/project2.sock fail_timeout=0;
}

server {
    listen   80;
    root /home/rails/rails_project/public;
    server_name myapp.com;
    index index.htm index.html;

    location / {
            try_files $uri/index.html $uri.html $uri @app;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
                    try_files $uri @app;
            }

     location @app {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass http://app_server;
    }
}

server {
    listen   80;
    root /home/rails/project2/public;
    server_name test.myapp.com ;
    index index.htm index.html;

    location / {
            try_files $uri/index.html $uri.html $uri @app;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
                    try_files $uri @app;
            }

     location @app {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass http://project2_server;
    }
}
DigitalOcean's Ruby on Rails One-Click application provides a convenient way to get your Rails app up and running quickly. With Nginx, Unicorn, and Postgres all pre-installed, the One-Click is a great base for hosting your app. This tutorial will give you all the details you need to get your project off the ground.
Have another answer? Share your knowledge.