Traefik中Path和PathPrefix匹配的问题

时间:2017-05-01 14:32:53

标签: traefik

使用docker容器中的Traefix 1.2.3版,我已经设置了以下文件。

traefik:
  image: traefik
  command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG
  ports:
    - "80:80"
    - "8080:8080"
    - "443:443"
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - /dev/null:/traefik.toml  

services:
  image: opencoredata/ocdservices:0.2
  labels:
    - "traefik.backend=services"
    - "traefik.frontend.rule=Host:opencore.dev"
    - "traefik.frontend.rule=PathPrefix:/api"

# web:
#   image: opencoredata/ocdweb:0.3
#   labels:
#     - "traefik.backend=web"
#     - "traefik.frontend.rule=Host:opencore.dev"

如果我删除“web”部分周围的注释,所有流量将转到该容器,忽略Path或PathPrefix或任何其他尝试获取带有开头/ api /的URL到服务容器。

注释掉上面的“web”容器,流量进入服务容器。这是预期的,因为当然没有其他容器。

我根本找不到如何让Traefik使用Path,PathPrefix,PathPrefixStrip或任何其他组合。这里和文档中的示例似乎表明我应该得到我想要的行为,但我无法实现它。

1 个答案:

答案 0 :(得分:11)

我认为这部分

- "traefik.frontend.rule=Host:opencore.dev"
- "traefik.frontend.rule=PathPrefix:/api"

是错误的,因为第二行覆盖了第一行,试试这个:

- "traefik.frontend.rule=Host:opencore.dev;PathPrefix:/api"

我认为它会按照你想要的方式组合。