Spring Boot zuul 代理为 post 请求返回 404 错误

时间:2021-06-20 23:39:37

标签: spring spring-boot spring-mvc netflix-zuul

我正在开发一个 Spring 微服务应用程序。我的应用程序使用 api 网关、zuul 代理、spring web 并部署在 openshift 上。

我的 application.properties 文件中有以下配置:

zuul.routes.service-name.path=/test/aos/v1/**
zuul.routes.service-name.stripPrefix=false
zuul.routes.service-name.serviceId=service-name

点击 api @ https://URL.com/test/aos/v1/info 时出现以下错误:

{
    "timestamp": "2021-06-20T23:34:36.862+0000",
    "status": 404,
    "error": "Not Found",
    "message": "Not Found",
    "path": "/info"
}

我通过转到 actuator/mappings 检查了 zuul 是否无法注册,并且此映射显示在那里。所以那里一切都很好。 另外,如果我直接在 OCP 中调用后端 API 容器 @ https://CONTAINER_URL.com/test/aos/v1/info 那么我会得到预期的结果。

所以我理解 zuul 无法找到后端 api 容器的 url。为什么会这样?该应用不使用 netflix eureka,而是完全依赖于 openshift 注册表。

我无法站在这个虫子的立场上站起来......内部尖叫

1 个答案:

答案 0 :(得分:1)

需要根据配置的serviceId(名为“service-name”)访问需要访问的目标服务的服务器列表或 URL 映射

与其他设置一起添加以下内容 -

service-name.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
service-name.ribbon.listOfServers= https://example1.com,http://example2.com

或删除 serviceId 配置并将容器的 URL 添加为 -

zuul.routes.service-name.url=https://example.com/