在Apache中杀死HTTP(S)连接

时间:2011-01-05 23:15:41

标签: apache apache2

假设Apache配置为允许长连接(KeepAlive)。它配置了相当高的超时。

我们有一些特殊情况,当我们强行关闭/杀死其中一些长生命连接时(我们不能等到它会超时)。

你能给我一些指针,怎么做?

如果这些信息有用,我将更加感激 a)SSL b)反向SSL代理

通常,最终解决方案将是具有SSL和客户端证书身份验证的Apache。 Apache将作为反向代理。我需要根据客户端证书主题终止一些连接。

3 个答案:

答案 0 :(得分:0)

保持两个单独的Apache实例运行,1表示SSL 1不运行。如果使用prefork模型,您可以根据进程生命周期迭代kill关闭具有到适当实例的父路径的旧PID。

不确定您是否可以内省或获取为每个主题分叉的httpd进程的PID ...

答案 1 :(得分:0)

我不确定长时间的keepalive设置是否真的可以帮助您优化SSL会话。在第一次连接时发生SSL会话否定,我们可以假设它使第一个请求的时间延长了20%。但随后在服务器端激活了SSL缓存,来自同一浏览器的进一步SSL请求不会受到SSL协商的影响。

我建议使用5s Keepalive Timeout,这通常足以处理此页面上附加的页面加载和css / js /图像。也许你也可以尝试15秒。但是除非你使用COMET persitent connexions处理,否则任何更大的东西都没有意义。我错了。做一些测试。

请注意,如果您在apache后面执行某些负载均衡器并且ssl会话缓存未由不同的apache服务器共享,则可能会出现一些SSL重新出现的问题。这就是为什么负载均衡器有时会尝试将链接保持在SSL模式(始终将此人定位到该服务器)的原因。但我从未读过HTTP Keepalive应该用于SSL优化。

答案 2 :(得分:0)

当我研究这个时,我没有找到解决这个问题的现有解决方案。但是,我能够对Apache模块进行原型设计,这完全符合所描述的内容(终止长连接)。