我正在使用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
答案 0 :(得分:3)
Is it possible to prevent sending the Keep-Alive entry in the Headers list?
据我所知,没有。 Keep-Alive
标头的整个目的是传达对客户端持久连接的需求。因此摆脱标题摆脱了客户端与客户之间的主要沟通方式。服务器。
也就是说,可能能够通过在Apache配置中使用unset
或.htaccess
使用explained here来解除此设置。我强调可能因为我的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
有关the header directive are here的更多详情。
答案 1 :(得分:3)
apache有几种方法可以解决这个问题:
使用KeepAlive指令(KeepAlive)在服务器范围内。但是,您无法在每个目录的配置文件中使用此功能,因此设置KeepAlive Off
将关闭整个服务器的保持活动状态。
将SetEnv或SetEnvIf与mod_env一起使用,并设置nokeepalive环境变量。这将关闭设置环境的位置的keepalive,或SetEnvIf匹配的规则(取决于您的使用)。 e.g。
可以在HTACCESS中
SetEnv nokeepalive 1
使用mod_rewrite再次为特定规则设置环境,例如
RewriteRule some-file.html - [E = nokeepalive:1]
使用PHP(或任何其他服务器站点语言)并发送标头Connection: close
。这将导致Apache省略Keep-Alive标头,因为连接不再是keepalive。 e.g。
PHP
header('Connection: close');
使用mod_headers设置连接标头再次关闭,例如
Header set Connection "close"
我个人没有测试过最后一个,但它应该有效。
答案 2 :(得分:1)
KeepAlive行为(可用性和超时)可直接配置: http://httpd.apache.org/docs/2.4/mod/core.html#keepalive
更改这一点主要是性能而非安全性的一个方面,但您可以自由地测试您自己环境中的含义。