为Apache Server mod_proxy指令中的所有ProxyPass映射设置超时

我有什么和工作:

我正在使用Apache HTTPD 2.2进行代理请求。 我有多个ProxyPass映射:

ProxyRequests On <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPreserveHost Off ProxyPass /a http://some_ip/ ProxyPassReverse /a http://some_ip/ ProxyPass /b http://some_other_ip/ ProxyPassReverse /b http://some_other_ip/ ... 

这很好。

我想要的是:

我的一些请求需要更长的时间,所以他们超时给我一个代理错误 – 原因:从远程服务器读取错误

我想为所有请求设置timeout 。 我可以做到这一点,而不必添加timeout=... KeepAlive=On每个ProxyPass映射timeout=... KeepAlive=On

我目前有这样的东西:

 ProxyPass /a http://some_ip/ timeout=1200 KeepAlive=On ProxyPassReverse /a http://some_ip/ ProxyPass /b http://some_other_ip/ timeout=1200 KeepAlive=On ProxyPassReverse /b http://some_other_ip/ ... and i do this for all my ProxyPass mappings 

我可以通过某种方式告诉Apache为所有映射添加timeoutKeepAlive参数吗? 提前致谢。


编辑:我也尝试直接使用mod_reqtimeout指令,但它没有为我做的伎俩:

 LoadModule reqtimeout_module modules/mod_reqtimeout.so RequestReadTimeout header=1200 body=1200 

根据Apache文档,如果没有指定 ProxyTimeoutconfiguration指令, Timeout的全局/虚拟主机设置将被使用并生效。 所以如果后端比Timeout秒长,Apache将closures连接(!)。

所以,即使ProxyTimeout的默认值为300,您仍然需要指定它以确保它是有效的。

我已经设法find我自己的解决scheme。 您可以直接使用mod_proxyProxyTimeout指令设置超时时间:

 ProxyRequests On <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPreserveHost Off ProxyTimeout 1200