Как удалить заголовок «X-Runtime» из Nginx / Passenger? - PullRequest
8 голосов
/ 12 июня 2009

EDIT - решение, которое я разместил ниже, вероятно, применимо к любому серверу (Nginx / Apache / что-нибудь еще), потому что этот заголовок установлен в самом Rails.


Кто-нибудь знает, где можно удалить заголовок "X-Runtime" в Nginx & Passenger?

Я извлек исходные файлы и пока ничего не нашел, но я хотел бы избавиться от него в целях безопасности, поскольку это явный признак Rails.

Ответы [ 5 ]

7 голосов
/ 12 июня 2009

Оказалось, что он не был установлен ни в Nginx, ни в Passenger.

Он находится в benchmarking.rb в /gems/actionpack-2.3.2/lib/action_controller/, строка 90.

5 голосов
/ 08 сентября 2010

Я знаю, что это довольно старый вопрос, но, поскольку проблема все еще существует, и многие сайты по-прежнему представляют ее версию для пассажиров и nginx, я даю ответ, который мне очень подходит. То же решение применимо к заголовку X-Runtime.

Просто установите стороннюю версию ngx_headers_more: http://github.com/agentzh/headers-more-nginx-module (вам нужно перестроить ее из исходного кода). Добавьте в свой конфиг (я создал для него /etc/nginx/conf.d/security.conf): отключение сервера; more_clear_headers 'Сервер' 'X-Powered-By' 'X-Runtime';

4 голосов
/ 14 января 2014

Для тех, кто все еще спотыкается об этом, я считаю, что самый простой и правильный способ сделать это - в config / application.rb, добавив следующее:

config.middleware.delete(Rack::Runtime)

Кажется, что все другие методы не столько отключают заголовок, сколько фильтруют его из вывода. Это для rails4, не уверен, применимо ли это к другим версиям.

Обновление:

Следующий код в файле инициализатора может быть более надежным, поскольку некоторые другие компоненты могут предполагать существование промежуточного программного обеспечения Rack :: Runtime.

Rails.application.config.middleware.delete(Rack::Runtime)
3 голосов
/ 13 июня 2009

В Apache вы можете использовать mod_headers , чтобы удалить любой заголовок из ответа (или запроса по этому вопросу).

Для удаления заголовков необходимо включить модуль:

# a2enmod headers

Затем вы можете использовать опцию unset для директивы Header, чтобы сбросить их:

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

Эта директива может использоваться как на глобальном уровне, так и для отдельного виртуального сервера

2 голосов
/ 12 июня 2009

Следующее для Apache. Я не правильно прочитал вопрос. :)

Включите модуль заголовков mod_headers и добавьте следующее в конфигурацию Apache

Header always unset "X-Runtime"

Возможно, вы также захотите удалить заголовок X-Powered-By, поэтому добавьте также следующее.

Header always unset "X-Powered-By"
...