问题标签 [traefik]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
116 浏览

docker - [file] 后端无法识别多个 toml 文件

我有简单的 toml 配置文件

rules.d/ 中的 toml 文件无法识别或加载,我使用的是最新的 docker 版本的 traefik。如果我使用文件名而不是目录,它可以工作。

0 投票
1 回答
2781 浏览

cloudflare - traefik +lets-encrypt + CloudFlare = 6103:X-Auth-Key 标头的格式无效

我正在使用traefik 1.4.0-rc3,我想设置让我们加密以在我的 traefik 反向代理上获取 SSL。

错误是

我在 Windows 上的 Windows 容器内使用 Traefik。

我的 traefik.toml 看起来像这样:

我在这样的容器中运行 traefik:

我已验证我正在使用 Origin CA 密钥

你能帮忙吗?

0 投票
1 回答
989 浏览

ssl - 如何在 docker 中为 SSL 添加正确的标签?

我已经设法将 Traefik 设置为与我的 docker swarm 一起工作,并且对于 HTTP 请求它工作得很好。但是,我不知道如何为我的一些容器设置 SSL。我将使用letsencrypt 生成证书。

traefik.toml(部分)

码头工人-compose.yml

在此配置中,我的应用程序永远不会到达 SSL,因为我的容器没有设置 SSL entryPoint。如果我将“traefik.frontend.entryPoints”更改为“https”,则会调用 Letsencrypt(LE 由于暂存而出错,但此时这对我来说并不重要)。

我最大的问题是,我仍然不知道如何将 traefik TOML 配置转换为 docker-compose 标签。例如,Traefik 文档解释了入口点,但我有一堆服务在不同的域下。有些有 SSL,有些没有 SSL;因此,我希望能够仅使用 docker-compose 设置 http 和 https 入口点、http 到 https 重定向等。

另外,一旦我能够在 docker-compose 中设置入口点,我是否需要将[entryPoints]块保留在 traefik.toml 中?

0 投票
2 回答
1534 浏览

docker - 是否可以将 Traefik 限制为当前(docker-compose)堆栈?

客观的

我有一台运行 Rancher (Docker) 的服务器。在该服务器中,我有几个不相关的堆栈。

我想让 Traefik 成为该堆栈的主要交互点。并根据路径对不同容器的请求进行负载平衡/代理。

我想让它把流量发送/api到后端server服务。并将流量发送/frontend服务。

当前状态

docker-compose.yml这是我只显示相关服务的精简版:

然后使用监听公共端口的 Rancher 负载均衡器,我将请求重定向app1.example.com到我的proxy服务。然后它接受请求并根据路径将流量重定向到两个容器中的每一个。

我还将流量重定向traefik.app1.example.com到同一个服务,重定向到访问 Web UIproxy的端口。8080

如果我只有一个堆栈,它可以工作。

问题

如果我添加另一个堆栈(或者如果我复制该堆栈)并且有更多带有 Traefik 标签的服务,则proxyfromapp1将从中的服务app2和任何其他声明 Traefik 标签的堆栈中读取标签。

然后,在 in 的 Web UIproxyapp1,我可以看到来自所有不同堆栈的所有后端。但是前端规则会被覆盖。

问题

到目前为止,我看到的示例大多是关于如何将 Traefik 用作独特的全局负载均衡器/代理。我刚刚意识到我假设我也可以为每个堆栈创建隔离的 Traefik 实例,或者 Traefik 负载均衡器的层次结构。

在我看来,我缺少一些配置或误解了一些东西。

但是,我仍然要问,是否有可能每个堆栈有不同的隔离 Traefik 实例,并让它们只监听和使用自己堆栈中的服务?

Rancher可以吗?是否可以使用任何其他 Docker 堆栈编排器(例如 Swarm)?

如果这是可能的,我错过了什么?

0 投票
1 回答
2160 浏览

docker - 向 traefik 反向代理发出 HTTP GET 请求时 axios 无法覆盖主机

上下文:我使用 traefik 作为我的反向代理向我的后端 Golang 服务器发送 HTTP 请求,我已经添加了一些 CORS 处理。它适用于 Postman,当我处理 HTTP GET 请求时

在此处输入图像描述

问题:我在浏览器上收到此 404 错误:

在此处输入图像描述

axios调用覆盖Host

在控制台中收到此错误

axios 使用 X-Host-Override 调用覆盖默认主机

Axios 调用设置默认标头 - 似乎它总是使用 localhost 作为主机

在此处输入图像描述

在路由处理程序中设置 CORS

0 投票
2 回答
3143 浏览

docker - 使用 Docker 运行时,为什么 Traefik 没有读取我的 traefik.toml 文件?

当按照官方 Docker 镜像中提到的步骤进行操作时,我似乎无法让 Traefik 读取我的traefik.toml文件。

这有效

来自docker-compose.yml

请注意,没有挂载配置文件,所有配置都作为参数传递。

现在,如果我运行,docker-compose up我会看到来自 Traefik 的一堆调试语句。如果我测试应用程序,它可以工作(是的,我正在运行 Windows 7):

这不起作用

来自docker-compose.yml

请注意,没有参数被传递到 Traefik,只有配置文件。

现在,如果我运行docker-compose up,则不会出现任何日志语句。如果我测试应用程序,我会得到 404:

当然,如果没有任何调试语句,很难知道哪里出了问题。

这是我的traefik.toml文件:

我尝试将文件安装到/etc/traefik/traefik.tomland /traefik.toml,它给出了相同的结果。

我也尝试运行官方示例中提到的示例,结果相似。

我在 Windows 7 上运行它,虽然我不确定这是否相关。我可以成功地将文件挂载到其他图像中而不会出现问题。

那么我做错了什么?

0 投票
1 回答
705 浏览

spring-boot - 使用 Docker Swarm 无法通过 Traefik 访问 Spring Boot 组件

我正在尝试在 Docker Swarm 的 Traefik 反向代理后面运行由 2 个微服务组成的 Spring Boot 应用程序。为我的 Spring Boot Web 应用程序使用双网络堆栈时,应用程序没有响应。

我确实有以下网络

和下面的配置启动 Traefik

现在,有一个 docker-compose.yml 文件

以及启动复合的命令:

在 Traefik 中有一个可见的 URL:web-marc.traefik,它在 /etc/hosts 中定义

不幸的是,当我询问时,这只是一个超时”</p>

我试图从 Web 组件中删除默认网络。它可以通过 Traefik 到达 web 组件,但是(当然)它找不到 be 组件。

为什么我没有收到 Spring Boot 的回复?

0 投票
1 回答
8413 浏览

gitlab - traefik代理背后的Gitlab“网关超时”

所以我正在尝试使用 traefik 作为反向代理在 docker swarm 上设置一个 gitlab-ce 实例。

这是我的代理堆栈;

还有我的 gitlab 堆栈

traefik-net是一个覆盖网络

因此,当我使用docker stack deploy并访问 lab.mydomain.com 进行部署时,我得到了Gateway Timeout错误。当我curl localhost在 gitlab 容器中执行时,它似乎工作正常。不知道问题是什么,任何指针将不胜感激

0 投票
1 回答
757 浏览

amazon-web-services - 使用相同的 URL 公开相同的服务,但使用 traefik 公开两个不同的端口?

最近我正在尝试在中国的 AWS 上使用 Kubernetes v1.7.3 和 jenkins v2.73.2 设置 CI/CD 流(GFW 阻止 dockerhub)。

现在我可以用 traefik 公开服务,但似乎我不能用两个不同的端口用相同的 URL 公开相同的服务。

理想情况下,我希望将http://jenkins.mydomain.com公开为端口 80 上的 jenkins-ui,以及端口 50000 上的 jenkin-slave (jenkins-discovery)。例如,我希望它能够工作:

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: jenkins namespace: default spec: rules: - host: jenkins.mydomain.com http: paths: - path: / backend: serviceName: jenkins-svc servicePort: 80 - host: jenkins.mydomain.com http: paths: - path: / backend: serviceName: jenkins-svc servicePort: 50000 我的 jenkins-svc 定义为

apiVersion: v1 kind: Service metadata: name: jenkins-svc labels: run: jenkins spec: selector: run: jenkins ports: - port: 80 targetPort: 8080 name: http - port: 50000 targetPort: 50000 name: slave

实际上,后一条规则会覆盖前一条规则。

此外,我尝试过两个插件:kubernetes-cloudkubernetes。使用前一个选项我无法配置 jenkins-tunnel URL,因此从站无法与主站连接;使用后一个选项,我无法从 AWS ECR 等私有 docker 注册表中提取(没有地方提供凭证),因此无法创建从属(imagePullError)。

最后,实际上我只是想让 jenkins 工作(使用我的自定义映像创建从站,使用从站构建并在作业完成后删除从站),欢迎任何其他解决方案。

0 投票
1 回答
313 浏览

traefik - 带有 systemd 的 traefik 看不到容器 docker

我想通过 systemd 启动 traefik,但是 systemd 与手动启动的结果不同。

这是我手动启动 traefik 的示例:

当我使用 systemd 时:

知道为什么我看不到我的容器 docker 吗?