2011-12-01 13 views
6

Obecnie, jeśli wystąpił problem z uruchomieniem aplikacji Rails na naszym serwerze, użytkownicy są przekierowywani na stronę błędu pasażera z błędem podobnym do "Nie można uruchomić aplikacji Ruby (Rack)".Zmiana domyślnej strony błędu pasażera dla Nginx

Czy można dostosować tę stronę błędów i wyświetlić coś innego, aby użytkownicy witryny na żywo tego nie widzieli?

Używam nginx dla serwera.

Dzięki

+0

Możesz opublikować config Nginx? –

+0

@ DevinM - jest to ogólna konfiguracja aplikacji szyny. – stringo0

Odpowiedz

1

Podczas testowania Passenger 5.1, stwierdziłem, że ustawienie passenger_friendly_error_pages off nie wystarczy, aby zmienić domyślną stronę błędu. Spowoduje to wyłączenie wyświetlania wstecznego lub zmiennych środowiskowych, ale nadal pokazuje stronę błędu Pasażera.

Do tego musiałem rozwiązać ustawienie następujących elementów:

passenger_intercept_errors on; 
error_page 500 /500.html; 

Komenda passenger_intercept_errors mówi nginx do obsługi kodów stanu wynosi 400 lub więcej. Komenda error_page dostosowuje błąd. Możesz również dostosować inne błędy.

W przypadku aplikacji Railsowej lokalizacja stron odnosi się do folderu public aplikacji (co ustawiono w poleceniu root dla nginx).

Jak wspomniano jest this comment, podobna konfiguracja Apache:

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

users guide zawiera kilka dobrych informacji na temat różnych opcji konfiguracyjnych. Jest option to disable the friendly error pages, co jest chyba tym, co widzisz.

Aby wyłączyć komunikat startowy określić następującą linię w pliku konfiguracyjnym:

passenger_friendly_error_pages off 

można umieścić wewnątrz tego bloku http, blok serwera lub lokalizacji bloku. Jeśli umieścisz go w bloku http, domyślnie zostanie on wyłączony dla wszystkich hostów wirtualnych na tym serwerze. Możesz jednak przesłonić ustawienie w bloku serwera, umieszczając tę ​​samą opcję wewnątrz bloku http.

+0

Co jest wyświetlane zamiast wyłączyć przyjazne strony błędów? Czy informacje o błędach nadal są rejestrowane gdzieś na moim serwerze? Co powiesz na wyświetlenie niestandardowej strony błędu (np. Failwhale twittera)? – Bee

+0

Pszczoła, błąd powinien pojawić się w pliku nginx error.log. Następnie potrzebujesz standardowej strony 500, którą możesz skonfigurować przez nginx. –