Traefik v2和路径路由

时间:2019-11-23 02:13:12

标签: docker nginx docker-swarm 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图片和URL whoami.traefik.kb / who ,我没有任何问题,并且 nginx2.traefik.kb 都没有...

我只有这个配置文件,没有traefik.yml左右。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

已解决!

添加此内容:

  - "traefik.http.middlewares.nginx-prefix.stripprefix.prefixes=/ng"
  - "traefik.http.routers.nginx.middlewares=nginx-prefix"

有了这个,我无法进入http://example.com/ng并开始运行nginx