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

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

我有一个 httpd 服务器,它将请求代理到 2 个不同的 tomcat 服务器。我的一个服务器负责处理身份验证,当用户已经有一个正在运行的会话时,它会返回特定的 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
  • tomcat7.25版本
  • Windows 7 64 位

答案1

521不是有效的 HTTP 响应代码,Apache 返回该代码将违反 HTTP 规范。

查看 Apache 的错误日志 - 它实际上可能阻塞了从后端获取的响应代码并向客户端抛出错误,而不是将代码映射5xx500

我强烈建议不要滥用这样的 HTTP 响应代码,但 HAProxy 或 Varnish 都具有充当“哑管道”的能力,这可能适合您的需要。

相关内容