我所拥有的和所做的工作:
我在用着Apache HTTPD 2.2代理请求。我有多个代理通行证映射:
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
映射添加吗?
我目前有类似的东西:
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
答案1
我已经设法自己找到了解决方案。您可以直接使用以下ProxyTimeout
指令设置超时mod_proxy
:
ProxyRequests On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost Off
ProxyTimeout 1200
答案2
根据 Apache 文档,如果代理超时配置指令是未指定,全局/vhost 设置暂停被使用并有效。因此,如果后端花费的时间超过暂停秒后,Apache 将关闭连接(!)。
因此即使代理超时默认值为 300 秒,无论如何您都需要指定它以确保它有效。