Nginx在子uri上托管单个Rails应用程序

时间:2013-10-05 19:37:05

标签: ruby-on-rails ruby nginx proxy reverse-proxy

背景:

  • 我在反向代理后面运行debian 7服务器。
  • 我有一个运行ruby 2.0.0-p247
  • 的rails 4应用程序
  • 我正在使用nginx
  • 通过导航到:server-name.foo.dev来访问服务器,其中foo.dev是内部反向代理域。
  • 我无法使用乘客部署该应用。
  • 这将是服务器上运行的唯一应用。

问题:

我需要在反向代理后面的服务器上的子uri或上下文根路径上托管rails app,这样当用户导航到网站时,根路径的url如下所示:

  • server-name.foo.dev/rails_app,其中rails_app将成为rails app的根目录。

我如何在启用了nginx站点的配置文件中进行设置,并且我需要在rails应用程序上修改任何内容以允许它切断到静态内容的正确路径。

1 个答案:

答案 0 :(得分:1)

我强烈建议使用Unicorn而不是Passenger。 您可以将它们(Unicorn和Nginx)设置为反向代理。 This link对你来说将是一篇非常好的论文..

再一次,您将(Nginx路由功能)/ rails_app重写为rails应用程序的Unicorn套接字文件(通常使用上游)。

另见下面的代码片段。

部分nginx.conf

location ~* ^/(rails_app)/ {
  root   /your/rails/home;
  index  index.html index.htm;
  proxy_pass http://socket_proxy_name;
}

proxy_pass的部分代码段

upstream socket_proxy_name{
  server unix:/your/socket/paht.sock fail_timeout=0;
}