我们需要部署一个rails 3.2.12 app
to sub uri nbhy
on a ubuntu 12.04
服务器。这rails app
has 3 engines
其中之一是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'
该应用程序已部署到基本 urinbhy
运行于ubuntu 12.04
with 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;
}
}
Also a 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
The by
is the first
Rails 应用程序部署到sub URI
并且工作正常。
The login page
输入后显示http://6.95.225.93/nbhy
。输入用户名和密码后,页面被重定向到http://6.95.225.93/authentify/session
with 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
and authentify
。根据我们的分析,create
in authentify session controller
尚未被击中,即使使用正确的用户名和密码,用户也尚未通过身份验证http://6.95.225.93/nbhy
.
还发现用户可以login
at 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
留在这里并消除错误?感谢帮助。