стандартный способ отключить заголовок X-powered-by в Passenger? - PullRequest
13 голосов
/ 28 ноября 2011

Я не смог найти способ отключить заголовок X-Powered-By Пассажира:

X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11

Возможно ли это сделать без изменения его источников и без удаления заголовков на уровне HTTP-сервера ?

Ответы [ 5 ]

19 голосов
/ 17 января 2013

В Apache вы можете сбросить заголовки:

# Hide/Remove the Passenger Headers
Header always unset "X-Powered-By"
Header always unset "X-Runtime"

Он не удалит все имена (поскольку службы, такие как Plesk, все равно добавят свое имя), но Пассажир может быть удален таким образом.

Благодарность Джону Трупиано: https://groups.google.com/forum/?fromgroups=#!topic/phusion-passenger/LKAKH0PEyW0

12 голосов
/ 17 января 2014

Краткий ответ: ДА .

обновление: 2018

Использовать proxy_hide_header в нисходящем направлении или использовать more_clear_headers


Оригинальный ответ

Я оставляю тот факт, что я использую nginx + passenger ... но вы можете полностью удалить их с помощью

remove_header X-Header-Name-To-Remove;

Так что вы можете удалить оба с помощью

server {
    ...
    remove_header X-Powered-By;
    remove_header X-Runtime;
    ...
    }

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

..

Вот мои общие директивы, так как я оставляю apacheProd 'эквивалент по моему.

server {
    ...
    remove_header X-Runtime;
    server_tokens off;
    passenger_show_version_in_header off;
    ...
}

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

Server:nginx + Phusion Passenger
X-Powered-By:Phusion Passenger       

Это ближайший эквивалент директивы apache2 ServerTokens Prod, которую я могу сделать.

6 голосов
/ 28 ноября 2011

Краткий ответ: нет.

У пассажира нет опции конфигурации для отключения X-Powered-by, поэтому вам нужно выполнить одно из

  • фильтр
  • редактировать источник
  • monkeypatch

код пассажира:

  #RequestHandler::process_request
  headers_output = [
    STATUS, status.to_i.to_s, CRLF,
    X_POWERED_BY, @passenger_header, CRLF
  ]

  #AbstractRequestHandler::initialize
  @passenger_header   = determine_passenger_header

  #AbstractRequestHandler::determine_passenger_header
  def determine_passenger_header
    header = "Phusion Passenger (mod_rails/mod_rack)"
    if @options["show_version_in_header"]
      header << " #{VERSION_STRING}"
    end
    if File.exist?("#{SOURCE_ROOT}/enterprisey.txt") ||
       File.exist?("/etc/passenger_enterprisey.txt")
      header << ", Enterprise Edition"
    end
    return header
  end
4 голосов
/ 11 сентября 2015

more_clear_headers 'Server' 'X-Powered-By' 'X-Runtime'; работает для меня, как указано в http://www.michaelrigart.be/en/blog/nginx-and-passenger-install-in-production-environment.html.

3 голосов
/ 11 июля 2017

Чтобы полностью удалить заголовки X-Powered-By и Server из Nginx + Passenger, а не просто скрыть версии, добавьте это в свой блок http в nginx.conf:

server_tokens off;
more_clear_headers Server;
more_clear_headers X-Powered-By;

Вы также можете установить свои собственные:

more_set_headers "Server: ACME";

Это будет работать, даже если passenger_show_version_in_header off; не установлено, но, возможно, было бы разумно добавить его и в случае.

Не забудьте перезапустить сервер, чтобы они вступили в силу. Вы должны проверить свою конфигурацию перед перезапуском: sudo nginx -t.

Информация через calvin.my

...