Błąd 404 Not Found podczas wdrażania aplikacji szyny 3.2.12 (z silnikami) do SUB URI na nginx / passenger
Musimy wdrożyć arails 3.2.12 app
dosub uri nbhy
naubuntu 12.04
serwer. Therails app
ma 3engines
i jeden z nich jestauthentify
który służy do uwierzytelniania użytkowników. Główny root aplikacji wskazujący na uwierzytelnianie strony logowania. Oto trasy.rb w głównej aplikacji:
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'
Aplikacja jest wdrażana do podstawowego urinbhy
kontynuowaćubuntu 12.04
zpassenger and nginx
. Na tym samym serwerze działa kolejna aplikacja szyny we własnym sub-uri. Oto konfiguracja w nginx.conf dlasub 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;
}
}
Również asymlink
nbhy
jest tworzony wdocument root
/var/www
wskazując na/var/www/nbhyop/current/public
. Oto wyjścieroot /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
Theby
jestfirst
aplikacja szyny wdrożona wsub URI
i działa dobrze.
Thelogin page
jest wyświetlany po wpisaniuhttp://6.95.225.93/nbhy
. Po wprowadzeniu klucza użytkownika i hasła strona została przekierowana dohttp://6.95.225.93/authentify/session
z404 Not Found
błąd. Wystąpił błąd wnginx
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/"
Oczywiście/var/www/authentify/session
nie trafi na właściwą stronę, ponieważ brakuje jejbase uri
nbhy
pomiędzywww
iauthentify
. Na podstawie naszej analizycreate
wauthentify session controller
nie został trafiony, a użytkownik nie został uwierzytelniony nawet przy użyciu prawidłowej nazwy użytkownika i hasłahttp://6.95.225.93/nbhy
.
Dowiedz się także, że użytkownik możelogin
whttp://6.95.225.93/nbhy/authentify/session/new
z pewnym zwrotem akcji. Po zalogowaniu strona zostanie przekierowana dohttp://6.95.225.93/user_menus
który wyrzuci404 Not Found
błąd. Jeśli jednak wstawimynbhy
pomiędzy jako:http://6.95.225.93/nbhy/user_menus
, to spowoduje wyświetlenieuser menus page
z powodzeniem. Aby uzyskać więcej informacji, kliknij linki, ręcznie wstawiającnbhy
sprawi, że link zadziała (jeślinbhy
brakuje).
Aplikacja szyny działała dobrze podczas wdrażania bezsub uri
.
Dlaczego brakuje suburi w trasie? Czy istnieje sposób, w jaki możemy to zrobićnbhy
tu zostać i wyeliminować błąd? Dzięki za pomoc.