Traefik Docker Swarm基本身份验证

时间:2019-08-25 23:41:06

标签: docker traefik

我最近在启用Docker Swarm的集群上的Docker容器中设置了Traefik v.1.7.14。作为测试,我创建了一个简单的服务:

ArrayList

如上面的代码所述,我只是在URL上指定的子域docker service create --name demo-nginx \ --network traefik-net \ --label traefik.app.port=80 \ --label traefik.app.frontend.auth.basic="test:$$apr1$$LG8ly.Y1$$1J9m2sDXimLGaCSlO8.T20" \ --label traefik.app.frontend.rule="Host:t.myurl.com" \ nginx 上安装了nginx。

运行此代码时,将成功创建服务。 Traefik还在traefik api和traefik管理员中显示了该服务。

在traefik api中,后端服务的报告如下:

t

当我去访问"frontend-Host-t-myurl-com-0": { "entryPoints": [ "http", "https" ], "backend": "backend-demo-nginx", "routes": { "route-frontend-Host-t-myurl-com-0": { "rule": "Host:t.myurl.com" } }, "passHostHeader": true, "priority": 0, "basicAuth": null, "auth": { "basic": {} } 时,如预期的那样,我收到身份验证提示。

但是,当我输入用户名/密码(在这种情况下为test:test)时,登录提示只会再次提示我,并且不对我进行身份验证。

我已检查确保使用以下命令转义docker标签中的字符:

t.myurl.com

生成密码。

作为测试的一部分,我还尝试关闭了 https 入口点,因为我想查看此循环是否是由ssl触发的。这似乎对解决此问题没有任何影响(规则:echo $(htpasswd -nb test test) | sed -e s/\\$/\\$\\$/g )。 Traefik在这样做后确实对--label traefik.app.frontend.entryPoints=http做出了正确的响应,但是密码身份验证仍然陷入了与以前相同的提示循环中。

删除http标签后,我可以通过我的网址(t.myurl.com)访问我的网站。因此,此问题似乎是在基本身份验证功能内隔离的。

我的DNS提供商是Cloudflare。

如果有人有任何想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

也许您可以尝试以下方法:

$$

因为在命令行中不需要两个<p><?= $content ?: $post->post_excerpt ?></p>