Bug 64035

Summary: mod_proxy_ajp: ProxyPass directive seems to be susceptible to Timeout in httpd.conf
Product: Apache httpd-2 Reporter: Fellipe Weno <fweno>
Component: CoreAssignee: Apache HTTPD Bugs Mailing List <bugs>
Status: NEW ---    
Severity: normal    
Priority: P2    
Version: 2.4.29   
Target Milestone: ---   
Hardware: PC   
OS: Linux   

Description Fellipe Weno 2019-12-26 21:45:11 UTC
I was not so sure about posting this, but as i got deep in the troubleshoot process the problem seems to be affecting more users and the resolution may not be obvious.

I have a application running on Tomcat in another server, this Application is being proxied through HTTPd inside a HTTPS connection.
The error_log for said VHost was generating the following entries:

[Thu Dec 26 17:42:15.888896 2019] [proxy_ajp:error] [pid 14930] [client <client_addr>:7026] AH00992: ajp_read_header: ajp_ilink_receive failed, referer: https://<remote_addr>/<remote_url>
[Thu Dec 26 17:42:15.888929 2019] [proxy_ajp:error] [pid 14930] (70007)The timeout specified has expired: [client <client_addr>:7026] AH00893: dialog to 10.0.0.192:8009 (10.0.0.192) failed, referer: https://<remote_addr>/<remote_url>

While working on this I found out lots of people stating that, to increasing the ProxyPass connection timeout didn't solve the problem. But I think this is incorrect behavior of HTTPd, as I understand the Timeout param in the httpd.conf is global, but is a Connection Timeout just like the one you have in the ProxyPass directive.

If this is incorrect, please forgive me. Thanks for your time and keep up with the good work! Thanks guys.
Comment 1 Fellipe Weno 2019-12-26 21:54:23 UTC
Allow me add this: When the Timeout of httpd.conf triggers(300 seconds) the error httpd returns to the Client Browser is 500(Internal Server error). But then, I don't see how that evolved, as the connection in AJP module is inactive but is not generating an actual error. Whats more, increasing the Timeout param in the apache2.conf solves the above Timeout reached in the AJP module. I think at best, the error in AJP modules should reflect what Timeout caused the connection to be lost.