我在群集模式下使用docker。我有3个容器,如下图所示。
我想在子域名下使用docker-swarm-visualizer
和portainer
工具,例如:
但我想限制访问这些子域名。
我添加了traefik.frontend.rule=Host:portainer.mydomain.com
和其他标签,没有限制,一切正常。
但是我将traefik.frontend.whitelistSourceRange=81.x.x.200
标签添加到我的服务并尝试从我的公共IP 81.x.x.200访问它。但是在trafeik日志中我看到了
time="2018-03-23T14:23:30Z" level=debug msg="source-IP 10.255.0.2 matched none of the whitelists - rejecting" ,
time="2018-03-23T14:23:47Z" level=debug msg="source-IP 10.255.0.2 matched none of the whitelists - rejecting"
如何确保这些子域只能从81.x.x.200访问,或者是否有其他方法可以限制域级别的访问?
感谢。
答案 0 :(得分:0)
Traefik不会看到发出查询的公共IP,而是会在docker network上看到您的网关本地IP。
要将查询重定向到包含子域的服务,您应该使用matchers。
您可以在服务上贴上标签:
traefik.frontend.rule=Host:portainer.mydomain.com
希望这有帮助。
答案 1 :(得分:0)
[求助]经过一些研究后我发现whiteListing还没有支持公共IP地址。
但幸运的是我发现这commit似乎会解决我的问题:)他们添加了一个新的标签支持frontend.whiteList.useXForwardedFor=true
。
所以,我必须等待版本1.6发布,似乎。