Docker Traefik v2和带路径的路由
我试过这个:Docker Traefik v2和带路径的路由,docker,nginx,docker-swarm,traefik,Docker,Nginx,Docker Swarm,Traefik,我试过这个: version: "3.3" services: traefik:
version: "3.3"
services:
traefik:
image: "traefik:latest"
command:
- --api.insecure=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --api=true
- --api.dashboard=true
- --entrypoints.web.address=:80
- --log.filePath=/home/docker/traefik.log
- --log.level=DEBUG
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
whoami:
image: "containous/whoami"
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.traefik.kb`) && Path(`/who`)"
- "traefik.http.routers.whoami.entrypoints=web"
- "traefik.http.routers.whoami.service=whoami"
- "traefik.http.services.whoami.loadbalancer.server.port=80"
nginx:
image: "nginx:alpine"
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=Host(`nginx.traefik.kb`) && Path(`/ng`)"
- "traefik.http.routers.nginx.entrypoints=web"
- "traefik.http.routers.nginx.service=nginx"
- "traefik.http.services.nginx.loadbalancer.server.port=80"
nginx2:
image: "nginx:alpine"
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx2.rule=Host(`nginx2.traefik.kb`)"
- "traefik.http.routers.nginx2.entrypoints=web"
- "traefik.http.routers.nginx2.service=nginx2"
- "traefik.http.services.nginx2.loadbalancer.server.port=80"
我在docker swarm中使用这个堆栈。我的问题是当我试图访问nginx.traefik.kb/ng时,我从nginx得到了404。对于whoami图像和urlwhoami.traefik.kb/who我没有任何问题,对于nginx2.traefik.kb也没有问题
我只有这个配置文件,没有traefik.yml之类的文件
有什么想法吗??谢谢 解决了
添加以下内容:
- "traefik.http.middlewares.nginx-prefix.stripprefix.prefixes=/ng"
- "traefik.http.routers.nginx.middlewares=nginx-prefix"
有了这一点,我无法让nginx运行您还需要在该路径上放置一个带前缀的中间件,因为traefik不会自动为您这样做。你帮助我更好地理解这些问题。谢谢