我正在尝试将Traefik作为API网关运行,并想通过使用以下docker compose文件来触发ForwardAuth中间件,但是未点击auth端点的中间件。我在本地主机上使用它。
version: '3'
services:
reverse-proxy:
image: traefik # The official Traefik docker image
command: --api --docker # Enables the web UI and tells Traefik to listen to docker
ports:
- "80:80" # The HTTP port
- "8080:8080" # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
- $PWD/traefik.toml:/traefik.toml
whoami:
image: emilevauge/whoami
labels:
- traefik.enable=true
- "traefik.frontend.rule=Host:whoami.docker.localhost"
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https"
- "traefik.http.middlewares.test-replacepath.replacepath.path=/foo"
- "traefik.http.middlewares.testauth.ForwardAuth.Address=http://localhost:55391/api/Auth"
答案 0 :(得分:0)
我也在这个问题上苦苦挣扎了一段时间,除了在Traefik文档中完全隐藏之外,找不到其他答案。 ForwardAuth docs并没有真正提到这一点,但是看着middlewares overview configuration example时,我突然发现您不仅必须指定中间件,而且还必须将其应用于路由器。
将此标签添加到whoami
服务应该可以解决问题:
- "traefik.http.routers.whoami.middlewares=testauth"
请注意,您还可以在此处通过逗号分隔指定多个中间件,以便可以像这样添加其他定义的中间件:
- "traefik.http.routers.whoami.middlewares=testauth,test-redirectscheme,test-replacepath"