Apache:摆脱标题列表中的Keep-Alive条目

我正在使用LAMP(Linux,Apache,MySQL,PHP)服务器。

目前服务器发送响应与下一个头列表。 为了安全起见,我想消除Keep-Alive条目,让Headers列表没有它。 是否有可能阻止发送Headers列表中的Keep-Alive条目?

当前响应标题:

Cache-Control private, no-cache, no-store, must-revalidate, post-check=0, pre-check=0 Connection Keep-Alive Content-Encoding gzip Content-Type text/html; charset=UTF-8 Date Thu, 13 Mar 2014 01:43:49 GMT Expires Thu, 13 Mar 2014 01:43:49 GMT Keep-Alive timeout=5, max=200 Last-Modified Thu, 13 Mar 2014 01:43:49 GMT Pragma no-cache Server Apache Transfer-Encoding chunked Vary Accept-Encoding X-DNS-Prefetch-Control off X-Frame-Options sameorigin 

反应头我想反而:

 Cache-Control private, no-cache, no-store, must-revalidate, post-check=0, pre-check=0 Connection Keep-Alive Content-Encoding gzip Content-Type text/html; charset=UTF-8 Date Thu, 13 Mar 2014 01:43:49 GMT Expires Thu, 13 Mar 2014 01:43:49 GMT Last-Modified Thu, 13 Mar 2014 01:43:49 GMT Pragma no-cache Server Apache Transfer-Encoding chunked Vary Accept-Encoding X-DNS-Prefetch-Control off X-Frame-Options sameorigin 

 Is it possible to prevent sending the Keep-Alive entry in the Headers list? 

据我所知,没有。 Keep-Alive头文件的全部目的是向客户端传递持久连接的需求。 所以摆脱标题摆脱了客户端和服务器之间的主要沟通形式。

也就是说,你可以通过在你的Apache配置或者.htaccess使用unset来解决这个问题 。 我强调可能,因为我已经有一些版本的Apache的header指令行为不如预期。 但是,假设诚意,首先确保headers模块已启用。 在Ubuntu 12.04中,你可以这样做:

 sudo a2enmod headers 

然后将其添加到您的Apache配置或.htaccess

 <Ifmodulee mod_headers.c> Header unset Keep-Alive </Ifmodulee> 

现在重启Apache:

 sudo service apache2 restart 

关于header指令的更多细节在这里 。

在Apache中有几种方法:

  1. 服务器范围内使用KeepAlive指令( KeepAlive )。 但是,您不能在每个目录的配置文件中设置此项,因此设置KeepAlive Off将关闭整个服务器的保持活动状态。

  2. 使用SetEnv或SetEnvIf与mod_env,并设置nokeepalive环境变量。 这将关闭设置环境的位置的Keepalive,或者由SetEnvIf(取决于您使用)匹配的规则。 例如

    可以在HTACCESS中

    SetEnv nokeepalive 1

  3. 使用mod_rewrite为特定规则再次设置环境,例如

    RewriteRule some-file.html – [E = nokeepalive:1]

  4. 使用PHP(或任何其他服务器站点语言)并发送标题Connection: close 。 这将导致Apache省略Keep-Alive头,因为连接不再保持连接。 例如

    PHP

    header('Connection: close');

  5. 使用mod_headers来设置连接头再次关闭,例如

    Header set Connection "close"

我个人没有测试过最后一个,但它应该工作。

KeepAlive行为(可用性和超时)可直接配置: http : //httpd.apache.org/docs/2.4/mod/core.html#keepalive

改变这个主要是性能而不是安全性的一个方面,但是你可以自由地在你自己的环境中测试这个影响。