0

我在共享主机帐户上使用 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 的 url。
  4. 乘客收到此请求并尝试生成一个新的 Rails 应用程序。
  5. 当它使用spawn_application方法时,它会遇到错误并崩溃

问题是我不知道问题出在哪里。我不认为这可能是 https 的问题,因为我可以手动输入 https 前缀并且一切正常。我认为问题在于 ssl_requirement 插件或乘客处理这个新 https 请求的方式。

大家有遇到过这样的场景吗?如果是这样,您能否指出一些资源来解决这个问题?

谢谢。

4

2 回答 2

1

您可能会收到Passenger 错误,因为DreamHost 因使用过多内存而终止了您的应用程序。

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

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

于 2009-05-20T20:27:46.470 回答
0

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

于 2009-04-22T02:03:20.310 回答