Traefik+;Docker反向代理-不同路径的不同身份验证?

Traefik+;Docker反向代理-不同路径的不同身份验证?,docker,docker-compose,traefik,Docker,Docker Compose,Traefik,我正在运行Docker服务(OwnTracks Recorder),使用Traefik作为身份验证的反向代理。它的设置是通过docker compose;以下是服务上的标签: labels: - traefik.enable=true - traefik.frontend.rule=PathPrefixStrip:/owntracks - traefik.frontend.auth.basic=user1:hash1,user2:hash2 这正是我们想要的。我试图

我正在运行Docker服务(OwnTracks Recorder),使用Traefik作为身份验证的反向代理。它的设置是通过docker compose;以下是服务上的标签:

  labels:
    - traefik.enable=true
    - traefik.frontend.rule=PathPrefixStrip:/owntracks
    - traefik.frontend.auth.basic=user1:hash1,user2:hash2
这正是我们想要的。我试图解决的问题是Owntracks实际上有两个元素:一个位于的仪表板和一个位于的api。虽然owntracks本身没有内置的身份验证,但我想将仪表板仅限于user1,同时允许所有经过身份验证的用户访问api。Owntrack以ngnix为例,我认为在我的例子中,它可能看起来像:

location /owntracks/dashboard/ {
     auth_basic              ....;
     proxy_pass              http://127.0.0.1:8083/;
     proxy_http_version      1.1;
     proxy_set_header        Host $host;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header        X-Real-IP $remote_addr;
}
location /owntracks/pub/ {
     auth_basic              ....;
     proxy_pass              http://127.0.0.1:8083/pub/;
     proxy_http_version      1.1;
     proxy_set_header        Host $host;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header        X-Real-IP $remote_addr;
}
问题是,我不知道如何在Traefik中配置这样的东西。据我所知,整个容器都有一个traefik.frontend.auth.basic“标签”吗?理想情况下,我更愿意通过Owntracks的docker compose文件中的标签进行设置,以避免Traefik本身需要自定义每个服务配置(即,这样我就可以依赖Traefik对服务的自动发现)


任何指针都将不胜感激。

解决方案是使用段。Traefik的有点误导:

段标签用于定义到暴露多个端口的容器的路由。段是应用于容器公开的端口的一组标签。您可以定义与容器中公开的端口数量相同的段

实际上,段不仅可以用于使用多个端口的容器,还可以定义比容器上公开的端口更多的段。在这种情况下,它非常简单:

  labels:
    - traefik.enable=true

    - traefik.segment1.frontend.rule=PathPrefix:/owntracks/pub;ReplacePath:/pub
    - traefik.segment1.frontend.auth.basic=user1:hash1,user2:hash2

    - traefik.segment2.frontend.rule=PathPrefixStrip:/owntracks
    - traefik.segment2.frontend.auth.basic=user1:hash1