使用apache mod_proxy时的应用程序错误passthru

时间:2010-03-28 04:26:12

标签: apache mod-proxy

Heyas。我正在使用mod_proxy和apache2为本地机器上运行的多个servlet应用程序提供vhost功能。在大多数情况下,它工作正常。请求进入apache然后被定向到绑定在localhost上的端口上的应用程序。应用程序接收请求并响应,由apache传递回客户端。

我遇到的问题是应用程序在错误上提供了500个,并且mod_proxy会对它们进行踩踏。这些错误通常是在ajax请求中引起的,并且错误是在客户端javascript中处理的。例如,对服务器端createObject(name)的调用可能会抛出一个NameNotUniqueException,它会以500的形式传回。然后,客户端javascript可能会显示相应的错误消息。

当应用程序抛出错误(导致对mod_proxy的响应为500)时,apache会重写错误消息并返回

500内部服务器错误

内部服务器错误

服务器遇到内部错误或 配置错误,无法完成 你的要求。

..股票apache服务器端错误消息。

我希望mod_proxy将原始500传递回客户端。是否有一个我错过的指令可以防止500的破坏?

TIA

2 个答案:

答案 0 :(得分:3)

你有吗

 ProxyRequests Off
 ProxyErrorOverride Off
 ProxyPass /path/ http://backend.ip/path/
 ProxyPassReverse / http://backend.domain/

用你的值替换backend.ip和backend.domain(我在这里使用backend.ip,因为它阻止了apache在每个请求上运行dns查询)。

通常会按错误报告错误。因为ProxyErrorOverride默认为关闭。如果我的配置没有发生这种情况,请检查500是否真的来自您的后端服务器。或者只是向我们展示您的完整代理配置。

答案 1 :(得分:0)

我也遇到了同样的问题,因为从apache2 / mod_wsgi更改为apache2并使用了反向代理到mod_wsgi-express,所以页面空白500页。

我的配置(用www.example.com替换了实际域):

<VirtualHost *:443>
  ServerName www.example.com

  ProxyRequests Off
  ProxyErrorOverride Off
  ProxyPass         /  http://localhost:8001/
  ProxyPassReverse  /  https://www.example.com/
  ProxyPreserveHost On
  RequestHeader set X-Forwarded-Proto "https"

  ErrorLog /var/log/apache2/www.example.com.error.log
  LogLevel warn
  CustomLog /var/log/apache2/www.example.com.log combined

  SSLEngine On
  SSLCertificateFile    /etc/letsencrypt/live/www.example.com/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
  SSLCertificateChainFile       /etc/letsencrypt/live/www.example.com/fullchain.pem
</VirtualHost>