在Passenger中禁用X-powered-by标头的标准方法?

Ole*_*eev 14 ruby passenger http-headers

我找不到任何方法来禁用Passenger的X-Powered-By标题:

X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11
Run Code Online (Sandbox Code Playgroud)

是否可以在不修改其源删除HTTP服务器级别的标头的情况下执行此操作

Rob*_*ert 19

在Apache上你可以取消设置标题:

# Hide/Remove the Passenger Headers
Header always unset "X-Powered-By"
Header always unset "X-Runtime"
Run Code Online (Sandbox Code Playgroud)

它不会删除所有名称(因为像Plesk这样的服务仍会附加其名称),但乘客可以通过这种方式删除.

感谢John Trupiano:https://groups.google.com/forum/ fromgroups =#!topic/phusion -passenger/LKAKH0PEyW0


sha*_*wbq 12

简答:是的.

更新:2018年

使用proxy_hide_headerif下游或使用more_clear_headers


原始答案

我留下了我使用nginx +乘客的事实..但你可以完全删除它们

remove_header X-Header-Name-To-Remove;
Run Code Online (Sandbox Code Playgroud)

所以你可以删除两者

server {
    ...
    remove_header X-Powered-By;
    remove_header X-Runtime;
    ...
    }
Run Code Online (Sandbox Code Playgroud)

这将删除所有标头,它也可以位于location指令而不是服务器.

..

这是我的共同指令,因为我将'apache prod'等同于我的.

server {
    ...
    remove_header X-Runtime;
    server_tokens off;
    passenger_show_version_in_header off;
    ...
}
Run Code Online (Sandbox Code Playgroud)

提供像...一样的服务标题

Server:nginx + Phusion Passenger
X-Powered-By:Phusion Passenger       
Run Code Online (Sandbox Code Playgroud)

这是我能做的最接近的apache2 ServerTokens Prod指令.

  • `nginx:[emerg] 未知指令“remove_header”` (3认同)

klo*_*ner 6

简答:不.

乘客没有配置选项来禁用X-Powered-by,因此您需要执行其中一项操作

  • 过滤
  • 编辑源
  • 猴补丁

乘客代码:

  #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
Run Code Online (Sandbox Code Playgroud)

  • 这个答案不再正确,因为[`passenger_show_version_in_header off;`](http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_passenger_show_version_in_header_lt_on_off_gt)现在已经存在. (2认同)

小智 6

more_clear_headers 'Server' 'X-Powered-By' 'X-Runtime';http://www.michaelrigart.be/en/blog/nginx-and-passenger-install-in-production-environment.html 中所述,对我有用