Issue
I use an application behind a reverse proxy using Apache 2.4 (mod_jk).
When I request some page, it takes forever to load, and won't eventually load at all.
After investigation, I discovered some subtle JavaScript errors that are absent when accessed directly (no reverse proxy).
Delving further, it turned out that a specific .js file wouldn't complete loading, and I get a client side error: ERR_CONNECTION_RESET with a partially loaded .js file.
I noticed that Apache2 and Tomcat both work smoothly together, which is not the case between Apache2 and Jetty 7.3.
PS: This error occurs only when external static IP addresses are involved.
It feels like there is a timeout somewhere.
The logs below are related to a single .js resource request only (the one that causes the major problem).
access.log:
client-ip-address - - [13/Jan/2016:15:35:14 +0000] "GET /mifos/webcontent/birt/ajax/lib/prototype.js HTTP/1.1" 200 47603
error.log (with LogLevel debug and ProxyHTMLLogVerbose On):
[Wed Jan 13 15:35:14.688949 2016] [authz_core:debug] [pid 31137:tid 3011484480] mod_authz_core.c(835): [client client-ip-address:53033] AH01628: authorization result: granted (no directives)
[Wed Jan 13 15:35:14.689058 2016] [proxy:debug] [pid 31137:tid 3011484480] mod_proxy.c(1163): [client client-ip-address:53033] AH01143: Running scheme http handler (attempt 0)
[Wed Jan 13 15:35:14.689071 2016] [proxy_ajp:debug] [pid 31137:tid 3011484480] mod_proxy_ajp.c(710): [client client-ip-address:53033] AH00894: declining URL http://server-local-ip-address:8080/mifos/webcontent/birt/ajax/lib/prototype.js
[Wed Jan 13 15:35:14.689083 2016] [proxy:debug] [pid 31137:tid 3011484480] proxy_util.c(2140): AH00942: HTTP: has acquired connection for (server-local-ip-address)
[Wed Jan 13 15:35:14.689093 2016] [proxy:debug] [pid 31137:tid 3011484480] proxy_util.c(2193): [client client-ip-address:53033] AH00944: connecting http://server-local-ip-address:8080/mifos/webcontent/birt/ajax/lib/prototype.js to server-local-ip-address:8080
[Wed Jan 13 15:35:14.689104 2016] [proxy:debug] [pid 31137:tid 3011484480] proxy_util.c(2394): [client client-ip-address:53033] AH00947: connected /mifos/webcontent/birt/ajax/lib/prototype.js to server-local-ip-address:8080
[Wed Jan 13 15:35:14.689158 2016] [proxy:debug] [pid 31137:tid 3011484480] proxy_util.c(2636): AH00951: HTTP: backend socket is disconnected.
[Wed Jan 13 15:35:14.689590 2016] [proxy:debug] [pid 31137:tid 3011484480] proxy_util.c(2771): AH02824: HTTP: connection established with server-local-ip-address:8080 (server-local-ip-address)
[Wed Jan 13 15:35:14.689628 2016] [proxy:debug] [pid 31137:tid 3011484480] proxy_util.c(2923): AH00962: HTTP: connection complete to server-local-ip-address:8080 (server-local-ip-address)
[Wed Jan 13 15:35:15.141686 2016] [proxy:debug] [pid 31137:tid 3011484480] proxy_util.c(2155): AH00943: http: has released connection for (server-local-ip-address)
mod-jk.log (nothing interesting except one repeated line ):
[Wed Jan 13 15:03:22 2016][30041:3075380928] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized
Solution
I've finally solved the issue.
The breakthrough occured when I followed @john ktejik's directives:
Failed to load resource under Chrome
I came to realize that the involved resource was encompassed within a .jar file. Therefore, I had to tell Apache2 to explicitely use "SetOutputFilter INFLATE;proxy-html;DEFLATE".
That's when I started to make some progress.
Since The inflate/deflate directive disables some links, I had to make it exclusive for javascript files:
"AddOutputFilterByType DEFLATE application/x-javascript".
Also, I needed an extra tweak which is to activate mod_expires and mod_headers (source).
Finally, I would rather clear cache before testing in different machines.
Clearly, the problem is related to Cache expiration and Static IP, which I can't really understand.
More importantly, the problem is solved (tested on different machines with different browsers with static and dynamic IP)!
Answered By - Mohamed Ennahdi El Idrissi Answer Checked By - Dawn Plyler (WPSolving Volunteer)