8

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


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

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

4

5 回答 5

9

对于仍然对此感到困惑的任何人,我相信最简单和最正确的方法是在 config/application.rb 中添加以下内容:

config.middleware.delete(Rack::Runtime)

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

更新:

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

Rails.application.config.middleware.delete(Rack::Runtime)
于 2014-01-14T04:57:11.830 回答
7

原来它没有被设置在 Nginx 或乘客中。

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

于 2009-06-12T10:40:32.520 回答
5

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

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

于 2010-09-08T09:39:10.150 回答
3

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

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

# a2enmod headers

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

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

该指令可用于全局级别和单个虚拟服务器

于 2009-06-13T19:19:46.163 回答
2

以下是针对 Apache 的。我没有正确阅读问题。:)

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

Header always unset "X-Runtime"

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

Header always unset "X-Powered-By"
于 2009-06-12T01:39:57.157 回答