我有什么和工作:
我正在使用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为所有映射添加timeout和KeepAlive参数吗? 提前致谢。
编辑:我也尝试直接使用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_proxy的ProxyTimeout指令设置超时时间:
ProxyRequests On <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPreserveHost Off ProxyTimeout 1200