2011-12-01 12 views
6

Attualmente se c'è un problema di lanciare un'applicazione Rails sul nostro server, gli utenti sono prese a una pagina di errore del passeggero con un errore come "Ruby (Rack) domanda non potrebbe essere avviato".Cambiare passeggeri predefinito pagina di errore per Nginx

E 'possibile personalizzare la pagina di errore e visualizzare qualcos'altro modo che gli utenti di un sito dal vivo non vedono questo?

Sto usando nginx per il server.

Grazie

+0

potete inserire la vostra configurazione Nginx? –

+0

@DevinM - è una configurazione generica dell'app rotaia. – stringo0

risposta

1

Nei test passeggeri 5.1, ho scoperto che l'impostazione passenger_friendly_error_pages off non è sufficiente per cambiare la pagina di errore di default. Questo disabilita l'esposizione di backtrace o variabili d'ambiente, ma mostra comunque la pagina di errore di Passenger.

Per risolvere questo ho dovuto impostare la seguente:

passenger_intercept_errors on; 
error_page 500 /500.html; 

Il comando passenger_intercept_errors dice nginx per gestire codici di stato di 400 o superiore. Il comando error_page personalizza l'errore. Potresti voler personalizzare anche altri errori.

Per un'applicazione Rails, la posizione delle pagine è relativa alla cartella public dell'app (cosa impostato nel comando root per nginx).

Come accennato è this comment, la configurazione simile per Apache è:

PassengerErrorOverride on 
ErrorDocument 500 /path/to/500.html 
9

Il users guide contiene alcune buone informazioni sulle varie opzioni di configurazione. C'è uno option to disable the friendly error pages che è quello che penso tu stia vedendo.

Per disattivare il messaggio di errore all'avvio di specificare la seguente riga nel file di configurazione:

passenger_friendly_error_pages off 

È possibile inserire questo all'interno del blocco blocco http, blocco del server o posizione. Se lo inserisci nel blocco http, lo disabiliterà per impostazione predefinita per tutti gli host virtuali su quel server. Tuttavia, è possibile sovrascrivere l'impostazione nel blocco del server posizionando la stessa opzione all'interno di un blocco http.

+0

Cosa viene mostrato invece se spengo le pagine di errore "amichevoli"? Le informazioni sull'errore sono ancora registrate da qualche parte sul mio server? Che dire invece di mostrare una pagina di errore personalizzata (ad esempio la failwhale di Twitter)? – Bee

+0

Bee, l'errore dovrebbe apparire nel tuo error.log nginx. Quindi hai solo bisogno di una pagina standard di 500, che puoi configurare tramite nginx. –

Problemi correlati