Как я могу обслуживать несколько приложений rails на одном VPS?

У меня есть VPS на цифровом океане. Я могу запускать несколько приложений rails на одном и том же VPS, используя nginx+passenger. Теперь я хочу сопоставить доменные имена. Для этого что мне делать?

Мой файл nginx.conf

   server {
    listen       80;
    server_name  localhost;

    location ~ ^/uvarsity(/.*|$) {
        alias /home/uvarsity/public$1;  # <-- be sure to point to 'public'!
        passenger_base_uri /uvarsity;
        passenger_app_root /home/uvarsity;
        passenger_document_root /home/uvarsity/public;
        passenger_enabled on;
        rails_env production;
    }
   location ~ ^/uvarsity-landing(/.*|$) {
        alias /home/uvarsity-lp/public$1;  # <-- be sure to point to 'public'!
        passenger_base_uri /uvarsity-landing;
        passenger_app_root /home/uvarsity-lp;
        passenger_document_root /home/uvarsity-lp/public;
        passenger_enabled on;
        rails_env production;
    }
 location / {
      root /home/amaravati/public;  # <-- be sure to point to 'public'
        passenger_enabled on;
    }
}

person user3289150    schedule 08.03.2014    source источник
comment
что такое карта доменных имен?   -  person Daniel Farrell    schedule 08.03.2014
comment
сопоставление доменных имен означает, что я хочу указать доменные имена для этих приложений rails @DanFarrell   -  person user3289150    schedule 08.03.2014
comment
у вас есть более 1 доменного имени?   -  person Mohammad AbuShady    schedule 08.03.2014


Ответы (1)


Вам нужен виртуальный хостинг.

Хитрость здесь заключается в том, чтобы определить раздел upstream в NGINX для определения внутренних серверов каждого приложения, а затем раздел server, который передает трафик вышестоящему.

Вот очень простой пример, который я использовал для предоставления виртуального хоста localhost, который перенаправлялся на виртуальную машину, работающую в VirtualBox. Я использовал localhost, но единственное требование состоит в том, чтобы ваш браузер запрашивал хост по имени, соответствующему настройке server_name в блоке server в конфигурации nginx.

upstream apache {
        server 192.168.70.1:1025;
}

server {
        server_name localhost;
        location / {
                proxy_pass http://apache;
        }

}
person Daniel Farrell    schedule 08.03.2014
comment
Теперь это исправит мою проблему вверх по течению apache {server ip; } - person user3289150; 08.03.2014
comment
Upstream используется для балансировки нагрузки. здесь также полезно @DanFarrell - person user3289150; 08.03.2014
comment
Настоящий трюк здесь заключается в использовании proxy_pass для указания на внутренний сервер. Вы правы - блок upstream действительно не требуется для одного бэкенда. Вы можете просто сказать proxy_pass http://127.0.0.1:4567 или что-то еще, что прослушивает приложение ralis. - person Daniel Farrell; 08.03.2014