Вопрос

Я использую плагин 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

Вот базовый сценарий:

  1. Пользователь использует http для просмотра конфиденциальных данных.
  2. Пользователь переходит к форме регистрации (где требуется https)
  3. Ssl_requirement видит, что пользователь не использует соответствующий протокол, и перенаправляет его на URL, который использует https.
  4. Пассажир получает этот запрос и пытается создать новое приложение rails.
  5. Когда он использует порождающее приложение метод он обнаруживает ошибку и выходит из строя

Проблема в том, что я не знаю, где возникает проблема.Я не думаю, что это может быть проблемой с 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.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top