Tomcat – mod_proxy on Apache 2.2.3 proxying to Tomcat 5.5 returns Error 502 Bad Gateway

apache-2.2mod-proxytimeouttomcat

I'm getting a 502 bad gateway error when using mod_proxy on Apache 2.2.3 proxying to Tomcat 5.5.

It works correctly when used directly via Tomcat (not via mod_proxy), so I assume the problem is on Apache's end. The problem arises when request takes longer than normal, but I'm yet to see any pattern. Sometimes two seconds are too long, sometimes seven.

Tomcat is used to host a Groovy/Grails based application.

Apache vhost config has these relevant entries:

ProxyRequests Off
ProxyTimeout 1800

<Proxy *>
 Order deny,allow
 Allow from all
</Proxy>
<Location />
ProxyPass http://DOMAIN:8180/
ProxyPassReverse http://DOMAIN:8180/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
UseCanonicalName off
HostNameLookups off

Please note that I've added ProxyTimeout in an attempt to solve the problem (have helped in similar situations in the past), it didn't help.

These two lines are old, without them the situation is worse – error 502 on almost every request.

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

Best Answer

Update

Have you tried monitoring the number of busy threads in Tomcat? Perhaps Apache is not releasing them properly.


First attempt, not working

Reverse name lookups for DOMAIN?

I'm going to shamelessly plug my stack overflow answer. Note that it allows you to use localhost instead of DOMAIN.

<VirtualHost *:80>
  ServerName public.server.name

  ProxyRequests Off
  ProxyPreserveHost On

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyPass / http://localhost:8180/
  ProxyPassReverse / http://localhost:8180/
</VirtualHost>