为 /admin 路径前缀添加基本身份验证

Ily*_*512 5 traefik

所以我试图向应用程序添加基本身份验证,但仅适用于 /admin/ 和 /admin/.*。

我正在使用带有 traefik 标签的 docker(-compose) 。到目前为止,我有闲置:

labels:
  - traefik.enable=true
  - traefik.port=8080
  - traefik.docker.network=proxy
  - traefik.app_admin.frontend.rule=Host:app.test;Path:/admin
  - traefik.app_admin.frontend.auth.basic=dev:password
  - traefik.app_frontend.frontend.rule=Host:app.test
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标(以及我对上述内容的期望):

一个(未)认证的用户应该能够访问app.test. 当用户浏览到app.test/admin,app.test/admin/,app.test/admin/#/或app.test/admin/not/existing/path。它应该提示(要求)基本的身份验证凭据。

我不确定是否使用了正确的规则。这有点令人困惑(有 Path、PathPrefix,这些可以带或不带*前缀使用)。

我没想到的一件事是转到不存在的路径,例如app.test/admin/foobar/返回404-code 而不是首先提示输入凭据。

还有一种方法可以组合标签,并且还需要对所有包含(以)的请求进行基本身份验证app.test/api/。

编辑:

我得到它的工作:

  - traefik.app_admin.frontend.rule=Host:app.test;PathPrefix:/admin
  - traefik.app_admin.frontend.auth.basic=dev:$$2y$$05$$3Zmx7gYh6mBIIm8O9HTR2uDkoYoRbTMfZpKup5NhmioKrU1YKgmqC
  - traefik.app_api.frontend.rule=Host:app.test;PathPrefix:/api
  - traefik.app_api.frontend.auth.basic=dev:$$2y$$05$$3Zmx7gYh6mBIIm8O9HTR2uDkoYoRbTMfZpKup5NhmioKrU1YKgmqC
  - traefik.app_frontend.frontend.rule=Host:app.test
Run Code Online (Sandbox Code Playgroud)

(用户名:dev 密码:password)

仍然想知道是否有更紧凑的方法来做到这一点。我可能只是使用 traefik.toml 代替。