Traefik 2.0 - 根据 PathPrefix 为同一服务转发身份验证和基本身份验证
Traefik 2.0 - Forward Authentication and Basic Auth for same service depending on PathPrefix
我昨天将我的 Traefik 从 1.7 转换为 2.1,我的所有 docker 服务都有前向身份验证 (oauth)。我无法让两个路由器为同一服务工作。
我们以陶图利为例。 Web 界面现在使用 oauth 得到了适当的保护。但是,为了让 Tautulli 远程 iOS 应用程序正常工作,需要使用更简单的基本身份验证来公开 /api PathPrefix。
下面我定义了两个不同优先级和不同中间件的路由器。但是 https://tautulli.[DOMAINNAME]/api/v2?apikey?xxxx
总是将我重定向到 oauth 登录; tautulli-api-rtr
路由器似乎没有被触发。
tautulli:
image: linuxserver/tautulli
container_name: tautulli
hostname: tautulli
restart: unless-stopped
networks:
- t2_proxy
volumes:
- ${USERDIR}/docker/tautulli/config:/config
- ${USERDIR}/docker/tautulli/logs:/logs:ro
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
labels:
- "traefik.enable=true"
## DEFAULT ROUTER
## HTTP Routers
- "traefik.http.routers.tautulli-rtr.entrypoints=https"
- "traefik.http.routers.tautulli-rtr.priority=1"
- "traefik.http.routers.tautulli-rtr.rule=Host(`tautulli.$DOMAINNAME`)"
- "traefik.http.routers.tautulli-rtr.tls=true"
- "traefik.http.routers.tautulli-rtr.tls.certresolver=dns-cloudflare"
## Middlewares
- "traefik.http.routers.tautulli-rtr.middlewares=secure-chain@file"
## HTTP Services
- "traefik.http.routers.tautulli-rtr.service=tautulli-svc"
- "traefik.http.services.tautulli-svc.loadbalancer.server.port=8181"
## API ROUTER - not working, secure-chain@file middlewares still applied...
## HTTP Routers
- "traefik.http.routers.tautulli-api-rtr.entrypoints=https"
- "traefik.http.routers.tautulli-api-rtr.priority=99"
- "traefik.http.routers.tautulli-api-rtr.rule=Host(`tautulli.$DOMAINNAME`) && PathPrefix(`/api`)"
- "traefik.http.routers.tautulli-api-rtr.tls=true"
- "traefik.http.routers.tautulli-api-rtr.tls.certresolver=dns-cloudflare"
## Middlewares
- "traefik.http.routers.tautulli-api-rtr.middlewares=noauth-chain@file"
## HTTP Services
- "traefik.http.routers.tautulli-api-rtr.service=tautulli-svc"
中间件定义在这个优秀github:
https://github.com/htpcBeginner/docker-traefik/tree/master/traefik2/rules!
感谢任何帮助或替代解决方案!
这实际上按预期工作。我想我在调试的时候调用了错误的docker的api :) 那是一个深夜
我昨天将我的 Traefik 从 1.7 转换为 2.1,我的所有 docker 服务都有前向身份验证 (oauth)。我无法让两个路由器为同一服务工作。
我们以陶图利为例。 Web 界面现在使用 oauth 得到了适当的保护。但是,为了让 Tautulli 远程 iOS 应用程序正常工作,需要使用更简单的基本身份验证来公开 /api PathPrefix。
下面我定义了两个不同优先级和不同中间件的路由器。但是 https://tautulli.[DOMAINNAME]/api/v2?apikey?xxxx
总是将我重定向到 oauth 登录; tautulli-api-rtr
路由器似乎没有被触发。
tautulli:
image: linuxserver/tautulli
container_name: tautulli
hostname: tautulli
restart: unless-stopped
networks:
- t2_proxy
volumes:
- ${USERDIR}/docker/tautulli/config:/config
- ${USERDIR}/docker/tautulli/logs:/logs:ro
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
labels:
- "traefik.enable=true"
## DEFAULT ROUTER
## HTTP Routers
- "traefik.http.routers.tautulli-rtr.entrypoints=https"
- "traefik.http.routers.tautulli-rtr.priority=1"
- "traefik.http.routers.tautulli-rtr.rule=Host(`tautulli.$DOMAINNAME`)"
- "traefik.http.routers.tautulli-rtr.tls=true"
- "traefik.http.routers.tautulli-rtr.tls.certresolver=dns-cloudflare"
## Middlewares
- "traefik.http.routers.tautulli-rtr.middlewares=secure-chain@file"
## HTTP Services
- "traefik.http.routers.tautulli-rtr.service=tautulli-svc"
- "traefik.http.services.tautulli-svc.loadbalancer.server.port=8181"
## API ROUTER - not working, secure-chain@file middlewares still applied...
## HTTP Routers
- "traefik.http.routers.tautulli-api-rtr.entrypoints=https"
- "traefik.http.routers.tautulli-api-rtr.priority=99"
- "traefik.http.routers.tautulli-api-rtr.rule=Host(`tautulli.$DOMAINNAME`) && PathPrefix(`/api`)"
- "traefik.http.routers.tautulli-api-rtr.tls=true"
- "traefik.http.routers.tautulli-api-rtr.tls.certresolver=dns-cloudflare"
## Middlewares
- "traefik.http.routers.tautulli-api-rtr.middlewares=noauth-chain@file"
## HTTP Services
- "traefik.http.routers.tautulli-api-rtr.service=tautulli-svc"
中间件定义在这个优秀github:
https://github.com/htpcBeginner/docker-traefik/tree/master/traefik2/rules!
感谢任何帮助或替代解决方案!
这实际上按预期工作。我想我在调试的时候调用了错误的docker的api :) 那是一个深夜