尝试使用https时乘客崩溃

时间:2009-04-18 18:01:52

标签: ruby-on-rails ssl passenger shared-hosting

我在共享主机帐户上使用ssl_requirements插件。此托管服务提供商使用Passenger来管理Rails。一切正常,直到我尝试转到需要ssl的页面(通过添加ssl_required过滤器强制执行)。发生这种情况时,Passenger崩溃并发回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发现该用户未使用正确的协议并将其重定向到使用https的网址。
  4. Passenger收到此请求并尝试生成新的rails应用程序。
  5. 当它使用spawn_application方法时,会遇到错误并崩溃
  6. 问题是我不知道问题出在哪里。我不认为它可能是https的问题,因为我可以手动输入https前缀,事情将正常工作。我认为问题在于ssl_requirement插件或者乘客处理这个新的https请求的方式。

    你们有没有遇到过这样的情景?如果是这样,你能指出一些资源来解决这个问题吗?

    感谢。

2 个答案:

答案 0 :(得分:1)

您可能会收到Passenger错误,因为DreamHost因使用太多内存而导致您的应用被杀。

鉴于您正在使用spawn,这可能就是原因 - spawn会创建一个全新的Rails进程。

尝试做一些不涉及产生新应用实例的事情。但我敢打赌,这不是SSL的问题。

答案 1 :(得分:0)

您是否可以访问自己的虚拟主机Apache配置?如果是这样,那么我建议您将其配置为使用Redirect指令从http URL重定向到https URL,而不是使用ssl_requirement。我已经这样做了,有了乘客,事情就好了。 (因此,乘客处理https或ssl没有问题。我的猜测是ssl_requirement插件和Passenger之间存在一些不兼容。)