4

我们需要在服务器上部署一个rails 3.2.12 appto 。有3 个,其中一个用于用户身份验证。主应用程序的根指向 authentify 的登录页面。这是主应用程序中的 routes.rb :sub uri nbhyubuntu 12.04rails appenginesauthentify

  root :to => "authentify::sessions#new"
  match '/signin',  :to => 'authentify::sessions#new'
  match '/signout', :to => 'authentify::sessions#destroy'
  match '/user_menus', :to => 'user_menus#index'
  match '/view_handler', :to => 'authentify::application#view_handler'

该应用程序部署到基于 urinbhy运行ubuntu 12.04passenger and nginx. 在同一台服务器上,另一个 Rails 应用程序在其自己的子 uri 中运行。这是 nginx.conf 中的配置sub uri nbhy

server {
   listen 80;
   server_name 6.95.225.93;
   root /var/www/;
   passenger_enabled on;
   rails_env production;
   passenger_base_uri /by;
   passenger_base_uri /nbhy;

   #for rails >=3.1, assets pipeline
   location ~ ^/assets/ {
     expires max;
     add_header Cache-Control public;
     add_header ETag "";
     break;
   }
}

在指向 时symlink nbhy也创建了a 。这是的输出:document root /var/www/var/www/nbhyop/current/publicroot /var/www/

total 8
lrwxrwxrwx 1 cjadmin www-data   28 Nov  3  2012 by -> /var/www/byop/current/public
drwxrwsr-x 4 cjadmin www-data 4096 Nov  4  2012 byop
lrwxrwxrwx 1 cjadmin www-data   30 May 16 21:27 nbhy -> /var/www/nbhyop/current/public
drwxrwsr-x 4 cjadmin www-data 4096 May 14 15:21 nbhyop

byfirst部署到的rails应用程序sub URI并且工作正常。

login page键入后显示http://6.95.225.93/nbhy。输入用户名和密码后,页面被重定向到http://6.95.225.93/authentify/session错误404 Not Found。在 中发现错误nginx error.log

2013/05/13 16:29:25 [error] 2384#0: *1 open() "/var/www/authentify/session" failed (2: No such file or directory), client: 192.168.1.1, server: 6.95.225.93, request: "POST /authentify/session HTTP/1.1", host: "6.95.225.93", referrer: "http://6.95.225.93/nbhy/"

显然/var/www/authentify/session不会打到正确的页面,因为它缺少base uri nbhy介于wwwand之间authentify。根据我们的分析,即使用户名和密码正确,用户也没有被命中,用户也没有通过身份create验证。authentify session controllerhttp://6.95.225.93/nbhy

还发现用户可以loginhttp://6.95.225.93/nbhy/authentify/session/new一些扭曲。登录后,页面将被重定向到http://6.95.225.93/user_menus会抛出404 Not Found错误的页面。但是,如果我们在两者之间插入nbhy: http://6.95.225.93/nbhy/user_menus,那么它将user menus page成功启动。对于任何进一步点击链接,手动插入nbhy将使链接工作(如果nbhy丢失)。

在没有sub uri.

为什么路由中缺少 sub uri?有没有办法让我们nbhy留在这里并消除错误?感谢帮助。

4

2 回答 2

2

引擎很可能authentify正在重定向到/user_menus,而不是/nbhy/authentify。这是您编写的自定义 Rails 或 Sinatra 应用程序吗?如果是这样,您需要更改/配置代码authentify以始终附加托管 Rails 应用程序的当前子目录。您可以通过ENV['RAILS_RELATIVE_URL_ROOT']在代码中说明来从乘客那里得到它。

于 2013-05-19T20:50:10.863 回答
1

Rails 直接从而http://6.95.225.93不是生成路径http://6.95.225.93/nbhy

您可能需要将所有路由范围限定为“/nbhy”。

配置/路由.rb

scope "/nbhy" do
  ...
end
于 2013-05-17T13:13:26.950 回答