将 Traefik 路由到子文件夹

将 Traefik 路由到子文件夹

是否可以将子文件夹路由到不同的容器?

例如,http://localhost/wordpress会加载 Wordpress http://localhost/drupal,也会加载 Drupal。

我知道我可以使用子域名。但在这里,这是针对测试环境的,每次创建子域名可能都是浪费时间

编辑:docker-compose.yml第一个答案之后

version: '3'

services:
  reverse-proxy:
    image: traefik:2.0
    command: --api.insecure=true --providers.docker
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  wordpress:
    image: wordpress
    labels:
      - "traefik.http.routers.whoami.rule=Host(`localhost`) && Path(`/wordpress`)"
  drupal:
    image: drupal
    labels:
      - "traefik.http.routers.whoami.rule=Host(`localhost`) && Path(`/drupal`)"

答案1

查看您根据@Zoredache 的回答更新后发布的配置,您就快完成了。

为了让一切正常,你唯一需要改变的是姓名路由器。

您已经获得了traefik.http.routers.whoami.rule两个服务的标签名称,因此 Traefik 只是使用覆盖最后出现的服务的路由。

您应该为每个标签指定唯一的名称,以使它们不会重叠。

例如:

version: '3'

services:
  reverse-proxy:
    image: traefik:2.0
    command: --api.insecure=true --providers.docker
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  wordpress:
    image: wordpress
    labels:
      - "traefik.http.routers.wordpress.rule=Host(`localhost`) && Path(`/wordpress`)"
  drupal:
    image: drupal
    labels:
      - "traefik.http.routers.drupal.rule=Host(`localhost`) && Path(`/drupal`)"

请注意,现在每条规则都是根据其想要服务的服务来命名的(wordpress,和drupal)。

答案2

是的

假设你使用的是 2.0,你需要设置你的规则以包含小路路由器下的组件。

来自文档的示例。

rule = "(Host(`containo.us`) && Path(`/traefik`))"

1.7 文档中也提到这是在前端完成的。

相关内容