404 Not Found-Fehler beim Bereitstellen der Rails 3.2.12-App (mit Motoren) für den SUB-URI auf Nginx / Passenger
Wir müssen ein bereitstellenrails 3.2.12 app
zusub uri nbhy
auf einenubuntu 12.04
Server. Dasrails app
hat 3engines
und einer von ihnen istauthentify
Das ist für die Benutzerauthentifizierung. Das Stammverzeichnis der Hauptanwendung verweist auf die Anmeldeseite der Authentifizierung. Hier ist die routes.rb in der Haupt-App:
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'
Die App wird bereitgestellt, um uri zu stützennbhy
läuft weiterubuntu 12.04
mitpassenger and nginx
. Auf demselben Server läuft eine weitere Rails-App in einer eigenen Unter-URL. Hier ist die Konfiguration in der nginx.conf fürsub 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;
}
}
Auch einsymlink
nbhy
wird erstellt umdocument root
/var/www
zeigt auf/var/www/nbhyop/current/public
. Hier ist die Ausgabe derroot /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
Dasby
ist derfirst
Rails App im Einsatzsub URI
und funktioniert gut.
Daslogin page
wird nach der Eingabe angezeigthttp://6.95.225.93/nbhy
. Nach Eingabe von Benutzer und Passwort wurde die Seite weitergeleitethttp://6.95.225.93/authentify/session
mit404 Not Found
Error. Es wurde ein Fehler in gefundennginx
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/"
Offensichtlich/var/www/authentify/session
wird nicht die richtige Seite treffen, weil es die fehltbase uri
nbhy
zwischenwww
undauthentify
. Basierend auf unserer Analyse, diecreate
imauthentify session controller
wurde nicht getroffen und der Benutzer wurde auch nicht mit dem richtigen Benutzernamen und Passwort bei authentifizierthttp://6.95.225.93/nbhy
.
Finden Sie auch heraus, dass ein Benutzer kannlogin
beimhttp://6.95.225.93/nbhy/authentify/session/new
mit einer gewissen Wendung. Nach dem Login wird die Seite weitergeleitet zuhttp://6.95.225.93/user_menus
was rausschmeißen wird404 Not Found
Error. Jedoch, wenn wir einfügennbhy
dazwischen als:http://6.95.225.93/nbhy/user_menus
, dann wird es das bringenuser menus page
erfolgreich. Für weitere Links klicken, manuell einfügennbhy
Lässt den Link funktionieren (wennnbhy
wird vermisst).
Die Rails-App funktionierte gut, wenn sie ohne bereitgestellt wurdesub uri
.
Warum fehlt die U-Bahn auf der Route? Gibt es einen Weg, wie wir das schaffen können?nbhy
hier bleiben und den fehler beseitigen? Danke für die Hilfe.