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

Spring boot zuul proxy returning 404 error for a post request

我正在开发一个 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 注册表。

我不能站着这个错误进入我的站立......内部尖叫

根据配置的 serviceId 需要到达目标服务的服务器列表或 URL 映射,命名为“service-姓名

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

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/