如何告诉httpd保存代理错误消息?

我有一个httpd服务器代理到2个不同的tomcat服务器的请求。 我的一个服务器处理authentication,并在用户已经有一个运行会话时返回一个特定的http错误代码521。

我的问题是httpd自动将此521错误代码映射到500(内部服务器错误),然后我的客户端无法正确处理它。

我试图禁用ProxyErrorOverride ,删除/error/HTTP_INTERNAL_SERVER_ERROR.html.var但它不会改变任何东西。

我怎样才能要求httpd不改变任何代理消息?

 <IfModule proxy_module> ProxyPass /context1 http://127.0.0.1:8001/context1 ProxyPass /context2 http://127.0.0.1:8002/context2 ProxyPreserveHost Off ProxyErrorOverride Off </IfModule> 

提前致谢

  • httpd 2.2.22(Win32)mod_ssl
  • tomcat 7.25
  • Windows 7 64位

521不是一个有效的HTTP响应代码,Apache将通过返回HTTP来违反HTTP规范。

看看Apache的错误日志 – 它实际上可能会阻塞从后端得到的响应代码,并向客户端抛出错误,而不是将5xx代码映射到500

我强烈build议不要滥用这样的HTTP响应代码,但HAProxy或Varnish都有能力作为一个“哑pipe”,这可能适合您的需求。