Traefik,多个前端规则到一个 docker 容器

Posted

技术标签:

【中文标题】Traefik,多个前端规则到一个 docker 容器【英文标题】:Traefik,multiple frontend rules to one docker container 【发布时间】:2019-02-13 21:13:26 【问题描述】:

我确实搜索了手册,但确实无法说得很清楚,即使使用关键字谷歌搜索也是如此。

我需要将/_ 代理到API 容器,类似www.mydomain.com/_ => API container 的一些规则

已经有一个指定的域指向这个 API 容器 api.mydomain.com => API container

这是我的docker-compose.yml,我只想添加一条规则,将/_ 也代理到这个容器。

version: '3.3'

services:

  testapi:

    image: git.xxxx.com/api/core/test:latest

    restart: always

    networks:
      - web
      - default

    expose:
      - "80"

    labels:
      - "traefik.enable=true"
      - "traefik.port=80"
      - "traefik.docker.network=web"
      - "traefik.backend=testapi"
      #this domain is used for app
      - "traefik.frontend.rule=Host:api.test.mydomain.com"
      #this is used for website.All I want is prxy "https://www.test.mydomain.com/_/" to this container
      - "traefik.frontend.rule1=Host:www.test.mydomain.com;PathPrefixStrp:/_"

【问题讨论】:

【参考方案1】:

您可以使用分段标签:

version: '3.3'

services:
 testapi:
   image: git.xxxx.com/api/core/test:latest
   restart: always
   networks:
     - web
     - default
   expose:
     - "80"
   labels:
     - "traefik.enable=true"
     - "traefik.port=80"
     - "traefik.docker.network=web"
     #this domain is used for app
     - "traefik.foo.frontend.rule=Host:api.test.mydomain.com"
     - "traefik.bar.frontend.rule=Host:www.test.mydomain.com,m.test.mydomain.com;PathPrefixStrp:/_"

https://docs.traefik.io/v1.6/configuration/backends/docker/#on-containers-with-multiple-ports-segment-labels

【讨论】:

像魅力一样工作

以上是关于Traefik,多个前端规则到一个 docker 容器的主要内容,如果未能解决你的问题,请参考以下文章

使用路径前缀规则时如何用 Traefik 重写路径?

将Traefik StripPrefix中间件添加到docker-compose标签结果为504

仅使用Traefik在内部网络上公开Docker数据库服务

将(子)域绑定到 traefik 仪表板出现 503 错误

Traefik 坏网关

kubernetes ingress traefik 入门