2013-05-17 12 views
5

Ho un'app Rails in esecuzione su nginx 1.2.0 e sul passeggero 3.0.7. Desidero visualizzare le pagine di errore personalizzate nell'app per i rails (ad es. /rail_app/public/500.html) quando si verifica l'errore http appropriato all'interno dell'app.app per rails su nginx + passeggero che non mostra pagine di errore personalizzate

Ecco il mio attuale file di configurazione di nginx:

http { 
    passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7; 
    passenger_ruby /usr/bin/ruby; 

    include  mime.types; 
    default_type application/octet-stream; 

    #access_log /opt/nginx/logs/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    server { 
     listen 80; 
     server_name localhost; 
     root /var/www/dashboard/current/public; 
     passenger_enabled on; 
     passenger_min_instances 1; 
#  listen 443; 
#  ssl on; 
#  ssl_certificate /opt/nginx/conf/server.crt; 
#  ssl_certificate_key /opt/nginx/conf/server.key; 
     error_page 500 502 503 504 /500.html; 
     location = /500.html { 
      root /var/www/dashboard/current/public/; 
     } 
    } 
} 

Questa configurazione non mostra la pagina di errore cliente rotaie app piuttosto solo invia il codice di stato di errore HTTP al client.

Qualcuno sa cosa serve per avere nginx/passeggero inviare la pagina di errore personalizzata dell'app per rails al client con il codice di errore dell'errore http?

risposta

0

La configurazione che uso:

error_page 500 502 503 504 /50x.html; 

location = /50x.html { 
    root html; 
} 
+0

Benjamin, grazie per la risposta. L'ho provato e non ha funzionato. Ecco un piccolo dettaglio in più su cosa sto cercando di realizzare: quando il database è inattivo ... voglio che l'app per i binari visualizzi la pagina di errore 500 personalizzata invece di inviare semplicemente http 500 al client. Forse dovrei prendere l'eccezione activerecord? solo non sono sicuro di come. – Rafael

+0

Errore nel registro prod: '/! \ FAILSAFE /! \ Fri 14 giugno 10:29:18 -0400 2013 Stato: 500 Errore interno server Impossibile connettersi al server MySQL su '169.254.1.51' (113) /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.17/lib/active_record/connection_adapters/mysql_adapter.rb:620:in 'real_connect'' – Rafael

1

prova le seguenti:

# We use the x just because it is for all 5xx errors. 
error_page 500 502 503 504 /5xx.html; 
location = /5xx.html { 
    alias /var/www/dashboard/current/public/; 
} 

Riconfigurazione della direttiva root non ha senso, in quanto è già impostato sul percorso specificato prima. Lo alias assicura che la posizione specifica sia allineata internamente a un'altra posizione sul file system. Tutti i parametri delle richieste in entrata dovrebbero essere passati e se la tua app Rails si sta occupando delle cose a questo punto dovrebbe rispondere. Assicurati che l'app Rails non risponda ancora con lo stato 500 (non so cosa succederebbe allora).

Collegamenti

1

Probabilmente stai mancanti passenger_intercept_errors on; nella configurazione nginx

vedono la passenger docs di questa direttiva per ulteriori informazioni

Problemi correlati