Zuul Ribbon 异常总是返回 500 响应

Posted

技术标签:

【中文标题】Zuul Ribbon 异常总是返回 500 响应【英文标题】:Zuul Ribbon exception always returns 500 response 【发布时间】:2016-05-19 13:35:20 【问题描述】:

我正在使用带有 Eureka 的 Zuul 作为反向代理。 当下游服务返回 4xx Client Exception 时,Ribbon 会将异常转换为 500 服务器错误。

whitelabel 页面上的示例输出是:

There was an unexpected error (type=Internal Server Error, status=500).
403 FORBIDDEN

RibbonRoutingFilter 似乎总是将任何异常转换为 500。 https://github.com/spring-cloud/spring-cloud-netflix/blob/master/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/route/RibbonRoutingFilter.java#L81

是否有任何方法可以覆盖此行为并将原始状态代码发送给客户端。

【问题讨论】:

所以我试图重现这一点,例如,如果客户端发回带有 401 的有效响应,则会将正确的错误代码报告回客户端。 github.com/spring-cloud/spring-cloud-netflix/blob/master/…你有办法重现这个吗? 我能够使用 503 进行复制,这是功能区中的一种特殊情况。如果您有一个可以重现此问题的项目,请创建一个问题。 【参考方案1】:

这是我们计划修复的known issue。

【讨论】:

以上是关于Zuul Ribbon 异常总是返回 500 响应的主要内容,如果未能解决你的问题,请参考以下文章

实例关闭时Spring-cloud Zuul重试

用springcloud zuul ribbon集群服务的时候遇到的坑

zuul网关重试机制探索

Springcloud之Zuul网关入门

API Gateway 500 对未处理异常的响应

Zuul 和 Ribbon 集成