2016-10-03 5 views
0

Ich bin neu in Rails und Nginx. Ich wurde gebeten, benutzerdefinierte Fehlerseiten zu unserer App hinzuzufügen. Ich habe auf dieser Site Anweisungen dazu gefunden, und meine benutzerdefinierten Fehlerseiten werden lokal gut wiedergegeben. Wenn ich auf die URL /no_such_page gehe, sehe ich die entsprechende Seite. Wenn ich den Code zu unserem Test-Server ausgeführt wird nginx implementieren und die gleiche URL versuchen, sehe ich folgendes statt:Rails benutzerdefinierte Fehlerseiten werden nicht auf Nginx

500 Internal Server Error Wenn Sie der Administrator dieser Website sind, dann lesen Sie bitte die Log-Web-Anwendung Datei und/oder die Protokolldatei des Web-Servers, um herauszufinden, was wrong.` gingen

auf dem nginx-Server, wenn ich auf die uRL gehe \404, dann kann ich meine Seite sehen, so dass ich weiß, dass es in Ordnung macht. Sowohl mein lokaler Rechner als auch der Server laufen unter der development Umgebung.

Ich habe das hinzugefügt config\development.rb:

config.consider_all_requests_local = false 
config.exceptions_app = self.routes 

Hier ist, was ich zu routes.rb hinzugefügt:

%w(404 500).each do |code| 
    get code, to: "errors#show", :code => code, :via => :all 
end 

und meine errors_controller sieht wie folgt aus:

class ErrorsController < ApplicationController 
    def show 
     status_code = params[:code] || 500 
     render status_code.to_s 
    end 
end 

Weiß jemand, ob es etwas Besonderes gibt, das ich in meinem nginx co machen muss? nfig, damit das funktioniert?

Antwort

2

500 Interner Serverfehler Wenn Sie der Administrator dieser Website sind, lesen Sie bitte die Protokolldatei dieser Webanwendung und/oder die Protokolldatei des Webservers, um herauszufinden, was falsch gelaufen ist.

Diese Fehlermeldung stammt von Rails selbst, nicht von Nginx.

https://github.com/rails/rails/blob/v5.0.0.1/actionpack/lib/action_dispatch/middleware/show_exceptions.rb#L15-L22

Es bedeutet, dass Ihre benutzerdefinierte Fehlerseite ist selbst eine Ausnahme erhöhen, was zu einer Endlosschleife von fehler- führen würde> show Fehler page-> error-> zeigen Fehlerseite -> ... Rails erkennt dies und stoppt mit der Fehlermeldung, die Sie sehen. Überprüfen Sie Ihre Protokolle für diese Zeichenfolge, um zu sehen, was der Fehler ist:

Error during failsafe response: 
+0

Vielen Dank Matt! Ich glaube, ich war von der Tatsache überrascht, dass es lokal und nicht auf dem Server funktionierte, also machte ich Nginx verantwortlich. Ich habe meine Fehlerprotokolle in 'var/log/nginx' gefunden, was mich auf etwas aufmerksam machte, das ich übersehen hatte. Alles jetzt eingestellt. – zilla

Verwandte Themen