Search code examples
springspring-cloudspring-cloud-gateway

Spring Cloud Gateway API - Context-path on routes not working


I have setup context-path in application.yml

server:
  port: 4177
  max-http-header-size: 65536
  tomcat.accesslog:
    enabled: true
  servlet:
    context-path: /gb-integration

And I have configured some routes

@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();
    }

I want the API gateway to be reached using localhost:4177/gb-integration/sbl/** However it is only working on localhost:4177/sbl/**

It seems my context-path is ignored. Any ideas how I can get my context-path to work on all my routes?


Solution

  • You probably already figuered it out by your self, but here is what is working for me:

    After reading the Spring Cloud documentation and having tryied many things on my own, I have eventually opted for a route by route configuration. In your case, it would look something like this:

    .path("/gb-integration/sbl/**")
    

    and repeat the same pattern for every route.

    .path("/gb-integration/abc/**")
    ...
    .path("/gb-integration/def/**")
    

    You can actually see this in spring cloud documentation.

    The spring clould documentation seems to be in progress. Hopefully, we shall find a better solution.