2009-06-12 46 views
8

EDIT - 下面發佈的解決方案可能適用於任何服務器(Nginx/Apache /其他),因爲這個頭文件是在Rails中設置的。如何從Nginx/Passenger中刪除「X-Runtime」頭文件?


任何人都知道的 「X-運行」 頭可在Nginx的&乘客被刪除?

我已經grep的源文件,還沒有發現任何東西,但我想擺脫它的安全性,因爲它是一個Rails的跡象。

+0

我很確定X運行時不是由nginx設置的。我建議你檢查一下乘客的來源。 – 2009-06-12 02:36:11

+0

在問這個問題之前,我同時對兩個來源進行了處理,但沒有看到任何內容。 – fig 2009-06-12 03:01:42

回答

7

原來,它並未在Nginx或Passenger中設置。

這是在/gems/actionpack-2.3.2/lib/action_controller/ benchmarking.rb,線90

1

以下是針對Apache的。我沒有正確地閱讀這個問題。 :)

啓用頭模塊,mod_headers,並添加以下到Apache的配置

Header always unset "X-Runtime" 

您也可能要刪除的X-Powered-By頭所以添加以下了。

Header always unset "X-Powered-By" 
+0

這實際上是Nginx而不是Apache - 謝謝:) – fig 2009-06-12 01:46:30

3

在Apache中可以使用mod_headers以除去從響應任何報頭(或對於該請求物)。

要刪除您需要啓用該模塊的標題:

# a2enmod headers 

然後你可以使用未設置選項FO的頭指令來取消他們:

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

這個指令可以既使用在全球一級和單一的虛擬服務器

5

我知道這是一個古老的問題,但因爲問題仍然存在,許多網站仍然暴露它的乘客和nginx我給出的版本對我來說效果很好。同樣的解決方案適用於X-Runtime頭。

只需安裝第三方ngx_headers_more:http://github.com/agentzh/headers-more-nginx-module(您必須從源重建它)。添加到你的配置(我爲它創建了/etc/nginx/conf.d/security.conf): server_tokens off; more_clear_headers'Server''X-Powered-By''X-Runtime';

3

對於任何人誰是在這仍然磕磕絆絆,我認爲這樣做是在配置/ application.rb中,通過添加以下最簡單,最正確的方法:

config.middleware.delete(Rack::Runtime) 

所有其他方法似乎與其從輸出中過濾掉頭部不如說關閉頭部。這是爲rails4,不知道它是否適用於其他版本。

更新:

在初始化文件下面的代碼可能會更穩健的機架::運行中間件的存在,可能通過一些其他組件來承擔。

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