使用nginx为一个VPS内的各种站点提供服务

时间:2012-06-05 10:24:06

标签: ruby-on-rails deployment nginx vps unicorn

我遵循了Rails Casts中的教程:#335 Deploying to a VPS。我有一个带有Ubuntu 10.04映像的linode VPS,我可以部署到它。现在它正在服务:

/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)。我不确定如何在同一台服务器中使用带有两个rails应用程序的独角兽,即使我在nginx.conf中正确设置了虚拟主机。

有什么建议可以从哪里开始查看或修改内容?

谢谢!

1 个答案:

答案 0 :(得分:0)

您只需要在conf

中声明多个上游
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;}
}