Traefik+;Docker反向代理-不同路径的不同身份验证?
我正在运行Docker服务(OwnTracks Recorder),使用Traefik作为身份验证的反向代理。它的设置是通过docker compose;以下是服务上的标签: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 这正是我们想要的。我试图
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