【发布时间】:2021-02-23 19:11:39
【问题描述】:
我无法将我的请求转发到带有 contextpath 的 URI。
例如,我正在请求我的 Spring 云网关服务器
http://localhost:1010/mygateway/server/date
我希望它转发到
http://myapiserver.com/xyzapi/v1/server/date
但它给了我 404
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("api-server-date", r -> r.host("**")
.and()
.path("/mygateway/server/date")
.filters(f -> f.stripPrefix(1))
.uri("https://myapiserver.com/xyzapi/v1"))
.build();
}
当我将我的配置更改为这个时它可以工作
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("api-server-date", r -> r.host("**")
.and()
.path("/mygateway/xyzapi/v1/server/date")
.filters(f -> f.stripPrefix(1))
.uri("https://myapiserver.com"))
.build();
}
我不知道我提供的配置有误。它应该可以工作。
我只想使用
https://myapiserver.com/xyzapi/v1
作为我的 URI。这意味着在附加传入 url 后,到我的 spring 云网关服务器的所有传入流量都应该转发到这个 URL
请提出什么问题?还是 Spring Cloud Gateway 做不到?
【问题讨论】:
-
您是否使用与
server.servlet.context-path等效的内容设置上下文路径?好像是这样,但我不清楚。 -
是的,在我的实际 API 服务器中,我正在设置 @RobEvans
标签: java spring-boot reverse-proxy spring-cloud spring-cloud-gateway