编辑——我在下面发布的解决方案可能适用于任何服务器(Nginx/Apache/其他任何东西),因为这个标头是在 Rails 本身中设置的。
任何人都知道可以在 Nginx 和Passenger 中删除“X-Runtime”标头的位置吗?
我已经 grep 了源文件,但还没有找到任何东西,但为了安全起见,我想摆脱它,因为它是 Rails 的一个明显标志。
编辑——我在下面发布的解决方案可能适用于任何服务器(Nginx/Apache/其他任何东西),因为这个标头是在 Rails 本身中设置的。
任何人都知道可以在 Nginx 和Passenger 中删除“X-Runtime”标头的位置吗?
我已经 grep 了源文件,但还没有找到任何东西,但为了安全起见,我想摆脱它,因为它是 Rails 的一个明显标志。
对于仍然对此感到困惑的任何人,我相信最简单和最正确的方法是在 config/application.rb 中添加以下内容:
config.middleware.delete(Rack::Runtime)
所有其他方法似乎都没有禁用标题,而是从输出中过滤它。这是针对rails4的,不确定是否适用于其他版本。
更新:
初始化程序文件中的以下代码可能更健壮,因为 Rack::Runtime 中间件的存在可能由其他一些组件假定。
Rails.application.config.middleware.delete(Rack::Runtime)
原来它没有被设置在 Nginx 或乘客中。
它位于 /gems/actionpack-2.3.2/lib/action_controller/ 的 benchmarking.rb 中,第 90 行。
我知道这是一个老问题,但因为问题仍然存在,而且许多网站仍然公开它的乘客和 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';
在 Apache 中,您可以使用mod_headers从响应(或与此相关的请求)中删除任何标头。
要删除您需要启用模块的标头:
# a2enmod headers
然后你可以使用 Header 指令的 unset 选项来取消设置它们:
Header unset X-Runtime
Header unset X-Powered-By
该指令可用于全局级别和单个虚拟服务器
以下是针对 Apache 的。我没有正确阅读问题。:)
启用 headers 模块,mod_headers
并将以下内容添加到 Apache 的配置中
Header always unset "X-Runtime"
您可能还想删除X-Powered-By
标题,因此也添加以下内容。
Header always unset "X-Powered-By"