Traefik在docker swarm模式下将容器ip(10.255.0.2)转发为远程地址

时间:2018-03-23 14:29:55

标签: docker docker-swarm restriction traefik

我在群集模式下使用docker。我有3个容器,如下图所示。

我想在子域名下使用docker-swarm-visualizerportainer工具,例如:

  • portainer.mydomain.com
  • vizualizer.mydomain.com

但我想限制访问这些子域名。

我添加了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访问,或者是否有其他方法可以限制域级别的访问?

感谢。

enter image description here

2 个答案:

答案 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发布,似乎。