#ruby-on-rails #ruby #nginx
#ruby-on-rails #ruby #nginx
Вопрос:
Я новичок в Rails и Nginx. Меня попросили добавить пользовательские страницы ошибок в наше приложение. Я нашел инструкции для этого на этом сайте, и мои пользовательские страницы ошибок отлично отображаются локально. Когда я перехожу к URL /no_such_page
-адресу, я вижу соответствующую страницу. Когда я развертываю код на нашем тестовом сервере под управлением nginx и пытаюсь использовать тот же URL-адрес, вместо этого я вижу следующее:
500 Внутренняя ошибка сервера Если вы являетесь администратором этого веб-сайта, пожалуйста, прочитайте файл журнала этого веб-приложения и / или файл журнала веб-сервера, чтобы узнать, что пошло не так. `
На сервере nginx, если я перехожу по URL 404
, я вижу свою страницу, поэтому я знаю, что она отображается нормально. И мой локальный компьютер, и сервер работают в development
среде.
Я добавил это в configdevelopment.rb
:
config.consider_all_requests_local = false
config.exceptions_app = self.routes
Вот что я добавил к routes.rb
:
%w(404 500).each do |code|
get code, to: "errors#show", :code => code, :via => :all
end
и мой errors_controller выглядит так:
class ErrorsController < ApplicationController
def show
status_code = params[:code] || 500
render status_code.to_s
end
end
Кто-нибудь знает, есть ли что-то особенное, что мне нужно сделать в моей конфигурации nginx, чтобы заставить это работать?
Ответ №1:
500 Внутренняя ошибка сервера Если вы являетесь администратором этого веб-сайта, пожалуйста, прочитайте файл журнала этого веб-приложения и / или файл журнала веб-сервера, чтобы узнать, что пошло не так.
Это сообщение об ошибке от самого Rails, а не от Nginx.
Это означает, что ваша пользовательская страница ошибок сама вызывает исключение, что приведет к бесконечному циклу ошибка-> показать страницу ошибки-> ошибка-> показать страницу ошибки->… Rails обнаруживает это и останавливается с сообщением об ошибке, которое вы видите. Проверьте в своих журналах эту строку, чтобы узнать, в чем ошибка:
Error during failsafe response:
Комментарии:
1. Спасибо, Мэтт! Я думаю, я был пойман на том факте, что он работал локально, а не на сервере, поэтому я обвинял nginx. Я нашел свои журналы ошибок
var/log/nginx
, которые указали мне на то, что я упускал из виду. Теперь все готово.