Hi there,
I'm looking to strip path prefix before sending it to my docker services.
Currently I'm launching the Traefik in a swarm mode also are my Docker Services.
Traefik configuration :
"Name": "traefik_traefik",
"Labels": {
"com.docker.stack.image": "traefik:v2.4.8",
"com.docker.stack.namespace": "traefik"
},
"TaskTemplate": {
"ContainerSpec": {
"Image": "traefik:v2.4.8@sha256:08d8a7759f5fffa2441488151cedcd4d556c1f124c097f929f469c1f7b82c16f",
"Labels": {
"com.docker.stack.namespace": "traefik"
},
"Args": [
"--log.level=DEBUG",
"--api.dashboard=true",
"--providers.docker.swarmMode=true",
"--api.insecure=true",
"--providers.docker=true",
"--providers.docker.exposedbydefault=false",
"--entrypoints.web.address=:80",
"--entrypoints.websecure.address=:443",
"--certificatesresolvers.myresolver.acme.httpchallenge=true",
"--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web",
"--certificatesresolvers.myresolver.acme.caserver=https://acme-v02.api.letsencrypt.org/directory",
"--certificatesresolvers.myresolver.acme.email=***@***.***",
"--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
],
My Service which must answer to domain.com/api/my_service/ and forward to the service as : /
"Spec": {
"Name": "my_service",
"Labels": {
"com.docker.stack.image": "company/my_service:version",
"com.docker.stack.namespace": "my_namespace",
"traefik.docker.network": "my_network",
"traefik.enable": "true",
"traefik.http.middlewares.stripprefix-my_service.stripprefix.prefixes": "/api/my_service",
"traefik.http.routers.template_api_recette.entrypoints": "websecure",
"traefik.http.routers.template_api_recette.rule": "(Host(`domain.com`) \u0026\u0026 PathPrefix(`/api/my_service`))",
"traefik.http.routers.template_api_recette.tls.certresolver": "myresolver",
"traefik.http.services.template_api_recette.loadbalancer.server.port": "80",
"traefix.http.routers.template_api_recette.middlewares": "stripprefix-my_service"
},
Actually, with this configuration, I only manage to redirect the request received by Traefik to my service, but without the prefix stripping, so my service return a 500 because it can't find the /api/my_service URI.
What do I do wrong with this configuration ? I tried several other configuration, adding a @docker to my middleware without any success and currently I'm going crazy trying to resolve this situation and I do not want to alter my service by giving it the prefix I use (should work, but before I used a simple NGINX proxy and it work well, stripping this prefix before querying the service).
I may have misunderstood some of configuration step in Traefik.