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不会自动为您这样做。你帮助我更好地理解这些问题。谢谢