我可以从C模块内部强制关闭Apache 2.2连接吗?

时间:2010-04-11 21:46:34

标签: apache sockets module keep-alive

我们希望对我们在C ++ Apache 2.2模块(在CentOS 5上)上提供的连接进行更细粒度的控制。

其中一个连接需要为多个请求保持活动状态,因此我们将“KeepAlive”设置为“On”并设置一个短暂的保持活动期。

但是对于每一个这样的连接,我们都有一些来自浏览器的连接,我们不需要留下它们,而是想在一次请求后强制它们关闭。

其中一些连接位于不同的端口上(因此我们可以通过端口区分它们,因为可以为每个虚拟主机设置KeepAlive),有些连接请求不同的URL(因此我们可以从路径和参数中判断出我们没有想把它们抛在后面。)

另外,对于我们希望保持活力的人,我们知道在某个请求之后我们也想关闭它。

但到目前为止,我们发现“取消”keep-alive的唯一方法是向客户端发送礼貌的“Connection:close”标头。如果客户端表现不佳或恶意,那么他们可以保持开放并浪费我们的资源。

有没有办法告诉Apache关闭服务器端的连接?该文档建议不要在socket上进行简单的close(2)调用,因为Apache需要在完成之前进行一些清理。但是有没有动态“覆盖”静态“KeepAlive On”配置的API或技巧(并说服Apache调用close(2))?

感谢。

1 个答案:

答案 0 :(得分:1)

尝试设置c->中止,然后apache将在有序关闭期间的正确时间关闭套接字。