【问题标题】:Can I force Apache 2.2 connection close from inside a C module?我可以从 C 模块内部强制关闭 Apache 2.2 连接吗?
【发布时间】:2011-02-06 19:26:20
【问题描述】:

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

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

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

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

对于我们确实想要保持活力的那个,我们知道在某个请求之后我们也想关闭它。

但到目前为止,我们发现“取消”保持活动的唯一方法是向客户端发送礼貌的“连接:关闭”标头。如果客户端行为不端或恶意,那么他们可以保持打开状态并浪费我们的资源。

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

谢谢。

【问题讨论】:

    标签: apache sockets module keep-alive


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我后来换了一份工作,但我会把它传给我留下的人。
    猜你喜欢
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多