Обслуживание разных сайтов внутри одного VPS с помощью nginx

Я следовал руководству по Rails Casts: #335 Развертывание на VPS. У меня есть linode VPS с образом Ubuntu 10.04, и я могу выполнить развертывание на нем. Теперь он обслуживает:

/home/user0/first-rails-app/public (domain1.com) 

Я хочу использовать nginx для обслуживания другого приложения rails и приложения php, предположим, что они хранятся здесь:

/home/user1/php-app/public (domain2.com)
/home/user2/another-rails-app/public (subdomain.domain1.com)

Мой nginx.conf

upstream unicorn {
  server unix:/tmp/unicorn.blog.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  # server_name example.com;
  root /home/user0/first-rails-app/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

Все домены и поддомен указывают на сервер (x.x.x.x). Я не уверен, как использовать unicorn с двумя приложениями rails на одном сервере, даже если я правильно настроил виртуальные хосты в nginx.conf.

Любые предложения, где начать искать или что изменить?

Спасибо!


person cnandreu    schedule 05.06.2012    source источник


Ответы (1)


Вам просто нужно объявить несколько восходящих потоков в вашей конфигурации.

upstream app1 { server unix:/tmp/app1.sock; }
upstream app2 { server unix:/tmp/app2.sock; }

server {
  server_name http://www.example.com
  location /foo {proxy_pass http://app1; break;}
  location /bar {proxy_pass http://app2; break;}
}
person sailor    schedule 05.06.2012