Rails 4:在带有Passenger / NGINX的子URI应用程序中使用区域设置

时间:2014-09-01 16:11:14

标签: ruby-on-rails passenger rails-routing

我的应用程序位于子URI http://myhost/app2中。我很难搞清楚如何为此配置正确的区域设置路由。

我已经把它放在routes.rb中我试过了两个:

Rails.application.routes.draw do
  get '' => redirect("/#{I18n.default_locale}")
  scope "/:locale", locale: /#{I18n.available_locales.join("|")}/ do
    root 'index#home'
  end
end

以及:

Rails.application.routes.draw do
  prefix = Rails.application.config.relative_url_root
  get "#{prefix}" => redirect("#{prefix}/#{I18n.default_locale}")
  scope "#{prefix}/:locale", locale: /#{I18n.available_locales.join("|")}/ do
    root 'index#home'
  end
end

在我的production.rb文件中,我有:config.relative_url_root = "/app2"

我的nginx.conf文件(取自Phusion Passenger docs):

http {
  ...
  server {
    ...
    location ~ ^/app2(/.*|$) {
      alias /home/dani/app2/public$1;
      passenger_base_uri /app2;
      passenger_app_root /home/dani/app2/;
      passenger_document_root /home/dani/app2/public/;
      passenger_enabled on;
    }
  }
}

当我尝试在生产中访问http://myhost/app2时,我会收到一个Rails错误页面,上面写着"您正在寻找的页面不存在。"

我的production.log文件对于我提出的每个请求都是这样的:

I, [2014-09-01T12:22:56.050499 #15230]  INFO -- : Started GET "/app2" for myipaddress at 2014-09-01 12:22:56 -0400

我查看了nginx access.log文件,我看到以下内容:

[01/Sep/2014:12:26:04 -0400] "GET /app2 HTTP/1.1" 301 91 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Firefox/31.0"
[01/Sep/2014:12:26:04 -0400] "GET /en HTTP/1.1" 404 1351 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Firefox/31.0"

因此,从/app2/en的重定向正在发生,但myhost/en无法解析此设置上的任何内容,它应为myhost/app2/en。 任何建议都会有所帮助。

注意:开发过程中一切正常。

0 个答案:

没有答案