Apache:为HTTP 1.0请求强制HTTP 1.1或Persistent / KeepAlive连接

我想强制运行在RHEL 5.8上的Apache 2.2.3服务器上的所有HTTP请求的Keep Alive或Persistent连接。 许多networking爬虫正在使用HTTP 1.0出于某种原因,我想或者强制持久连接,或者强迫这些连接使用HTTP 1.1,以便在Apacheconfiguration中保持活跃设置将导致持久的HTTP。 这是因为我想减less打开的TCP连接数。 我怎样才能做到这一点?

HTTP 1.0不支持保持活动(AKA持续连接),并没有系统要求他们使用HTTP 1.1,你可以返回他们的400倍,但他们仍然会创build一个连接,没有标准的方式来告诉他们尝试HTTP 1.1而不是。 即使你所有的客户端都解决了,他们也需要HTTP1.1,但是服务上没有任何东西可以阻止他们发送keep-alive头文件中的“close”或者断开连接,并且每个请求仍然做一个连接。

有一些Linux内核选项(特别是DEFER_ACCEPTTIME_WAIT ),可以帮助减lessTCP连接表,但我不build议走下去的路线,除非你知道你在做什么,因为它很容易使事情变得更糟,而不是更好。

但更广泛的思考我认为你试图以错误的方式解决问题。 互联网是黑暗和充满恐惧,如果随机机器人造成你的TCP连接限制的问题,那么你是绝望的SYN洪水或其他DDOStypes的事件和机器人只是一个信号,你的networking服务器是否小型,受到攻击或configuration错误。 无论哪种方式id错了。

如果你真的想要控制什么样的请求到达Apache,你需要一个WAF(Web应用程序防火墙)或负载平衡器前面的Apache的过滤掉坏请求之前,他们消耗昂贵的Apache连接。 在很多情况下,您还可以卸载执行SSL / TLSencryption的CPU密集型工作。

我知道这不是一个快速的解决scheme,或者你寻找的答案,但无论什么问题,你都很难解决这个问题。

你可以设置KeepAliveTimeout是一个很高的数字。

这里是这个指令的手册条目: http : //httpd.apache.org/docs/2.4/mod/core.html#keepalivetimeout

请注意,“将KeepAliveTimeout设置为较高的值可能会导致服务器负载过重时出现性能问题。超时时间越长,服务器进程将被占用的空间越多。