Traefik + Docker反向代理-针对不同路径的不同Auth?

时间:2019-04-13 00:21:45

标签: 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

这按预期工作。我要解决的问题是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的服务自动发现)。

任何指针将不胜感激。

1 个答案:

答案 0 :(得分:0)

解决方案是使用细分。 Traefik的documentation有点误导人:

  

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

实际上,段不仅可以用于使用多个端口的容器,而且可以定义的段数比容器上暴露的端口数多。在这种情况下,它很简单:

nbytes