She*_*ari 5 spring spring-cloud spring-cloud-gateway
我在 application.yml 中设置了上下文路径
server:
port: 4177
max-http-header-size: 65536
tomcat.accesslog:
enabled: true
servlet:
context-path: /gb-integration
Run Code Online (Sandbox Code Playgroud)
我已经配置了一些路由
@Bean
public RouteLocator routeLocator(RouteLocatorBuilder builder) {
final String sbl = "http://localhost:4178";
return builder.routes()
//gb-sbl-rest
.route("sbl", r -> r
.path("/sbl/**")
.filters(f -> f.rewritePath("/sbl/(?<segment>.*)", "/gb-sbl/${segment}"))
.uri(sbl)).build();
}
Run Code Online (Sandbox Code Playgroud)
我希望使用 localhost:4177/gb-integration/sbl/** 访问 API 网关,但是它仅在 localhost:4177/sbl/** 上工作
看来我的上下文路径被忽略了。有什么想法可以让我的上下文路径在我的所有路线上工作吗?
您可能已经自己弄清楚了,但这对我有用:
在阅读了 Spring Cloud 文档并自己尝试了很多事情之后,我最终选择了逐个路由配置。在你的情况下,它看起来像这样:
.path("/gb-integration/sbl/**")
Run Code Online (Sandbox Code Playgroud)
并对每条路线重复相同的模式。
.path("/gb-integration/abc/**")
...
.path("/gb-integration/def/**")
Run Code Online (Sandbox Code Playgroud)
您实际上可以在spring cloud 文档中看到这一点。
spring cloud 文档似乎正在进行中。希望我们能找到更好的解决方案。
| 归档时间: |
|
| 查看次数: |
10082 次 |
| 最近记录: |