我正在运行一个Docker服务(OwnTracks Recorder),使用Traefik作为身份验证的反向代理。通过docker-compose进行设置;这是服务上的标签:
labels:
- traefik.enable=true
- traefik.frontend.rule=PathPrefixStrip:/owntracks
- traefik.frontend.auth.basic=user1:hash1,user2:hash2
这按预期工作。我要解决的问题是Owntracks实际上包含两个元素:仪表板(位于https://example.com/owntracks和api,位于https://example.com/owntracks/pub。尽管owntracks本身没有内置的身份验证,但我想将仪表板限制为仅user1,同时允许所有经过身份验证的用户访问api。 Owntrack的documentation以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的服务自动发现)。>
任何指针将不胜感激。
答案 0 :(得分:0)
解决方案是使用细分。 Traefik的documentation有点误导人:
段标签用于定义到暴露多个端口的容器的路由。段是应用于容器暴露的端口的一组标签。您可以定义与容器中暴露的端口一样多的段。
实际上,段不仅可以用于使用多个端口的容器,而且可以定义的段数比容器上暴露的端口数多。在这种情况下,它很简单:
nbytes