Сбой пассажира при попытке использовать https
-
11-09-2019 - |
Вопрос
Я использую плагин ssl_requirements в учетной записи общего хостинга.Этот хостинг-провайдер использует Passenger для управления Rails.Все работает нормально, пока я не попытаюсь перейти на страницу, для которой требуется ssl (принудительно путем добавления ssl_required
фильтр).Когда это происходит, пассажир выходит из строя и отправляет обратно сообщение об ошибке 500.Ошибка гласит:
Passenger encountered the following error:
The application spawner server exited unexpectedly: Broken pipe
Exception class:
PhusionPassenger::Railz::ApplicationSpawner::Error
Вот базовый сценарий:
- Пользователь использует http для просмотра конфиденциальных данных.
- Пользователь переходит к форме регистрации (где требуется https)
- Ssl_requirement видит, что пользователь не использует соответствующий протокол, и перенаправляет его на URL, который использует https.
- Пассажир получает этот запрос и пытается создать новое приложение rails.
- Когда он использует порождающее приложение метод он обнаруживает ошибку и выходит из строя
Проблема в том, что я не знаю, где возникает проблема.Я не думаю, что это может быть проблемой с https, потому что я могу вручную ввести префикс https, и все будет работать нормально.Я полагаю, что проблема заключается либо в плагине ssl_requirement, либо в том, как passenger обрабатывает этот новый https-запрос.
Ребята, вы когда-нибудь сталкивались с подобным сценарием?Если да, не могли бы вы указать на некоторые ресурсы для решения этой проблемы?
Спасибо.
Решение
Вероятно, вы получаете ошибку Passenger, потому что DreamHost отключил ваше приложение из-за использования слишком большого объема памяти.
Учитывая, что вы используете spawn, это, вероятно, причина - spawn создает совершенно новый процесс Rails.
Попробуйте сделать что-то, что не связано с созданием нового экземпляра приложения.Однако я бы поспорил, что дело НЕ в SSL.
Другие советы
Есть ли у вас доступ к вашей собственной конфигурации виртуального хостинга Apache?Если это так, то я бы рекомендовал вам настроить перенаправление с URL-адреса http на URL-адрес https с помощью директивы Redirect вместо использования ssl_requirement.Я сделал это с Passenger, и все работает просто отлично.(Таким образом, нет никаких проблем с обработкой пассажиром https или ssl.Я предполагаю, что это некоторая несовместимость между плагином ssl_requirement и Passenger.)