我有一个 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 的错误日志 - 它实际上可能阻塞了从后端获取的响应代码并向客户端抛出错误,而不是将代码映射5xx
到500
。
我强烈建议不要滥用这样的 HTTP 响应代码,但 HAProxy 或 Varnish 都具有充当“哑管道”的能力,这可能适合您的需要。