【问题标题】:Passenger+nginx: Hosting a Rails application in a subdirectoryPassenger+nginx:在子目录中托管 Rails 应用程序
【发布时间】:2010-02-03 01:55:02
【问题描述】:

我正在尝试在 www.myserver.com 下的子目录 /a 中部署一个应用程序,按照这里的乘客文档中的步骤操作: http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri

这似乎可行,但 Rails 路由现在都期待额外的子目录 /a,因此尝试访问根目录 www.myserver.com/a 会给我一个 RoutingError。我试过设置relative_url_root,但这并没有改变。是否需要在路由文件中的每条路由中添加前缀 /a?

【问题讨论】:

  • 我知道,我知道,这是基本的,但是你添加'relative_url_root'后是否重启了nginx?
  • btelles 的指令确实有效:最终问题是由 gem 'reverse_proxy_fix' 和 Rails 之间的不良交互引起的。

标签: ruby-on-rails nginx passenger subdirectory


【解决方案1】:

嗯...对我来说一切似乎都很好。刚试了一下。

您确定您遵循的是 Nginx 说明而不是 Apache 说明吗?

确保您执行软链接并更改“根”应用程序...说明说使其成为绝对路径减去“公共”部分:

http { ...

server {
    listen 80;
    server_name g.local;
    root /home/bernie/development/test;  <- forgot to change this the first time I tried
    passenger_enabled on;   
    passenger_base_uri /rails; 
}

...

}

这是最终结果的图像...无需修改路线:

alt text http://img190.imageshack.us/img190/8898/32380822.png

这里是 Nginx 指令:

http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_rails_to_sub_uri

【讨论】:

  • 如果我理解他的问题,他希望在根应用程序下有一个 Rails 应用程序,而不是更改路径根应用程序添加一个多余的目录名称。例如,如果您想在 www.myhost.com 下托管几个不同的应用程序,例如 www.myhost.com/app1 www.myhost.com/app2 www.myhost.com/app3,它们都是不同的 Rails 应用程序。您的回答没有解决这个问题,而是不必要地向根 URL 添加了额外的路径。
猜你喜欢
  • 2021-10-09
  • 1970-01-01
  • 2016-06-21
  • 2015-01-30
  • 1970-01-01
  • 2020-03-25
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多