![Apache ReverseProxy 在返回错误页面时将上游服务器设置为错误](https://linux22.com/image/642509/Apache%20ReverseProxy%20%E5%9C%A8%E8%BF%94%E5%9B%9E%E9%94%99%E8%AF%AF%E9%A1%B5%E9%9D%A2%E6%97%B6%E5%B0%86%E4%B8%8A%E6%B8%B8%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%94%99%E8%AF%AF.png)
我们正在使用 Apache LoadBalancer/ReverseProxy 为我们的 Web 服务器提供故障转移。目前我们遇到了以下问题:
- Web 服务调用返回 HTTP 状态代码为 500 的错误
- 由于
ProxyErrorOverride
设置为 On,Apache 会覆盖上游服务器的响应并将其替换为默认的 Apache 错误页面。我们添加了此指令以确保上游服务器的任何错误详细信息都不会传到外部。 - Apache 将上游服务器设置为“ERR”状态一分钟
- 后续请求被发送到另一台服务器,该服务器不知道客户端会话,因此访问被拒绝(我们使用粘性会话而不是共享会话)
如果没有ProxyErrorOverride
上游服务器的响应,负载均衡器也不会将其设置为“ERR”状态。我还没有找到关于此副作用的记录,也没有解决方法。
有什么想法吗?以下是我们的配置文件摘录:
ProxyRequests Off
# ProxyErrorOverride On
<Proxy balancer://jboss>
BalancerMember http://server1:8080 route=11 connectiontimeout=60
BalancerMember http://server2:8080 route=12 connectiontimeout=60
ProxySet stickysession=ROUTEID
</Proxy>
httpd -v 返回
Server version: Apache/2.2.15 (Unix)