【问题标题】:How to remove "X-Runtime" header from Nginx/Passenger?如何从 Nginx/Passenger 中删除“X-Runtime”标头?
【发布时间】:2010-11-02 08:20:36
【问题描述】:

编辑 -- 我在下面发布的解决方案可能适用于任何服务器(Nginx/Apache/其他任何东西),因为此标头是在 Rails 本身中设置的。


有人知道可以在 Nginx 和Passenger 中删除“X-Runtime”标头的位置吗?

我已经 grep 了源文件,但还没有找到任何东西,但为了安全起见,我想删除它,因为它是 Rails 的一个明显标志。

【问题讨论】:

  • 我很确定 X-Runtime 不是由 nginx 设置的。我建议你检查乘客来源。
  • 我在问问题之前对这两个来源都进行了搜索,但都没有看到任何内容。

标签: ruby-on-rails security http-headers nginx passenger


【解决方案1】:

对于那些还在纠结这个问题的人,我相信最简单和最正确的方法是在 config/application.rb 中添加以下内容:

config.middleware.delete(Rack::Runtime)

所有其他方法似乎都没有禁用标题,而是从输出中过滤它。这是rails4的,不知道是否适用于其他版本。

更新:

初始化程序文件中的以下代码可能更健壮,因为其他一些组件可能假定存在 Rack::Runtime 中间件。

Rails.application.config.middleware.delete(Rack::Runtime)

【讨论】:

  • 这给了我这个错误:Exiting /Users/ryan/.rvm/gems/ruby-2.1.2@wpvulndb/gems/actionpack-4.1.5/lib/action_dispatch/middleware/stack.rb:125:in `assert_index': No such middleware to insert before: "Rack::Runtime" (RuntimeError) in Rails 4.1.5
  • 也许有一些代码试图在 Rack::Runtime 之前插入一些东西并假设它在中间件列表中。你可以在初始化文件中尝试这个,这应该可以回避这个问题:Rails.application.config.middleware.delete(Rack::Runtime)
【解决方案2】:

原来它没有在 Nginx 或Passenger 中设置。

它位于 /gems/actionpack-2.3.2/lib/action_controller/ 的 benchmarking.rb 中,第 90 行。

【讨论】:

    【解决方案3】:

    我知道这是一个老问题,但是因为问题仍然存在,而且许多网站仍然公开它的乘客和 nginx 版本,所以我给出的答案对我来说非常有效。相同的解决方案适用于 X-Runtime 标头。

    只需安装第 3 方 ngx_headers_more:http://github.com/agentzh/headers-more-nginx-module(您必须从源代码重建它)。添加到您的配置中(我为它创建了 /etc/nginx/conf.d/security.conf ): server_tokens 关闭; more_clear_headers '服务器' 'X-Powered-By' 'X-Runtime';

    【讨论】:

      【解决方案4】:

      在 Apache 中,您可以使用 mod_headers 从响应(或与此相关的请求)中删除任何标头。

      要删除您需要启用模块的标题:

      # a2enmod headers
      

      然后您可以使用 Header 指令的 unset 选项来取消设置它们:

      Header unset X-Runtime
      Header unset X-Powered-By
      

      该指令既可以在全局级别使用,也可以用于单个虚拟服务器

      【讨论】:

        【解决方案5】:

        以下内容适用于 Apache。我没有正确阅读问题。 :)

        启用 headers 模块,mod_headers,并将以下内容添加到 Apache 的配置中

        Header always unset "X-Runtime"
        

        您可能还想删除 X-Powered-By 标头,因此也添加以下内容。

        Header always unset "X-Powered-By"
        

        【讨论】:

          猜你喜欢
          • 2018-03-10
          • 1970-01-01
          • 2017-07-21
          • 2012-04-20
          • 1970-01-01
          • 2015-09-19
          • 1970-01-01
          • 1970-01-01
          • 2018-02-23
          相关资源
          最近更新 更多