【问题标题】:Passenger crash when trying to use https尝试使用 https 时发生乘客崩溃
【发布时间】:2023-03-31 17:38:01
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我想这就是我要做的,但是你是如何设置你的开发环境的?
      • 我的开发环境在一个单独的服务器上(在本地网络上)和一个没有 https 的不同 apache 配置。但是您可以在同一台服务器上只拥有两台虚拟主机,一台使用 SSL,另一台不使用。
      猜你喜欢
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 2011-12-30
      相关资源
      最近更新 更多