繁体   English   中英

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

[英]Apache: Get rid of Keep-Alive entry in the headers list

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

目前,服务器使用下一个Headers列表发送响应。 我想出于安全原因消除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 来解决此问题,如此处所述 我强调可能因为我有一些header指令在某些版本的Apache中表现不如预期。 但假设有诚意,首先要确保已启用headers模块。 在Ubuntu 12.04中你会这样做:

sudo a2enmod headers

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

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

现在重启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标头,因为连接不再是keepalive。 例如

    PHP

    header('Connection: close');

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

    Header set Connection "close"

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

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

更改这一点主要是性能而非安全性的一个方面,但您可以自由地测试您自己环境中的含义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM