Apache-2.2

Apache 2.2.3 代理到 Tomcat 5.5 上的 mod_proxy 返回錯誤 502 Bad Gateway

  • February 7, 2013

在 Apache 2.2.3 代理到 Tomcat 5.5 上使用 mod_proxy 時出現 502 bad gateway 錯誤。

當直接通過 Tomcat(而不是通過 mod_proxy)使用時,它可以正常工作,所以我認為問題出在 Apache 端。當請求花費的時間比正常時間長時,就會出現問題,但我還沒有看到任何模式。有時兩秒太長,有時七秒。

Tomcat 用於託管基於 Groovy/Grails 的應用程序。

Apache vhost 配置具有以下相關條目:

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

請注意,我添加了 ProxyTimeout 以嘗試解決問題(過去曾在類似情況下有所幫助),但沒有幫助。

這兩行是舊的,沒有它們情況會更糟 - 幾乎每個請求都會出現錯誤 502。

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

更新

您是否嘗試過監控 Tomcat 中的繁忙執行緒數?也許 Apache 沒有正確發布它們。


第一次嘗試,不工作

反向名稱查找DOMAIN

我將無恥地插入我的堆棧溢出答案。請注意,它允許您使用 localhost 而不是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>

引用自:https://serverfault.com/questions/24544