【问题标题】:Disable the Phusion Passenger (Standalone) error page on AWS Elastic Beanstalk?在 AWS Elastic Beanstalk 上禁用 Phusion Passenger (Standalone) 错误页面?
【发布时间】:2014-07-14 19:17:43
【问题描述】:

将应用程序部署到 Elastic Beanstalk 时,是否可以禁用 Phusion Passenger (Standalone) 显示的错误页面?尤其是在生产中。此页面包含堆栈跟踪以及暴露的环境变量......在我看来这很危险。

重现这种情况的快速方法是引入语法错误(这不是唯一的方法)。

我可以see here (link) 说这是可能的......只是不确定你会如何在 EB 上做同样的事情。为避免将来出现断开的链接,我将在这里引用对话......一个人问:

我似乎记得在某处读过可以禁用 乘客引导错误页面显示您是否缺少宝石等。如果我 没记错,我认为 Phusion 的人说的是 生产环境中的默认行为是抑制 这个错误页面显示堆栈跟踪等。有没有办法 使用当前版本的 Passenger 禁用此错误页面?

其中一个 Phusion 人回复了...

现在您可以在 lib/phusion_passenger/模板。所有错误也会记录到网络上 服务器日志文件。

虽然响应是一个积极的信号,但它并不能真正解决我的问题......这是如何在 EB 上做到的,我们都(几乎)知道 EB 比你的典型自我更严格管理服务器。

【问题讨论】:

    标签: amazon-web-services passenger amazon-elastic-beanstalk


    【解决方案1】:

    您需要添加一个Passenger 指令,以防止Passenger 暴露有关您的Web 服务器的潜在可利用详细信息。这样做的方法是在您的 Web 服务器配置中添加一个指令,以防止乘客显示回溯和转储您的用户的环境变量。例如,如果您的 Rails 应用程序是使用 Apache 部署的,那么您只需在 Virtualhost 配置块中添加以下指令

    <VirtualHost *:80>
      ...
      PassengerFriendlyErrorPages off
    

    至于 AWS EBS,我对它不是特别熟悉,但通过 Google 的快速搜索发现,您必须将此配置放入您的 Apache Vhosts 配置中,该配置位于 .ebextensions 目录中。您可能已经这样做了,因为您已经成功部署了您的应用程序。为了他人的利益,我无论如何都会展示它。例如,如果您使用的是 Apache,您可能在 .ebextensions/vhosts.config 下有类似的内容

    files:
      "/etc/httpd/conf.d/vhosts.conf":
        mode: "000644"
        owner: root
        group: root
        encoding: plain
        content: |
          NameVirtualHost *:80
    
          <VirtualHost *:80>
            ServerName www.example.com
            ServerAlias example.com
            DocumentRoot /var/www/ruby/example/
          </VirtualHost>
    
          PassengerFriendlyErrorPages off
    

    更新:您可以找到关闭“友好错误页面”的文档here

    【讨论】:

    • 感谢您的回复。道歉......刚刚意识到我不清楚我正在使用的类型。我已经更新了 Q 以反映这一点,我使用的是Passenger Standalone 版本......不是 Nginx 的Passenger 或Apache 的Passenger。不过…….ebextensions 评论给了我一个想法。
    • 如果您使用Passenger Standalone,仍然可以这样做。我已经在我的回答中链接了这方面的文档。
    • 抱歉,这行不通。 Phusion Passenger 的核心仍然使用 Nginx(所以没有 Apache 配置)。我早上一直在阅读这篇文章,但你指出了我正确的方向。这里有很多关于 Phusion Passenger 的配置 modrails.com/documentation/… ...除了在命令行传递参数之外,还有两种方法... 1)在应用程序的根目录使用 passenger-standalone.json 文件或 2)编辑用于生成与您为 Apache 共享的 Nginx 等效的模板。
    • 我的错,我链接了错误的文档。我链接的那个是特定于 Apache 的。希望你能明白。
    • 我一直在查看我的实例,它是运行 Ruby 2.0(Passenger Standalone)的 64 位 Amazon Linux 2014.03 v1.0.2。在 /opt/elasticbeanstalk/support/conf/passenger 文件中,我看到了# Disable passenger friendly page for production stage STARTOPTS="$STARTOPTS --no-friendly-error-pages",它看起来好像它已经在尝试做你想做的事了?它仅适用于production
    猜你喜欢
    • 2014-08-26
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2017-01-22
    • 2021-11-26
    • 1970-01-01
    • 2016-06-05
    相关资源
    最近更新 更多