我们需要部署rails 3.2.12 app
到sub uri nbhy
一上ubuntu 12.04
服务器。 在rails app
有3个engines
,其中之一是authentify
这对用户身份验证。 主要应用程序的根指着Authentify的登录页面。 这里是主要的应用程序的routes.rb中:
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'
该应用程序部署到基础URI nbhy
上运行ubuntu 12.04
与passenger and nginx
。 在同一台服务器,有其自己的子URI运行的另一个Rails应用程序。 这里是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
在创建document root
/var/www
指向/var/www/nbhyop/current/public
。 这里是的输出root /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
应用程序部署到轨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
之间www
和authentify
。 根据我们的分析, create
在authentify session controller
还没有被击中,用户尚未即使在正确的用户名和密码来验证http://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
丢失)。
Rails应用程序,而无需部署时工作得很好sub uri
。
为什么子URI是从路线不见了? 有没有一种方法,我们可以使nbhy
这里留下来,消除错误? 感谢帮助。