我们需要在服务器上部署一个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.04的passenger 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
这by是first部署到的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
还发现用户可以login在http://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留在这里并消除错误?感谢帮助。