问题标签 [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.
networking - 简单的Træfɪk反向代理安装
我正在尝试带有一些 docker 容器的漂亮Træfɪk反向代理。
这是我的 Træfɪk docker -compose.yml:
这是我的服务的docker-compose.yml Web 部件:
启动所有这些东西后,我看到在 Træfɪk Web UI 上创建了我的前端/后端,但我无法通过 my-domain.net 访问我的应用程序。
Træfɪk日志:
转发到http://172.18.0.4:80时出错,err: dial tcp 172.18.0.4:80: i/o timeout
我可以从它的本地 IP 访问应用程序(172.18.0.4
),它工作正常。
我肯定在这里忘记了一些东西,有什么帮助吗?
附加信息:
- 官方
emilevauge/whoami
在单独的 docker-compose 文件中工作正常。 - 我的服务在没有 Træfɪk 的情况下运行良好(通过映射端口 80)
docker - 使用 Traefik 路由路径
目前我正在尝试使用 Traefik 为一些 docker 容器设置负载均衡器/反向代理。我在配置 Treafik 以使用某些前缀路径使我的应用程序可用时遇到问题。基于这个示例,我能够使用 Docker 和 Docker compose 运行基本的 Traefik 配置。问题是我能够在路径上访问“whoamI”容器,但不能访问我的应用程序和其他容器。
例如,我创建了一个 docker-compose 文件(见下文)来启动 whoami 容器,以及五个 Portainer 容器(以便人们可以重新创建场景)。我希望 woamI/wai
和 Portainer 可以在/portainer1
.
相反,我可以访问 whoami 网络服务器(通过/wai
)而不是 Portainer(通过/portainer1
)。但是,我可以在/portainer2
. 这两者之间的 Traefik 配置的唯一区别是使用“PathStrip”而不是“Path”。然而,令人讨厌的是,我只能在导航到时获得一个白页/portainer2
;只有页面标题和一些 html 被加载。我还启动了一个暴露给主机的 Portainer 容器,以验证预期的行为(一个正常的 Portainer 页面)。另请参阅下面的附图。
编辑:
有趣的是,我也能够在/portainer4/
(但不是/portainer4
)到达 Portainer,从而得到相同的白页。/portainer2/
导航到和之间的区别在于/portainer4/
我注意到 Traefik 中有一些额外的日志记录(见下文)。通过 导航到 Portainer 时/portainer4/
,日志中会显示三行额外的行,指示 400 状态。经过一番调查,我发现这是因为我的浏览器试图加载其他文件(即一个 javascript 文件、一个网站图标和一个样式表)。因此,当在我的浏览器上访问 Portainer 时,/portainer4/
它知道它需要获取那些额外的文件并尝试这样做(导航到 时不会发生这种情况/portainer2
)。当尝试自己访问文件时,例如,导航到/portainer4/ico/favicon.ico
,我得到一个400 Bad Request
. 最后,当导航到/portainer2/ico/favicon.ico
是看到一个404 page not found
。
基于这些结果,我想知道:
- 为什么我无法在 /portainer1 上访问 Portainer,而是在 /portainer2 上?
- 为什么导航到 /portainer2 时看不到完整的 Portainer 页面?
- 为什么在访问文件(例如网站图标)
/portainer2/
和/portainer4/
- 400 Bad Request 的实际含义以及是否/如何解决此问题
我真的很感激一些正确方向的指示
码头工人-compose.yml:
/wai
分别在访问、/portainer1/
、<myIP>/portainer2/
和/portainer3/
后生成的额外 Traefik 日志记录/portainer4/
:
docker-compose - 如何配置带有 docker-compose 的 traefik 为服务路由多个端口
我想通过 docker-compose 配置 traefik 以公开组件服务的多个端口。
例如,在为ember-cli
应用程序提供服务时,如何同时公开主端口和实时重载端口以进行开发?
docker - traefik 代理后面的 docker 中的 gitlab 失败(通常)
我有几个使用 LetsEncrypt 凭据在 docker 中运行并通过 traefik 路由的网站。我想使用 LetsEncrypt 和 traefik 在 docker 中运行本地 gitlab-ce。
所以我将它添加到我的 traefik.toml 文件中:
这对 config/gitlab.rb:
我开始 gitlab:
转到https://gitlab.mydomain.com/我得到了一个带有 LetsEncrypt 生成证书的安全站点,但该站点没有加载:
内部服务器错误
当我重新加载页面时,我在docker logs gitlab -f
:
在日志中搜索/error/i
时,我看到一些可能是问题的东西(zruby/gems/2.3.0/gems/redis-3.2.2z 中报告了很多错误),但没有“确凿证据”AFAICT。
最疯狂的是,我运行该网站的大约每十次(随机)次docker restart gitlab
就会完美地出现。我一直很想把它搁置一旁,但其中隐藏着疯狂......
我怎样才能让它可靠地出现?或者我怎样才能更完整地调试它?
docker - traefik-Proxy 后面的 Dockerized Jira 引发 Mixed-Content-Error
我在Traefik-Installation下设置了一个Dockerized Jira-Instance。
这是我的 docker-compose.yml:
我的 Jira-Baseurl 设置为https://jira.domain.com,我还可以使用https
. 在我的 traefik 设置中,我为每个请求设置了从 http 到 https 的重定向。
我的 traefik.toml 看起来像这样:
这是有效的,但是根据某些请求,我收到以下错误:
混合内容:“ https://jira.domain.com/secure/Dashboard.jspa ”页面通过 HTTPS 加载,但请求了不安全的资源“ http://jira.domain.com/plugins/servlet/gadgets/ ifr?container=atlassian&mi …ivitystream-gadget%2Fgadgets%2Factivitystream-gadget.xml&libs=auth-refresh'。此请求已被阻止;内容必须通过 HTTPS 提供。
我已经读到我必须设置我的代理,但我并不知道如何做到这一点。
docker - 带有 docker 后端的 traefik 反向代理 - 在 traefik 的配置文件中配置前端规则,而不是通过容器标签
为了在动态 IP 地址可能随时间变化的 Docker 容器前使用traefik作为反向代理,traefik 带有 docker backend。我能找到的所有设置示例都遵循相同的模式:
首先,在docker
没有额外配置文件的模式下启动 traefik,激活主机网络模式(可选,如果需要,traefik 可以看到主机上的所有 Docker 网络)并挂载 Docker unix 套接字,以便 traefik 可以监听容器启动和停止。
然后,启动另一个容器并至少设置以下标签:
- traefik.backend:“一些后端名称”
- traefik.frontend.rule: "Host: localhost; Method: GET" (或任何你的规则)
- traefik.port: 80 (或者你的容器内部暴露的任何端口)
例子:
然后,做一个curl localhost
,可以在traefik
容器的日志中看到它接受了请求并将其路由到 NGINX 容器。
到目前为止,一切都很好......但是,我不喜欢我必须在应用程序本身(我的 docker- compose 文件设置容器,标签等通常位于)。相反,我想将其与应用程序分开并将其配置为 traefik 配置的一部分。
这有可能吗?我尝试的是traefik.frontend.rule
从示例 nginx 容器中省略标签,而是安装以下配置文件traefik
:
因此,启动命令traefik
变为:
但是,这似乎没有将配置文件中的前端规则与 nginx 容器中的后端标签附加在一起。curl localhost
现在返回404 / Not found
错误。
ssl - 带有自签名证书的 Traefik
我有一个生成 ACME 证书的 Traefik 反向代理,我想在我的 docker 容器上启用 SSL。
在我的容器中,我有一个自签名证书,但 Traefik 拒绝连接到它。
我的 docker-compose.yml:
我收到了这个错误:
内部服务器错误
reverse-proxy - 如何使用 docker 后端在 traefik 中设置默认主机容器?
我有一个使用 traefik 的反向代理设置。这很棒!
我试图弄清楚如何配置它,以便当有人去HOSTNAME
orwww.HOSTNAME
时,我可以让它默认路由到我选择的某个容器/子域。假设有效的 DNS 记录。
我这里有一个配置 toml 文件。然后我启动了一堆容器,docker 后端监视并获取这些容器。例如,
正在浏览static.HOSTNAME
作品。雅虎!但假设我想要浏览HOSTNAME
也可以服务static.HOSTNAME
。
任何提示都会很棒!谢谢。
docker - traefik 主机名适用于 Web 应用程序,但不适用于 mongodb
我正在使用 docker-compose 和 traefik 运行一个 mongo 实例。
Mongo 运行良好,我可以使用127.0.0.1
Mac 进行连接。
问题是我无法使用 hostname 进行连接myapp-mongo.docker.localhost
。它仅适用于 IP 127.0.0.1。
尝试 ping IP 127.0.0.1 响应正常,但尝试 ping 主机名不起作用。
我已经添加127.0.0.1 proxy.docker.localhost
到/etc/hosts
让 traefik 工作。
所有其他 Web 应用程序的主机名都可以正常工作,例如myapp.docker.localhost
. 这个问题只发生在这个 mongodb 容器上。
traefik - Traefik 中的路径和路径前缀匹配问题
使用 docker 容器中的 Traefix 1.2.3 版,我设置了以下文件。
如果我删除“web”部分周围的评论,所有流量都将转到该容器,而忽略 Path 或 PathPrefix 或任何其他尝试以 /api/ 开头的 URL 以转到服务容器。
像上面那样注释掉“web”容器,流量就会进入服务容器。这是意料之中的,因为当然没有其他容器。
我根本找不到如何让 Traefik 与 Path、PathPrefix、PathPrefixStrip 或任何其他组合一起工作。此处和文档中的示例似乎表明我应该得到我想要的行为,但我无法意识到这一点。