在docker中配置Traefik以路由子文件夹

时间:2020-03-19 10:29:59

标签: docker docker-compose routes traefik

我想在docker中配置我的Trafik安装,以使用子文件夹而不是子域。我知道它应该可以工作,正如我在其他帖子中已经读到的那样。 但是,我不明白自己在做什么错...

我在测试域中的Docker具有FQDN ubuntudocker.domain.qa(并且我还为traefik.ubuntudocker.domain.qa定义了别名)

这是我的撰写文件: 使用子域的设置可以很好地工作,但是如果我在路径中使用了注释掉的变体,则不能。在我的浏览器中,我只会看到“找不到路径”。

version: '3'

services:
  traefik:
    image: traefik:v2.0
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - 80:80
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      - "traefik.http.routers.traefik.rule=Host(`traefik.ubuntudocker.domain.qa`)"
      #- "traefik.http.routers.traefik.rule=Host(`ubuntudocker.domain.qa`) && Path(`/traefik`)"
      - "traefik.http.routers.traefik.service=api@internal"

networks:
  proxy:
    external: true

和我的traefik.yml设置文件:

api:
  dashboard: true

log:
  level: INFO

entryPoints:
  http:
    address: ":80"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false

非常感谢您!

2 个答案:

答案 0 :(得分:0)

尝试使用PathPrefix(`/ traefik`)而不是Host(`traefik.ubuntudocker.domain.qa`)。

答案 1 :(得分:0)

以防万一,请尝试使用此

(Host(`ubuntudocker.domain.qa`)&& PathPrefix(`/ traefik`))