我有一个使用Apache 2和Phusion Passenger的Rails应用程序。 作为一个安全措施,我试图抑制所有服务器相关的HTTP头。 我已经成功地closures了Apache的,但是我在使用mod_headers Passenger时遇到了麻烦。 我已经使用a2enmod命令启用了a2enmod并重新启动了Apache进程,但X-Powered-By和X-Runtime头仍然出现。
这是我的虚拟主机文件:
<VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /home/deploy/public_html/railsapp/current/public LogLevel warn ErrorLog /home/deploy/public_html/railsapp/shared/log/error.log CustomLog /home/deploy/public_html/railsapp/shared/log/access.log combined # Suppress Phusion Passenger HTTP headers <Location *> <IfModule mod_headers.c> Header unset X-Runtime Header unset X-Powered-By </IfModule> </Location> </VirtualHost>
从mod_headers文档 :
mod_headers提供的指令几乎可以在服务器configuration的任何地方出现。 它们在主服务器configuration和虚拟主机部分,内部和部分以及.htaccess文件中有效。
如果你想这个应用到整个虚拟主机,为什么把它放在<Location>标签? 只要把指令放在主要的vhostconfiguration里面。
<VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /home/deploy/public_html/railsapp/current/public LogLevel warn ErrorLog /home/deploy/public_html/railsapp/shared/log/error.log CustomLog /home/deploy/public_html/railsapp/shared/log/access.log combined <IfModule mod_headers.c> Header unset X-Runtime Header unset X-Powered-By </IfModule> </VirtualHost>
如果不正确,我还没有testing过,所以提前道歉。
我没有安装Apache,但是<Location *>看起来有问题。 文档说:
该url可能使用通配符。 在通配符中,? 匹配任何单个字符,*匹配任何字符序列。 通配符不能与URLpath中的/匹配。
我怀疑你没有匹配任何url。 尝试:
<Location /> <IfModule mod_headers.c> Header unset X-Runtime Header unset X-Powered-By </IfModule> </Location>
撇开这一点,确定服务器还是很容易的,至less对于头版本来说也是不错的select,而“脚本小子”只是尝试所有的攻击, 不pipe怎样都不去检查版本。
如果删除该行,会发生什么情况,只需保留这些命令即可。
我不知道它是否被加载,尝试添加一个静态头来validation。