网易首页 > 网易号 > 正文 申请入驻

如何使用 Traefik 反向代理将流量路由到Docker 容器

0
分享至

Traefik 是领先的反向代理和负载均衡器,适用于云原生操作和容器化工作负载。它充当将您的服务发布到互联网的边缘路由器。

Traefik 通过匹配请求属性(例如域、URL 和端口)将请求路由到您的容器。该代理包含自动服务发现,因此您可以实时添加新容器,而无需重新启动 Traefik 服务。

在本指南中,我们将整理一个简单的 Traefik v2 部署,它将发布多个 Docker 容器。这使您可以使用一个 Docker 安装在同一个端口上提供多个服务,例如 Web 应用程序、API 和管理面板。

入门

使用自己的 Docker 映像部署 Traefik 是最简单的。在本指南的其余部分,我们将假设您使用 Docker 运行 Traefik。如果您希望 Traefik 位于 Docker 安装之外,则可以使用单文件二进制文件作为替代选项。

在开始使用 Traefik 之前,您必须创建一个配置文件。将以下内容添加到文件中——我们将在下面解释它的作用:

traefik.toml

[入口点]
[入口点.http]
地址=“:80”
[entryPoints.http.http.redirections.entryPoint]
至 = "https"
方案 = “https”
[入口点.https]
地址=“:443”
[供应商]
[提供者.docker]
网络=“traefik”

这个配置文件为 Traefik 配置了两个“入口点”。入口点描述了请求如何到达 Traefik 服务。创建 HTTP 和 HTTPS 入口点以分别侦听端口 80 和 443。对于 HTTP 请求,使用重定向规则将其转发到入口点。如果您希望能够通过纯 HTTP 提供内容,请删除重定向部分。

https

“提供者”部分配置定义网络路由的源。提供者只是可以向 Traefik 发出路由指令的基础设施组件。如果您愿意,您可以编写一个自定义 HTTP API 端点来定义您的路由。

在此示例中,我们保持简单并使用提供程序。这会监控主机上运行的 Docker 容器。当一个带有 Traefik 特定标签的新容器出现时,这些值将用于设置到该容器的路由。容器需要连接到Docker 网络才能正常工作,因为这是配置文件中指定的网络。立即创建网络:

docker

traefik

docker网络创建traefik

启动 Traefik

现在你已经准备好开始 Traefik 了!使用 Traefik 映像部署一个新容器。将端口 80 和 443 绑定到您的主机,允许 Traefik 侦听传入请求。您还应该将容器加入之前创建的网络。

traefik

将主机的 Docker 套接字挂载到带有标志的 Traefik 容器中。这使 Traefik 能够访问在您的主机上运行的其他容器,从而通过您的配置文件中设置的提供程序自动检测路由。配置文件本身安装在 Traefik 容器内。

-v

docker

/traefik.toml

码头工人运行-d\
-p 80:80\
-p 443:443\
-v $PWD/traefik.toml:/traefik.toml \
-v /var/run/docker.sock:/var/run/docker.sock \
--name traefik \
--网络交易\
交易:2.6

接下来启动几个容器来测试 Traefik 是否正常工作:

码头工人运行-d\
--label traefik.http.routers.apache.rule=主机\(\`apache.example.com\`\) \
--名称阿帕奇\
--网络交易\
httpd:最新的
码头工人运行-d\
--label traefik.http.routers.nginx.rule=主机\(\`nginx.example.com\`\) \
--名称 nginx \
--网络交易\
nginx:最新的

确保您已添加 DNS 记录并将该映射映射到您的 Traefik 主机。您应该能够在浏览器中访问这些域,以分别查看默认的 Apache 和 NGINX 登录页面。这两个容器加入了 Traefik 网络;它们的标签设置了基本路由,通过它们的标头值匹配传入请求。

apache.example.com

nginx.example.com

traefik.http.routers

Host

路由流量

Traefik 支持几种不同的“匹配器”来路由您的流量。我们已经使用了上面的主机匹配器,但您也可以通过 HTTP 方法、标头、URI、IP 地址和查询字符串参数进行路由。将多个匹配器添加到您的容器中以构建更复杂的路由规则。

Traefik 还支持允许您在请求到达您的服务之前修改请求的中间件。您可能希望在代理级别添加前缀、调整标头或应用基本身份验证。这是使用中间件添加额外请求标头的示例:

Headers

X-Proxied-By

码头工人运行-d\
--label traefik.http.routers.nginx.rule=主机\(\`nginx.example.com\`\) \
--label traefik.http.middlewares.demo.headers.customrequestheaders.X-Proxied-By=traefik
--名称 nginx \
--网络交易\
nginx:最新的

Traefik 将流量路由到容器的暴露端口。您可以通过设置标签来指定不同的端口。

traefik.http.services.

.loadbalancer.server.port=8080

添加 SSL

接下来,您应该添加 SSL 以确保您的流量受到完全保护。Traefik 包含Let's Encrypt集成,因此我们现在将使用它来自动生成证书。

将以下部分添加到您的文件中:

traefik.toml

[certificatesResolvers.lets-encrypt.acme]
电子邮件 =“你@example.com”
存储 = "/acme.json"
[certificatesResolvers.lets-encrypt.acme.tlsChallenge]

这将 Traefik 配置为在解析证书请求时使用 Let's Encrypt ACME 提供程序。确保将电子邮件地址替换为您自己的电子邮件地址,以便您收到 Let's Encrypt 发送的任何证书到期提醒。该部分定义了如何进行认证验证;将其留空将使用提供唯一文件的默认流程,Let's Encrypt 将在证书颁发期间请求和验证。

tlsChallenge

重新启动或更换 Traefik 容器以应用新配置。您还应该在容器内挂载一个新文件——Traefik 将使用它来存储证书。

/acme.json

码头工人运行-d\
-p 80:80\
-p 443:443\
-v $PWD/acme.json:/acme.json \
-v $PWD/traefik.toml:/traefik.toml \
-v /var/run/docker.sock:/var/run/docker.sock \
--name traefik \
--网络交易\
交易:2.6

使用仪表板

Traefik 包含一个 Web UI,它提供了部署中活动的端点、提供程序和服务(容器)的图形视图。您可以通过在配置文件中为其设置路由来公开 UI。

首先使用以下部分修改您现有的:

traefik.toml

[API]
仪表板=真
[提供者.文件]
文件名 = "/traefik_dashboard.toml"

接下来使用以下内容创建:

traefik_dashboard.toml

[http.middleware.dashboard_auth.basicAuth]
用户 = [
“管理员:123 美元……”
]
[http.routers.api]
rule = "主机(`traefik.example.com`)"
入口点 = [“https”]
中间件 = [“dashboard_auth”]
服务 = "api@internal"
[http.routers.api.tls]
certResolver = "让加密"

需要新文件,因为 Traefik 不支持“动态”配置(服务和路由器)以及 main 中的“静态”值。仪表板配置文件手动定义映射到内部 Web UI 服务的路由。添加到的行向提供者注册新的路由定义。

traefik.toml

traefik.example.com

providers.file

traefik.toml

file

使用以生成一组HTTP基本验证凭据。将生成的字符串添加到中间件中的数组中。您需要使用此用户名和密码来访问仪表板。

htpasswd

users

dashboard_auth

sudo apt install apache2-utils
htpasswd -nb 管理员 your_password
# 输出管理员:$123...

现在使用更新的配置重新启动 Traefik,记住也要挂载新文件:

traefik_dashboard.toml

码头工人运行-d\
-p 80:80\
-p 443:443\
-v $PWD/acme.json:/acme.json \
-v $PWD/traefik.toml:/traefik.toml \
-v $PWD/traefik_dashboard.toml:/traefik_dashboard.toml \
-v /var/run/docker.sock:/var/run/docker.sock \
--name traefik \
--网络交易\
交易:2.6

您应该能够通过在浏览器中访问来访问仪表板。如果您不想将 Web UI 公开为路由并始终从本地计算机访问它,则可以改为在 Traefik 容器上发布端口。使用以下部分修改您的文件:

traefik.example.com

8080

traefik.toml

[API]
仪表板=真
不安全=真

码头工人运行-d\
-p 8080:8080 \
-p 80:80\
-p 443:443\
-v $PWD/acme.json:/acme.json \
-v $PWD/traefik.toml:/traefik.toml \
-v /var/run/docker.sock:/var/run/docker.sock \
--name traefik \
--网络交易\
交易:2.6

这将允许您通过 访问仪表板。这种方法不应该用于安全的生产环境,但可以更快地设置本地实验。

http://localhost:8080

结论

Traefik 是适用于您的容器的多功能反向代理解决方案。在本文中,我们仅介绍了其最基本的功能。除了与 Docker 的基本使用外,Traefik还与领先的容器编排解决方案一起使用,包括Kubernetes、Docker Swarm和 Mesos。

Traefik 提供 REST API 以及Prometheus、InfluxDB、Datadog 和 Statsd 可以理解的格式的指标。这些功能使您可以将 Traefik 部署与堆栈中的其他基础设施组件一起自动化和检测。这是在不使用完整编排解决方案的情况下向世界发布容器化工作负载的理想方式。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
唉!又有一家大企业成功“结业”了!

唉!又有一家大企业成功“结业”了!

翻开历史和现实
2024-06-10 18:54:33
四川瓦屋山女游客被落石砸中身亡:现场目击者发声,曝更多内情

四川瓦屋山女游客被落石砸中身亡:现场目击者发声,曝更多内情

180°视角
2024-06-13 11:29:52
卡尔:当初我说用霍勒迪换利拉德是降级 人们说我疯了

卡尔:当初我说用霍勒迪换利拉德是降级 人们说我疯了

直播吧
2024-06-13 23:29:14
银行取钱要派出所同意?相关方自己都知不合理了,还有人帮着吹?

银行取钱要派出所同意?相关方自己都知不合理了,还有人帮着吹?

走读新生
2024-06-13 10:32:30
辱韩?哈萨克斯坦媒体嘲弄总统夫人整容脸!韩网友崩溃!

辱韩?哈萨克斯坦媒体嘲弄总统夫人整容脸!韩网友崩溃!

奋斗在韩国
2024-06-13 17:44:55
四川3名干部任上被查!

四川3名干部任上被查!

鲁中晨报
2024-06-13 17:11:07
孙颖莎时代正式确定!陈梦或无缘奥运女单,顶替之人浮现

孙颖莎时代正式确定!陈梦或无缘奥运女单,顶替之人浮现

十点体坛
2024-06-13 22:12:12
科学家终于公布酸奶和大病的关系,你知道吗?

科学家终于公布酸奶和大病的关系,你知道吗?

霹雳炮
2024-06-12 23:41:08
米兰官宣新主帅!丰塞卡签约3年,年薪250万,将1亿签4强援

米兰官宣新主帅!丰塞卡签约3年,年薪250万,将1亿签4强援

奥拜尔
2024-06-13 18:00:19
新型卖淫方式,让人预想不到,但却真实存在!

新型卖淫方式,让人预想不到,但却真实存在!

雪影的情感
2023-11-18 11:51:16
国足大洗牌!7人锁定主力,5人基本无缘18强赛,3大老将永久被弃

国足大洗牌!7人锁定主力,5人基本无缘18强赛,3大老将永久被弃

侃球熊弟
2024-06-13 10:46:58
联盟高管:詹姆斯掏空湖人家底 巴斯没钱升级球队 已连续四年亏本

联盟高管:詹姆斯掏空湖人家底 巴斯没钱升级球队 已连续四年亏本

篮球话题团
2024-06-13 00:54:53
太逆天,黄景瑜中国人民警察大学招生简章登上热搜,评论区炸锅了

太逆天,黄景瑜中国人民警察大学招生简章登上热搜,评论区炸锅了

兰子记
2024-06-13 22:15:00
一年前刚获聘新职的刘宝琴,被查了

一年前刚获聘新职的刘宝琴,被查了

政知新媒体
2024-06-13 11:09:14
1951年,小战士送炮弹见军长眼熟,意外发现是他“牺牲”19年的父亲

1951年,小战士送炮弹见军长眼熟,意外发现是他“牺牲”19年的父亲

古今档案
2024-06-01 23:29:16
闹大了!江苏河道水位下降,密密麻麻的地笼露出水面,评论区炸锅

闹大了!江苏河道水位下降,密密麻麻的地笼露出水面,评论区炸锅

椰青美食分享
2024-06-14 02:42:18
蔡磊夫妇,“翻车”了,直播镜头后的蔡磊,藏不住了?

蔡磊夫妇,“翻车”了,直播镜头后的蔡磊,藏不住了?

李昕言温度空间
2024-06-05 14:54:34
董路:孙兴慜绝对是个伪君子&比李刚仁差远了 安慰王大雷是在羞辱

董路:孙兴慜绝对是个伪君子&比李刚仁差远了 安慰王大雷是在羞辱

直播吧
2024-06-13 19:35:15
浙江海宁试点商品房“以旧换新”:存量住房评估总价不得高于新房总价60%

浙江海宁试点商品房“以旧换新”:存量住房评估总价不得高于新房总价60%

澎湃新闻
2024-06-13 14:36:28
爆冷杀入“阿里全球数学竞赛”的中专女生:梦想就是考大学

爆冷杀入“阿里全球数学竞赛”的中专女生:梦想就是考大学

澎湃新闻
2024-06-13 20:48:30
2024-06-14 07:12:49
科技新潮观
科技新潮观
带你感受不一样的新科技
89文章数 117477关注度
往期回顾 全部

科技要闻

小红书员工仅1/5工龄满2年 32岁就不让进了

头条要闻

欧盟拟加税 玉渊谭天:中方可对欧盟白兰地等采取行动

头条要闻

欧盟拟加税 玉渊谭天:中方可对欧盟白兰地等采取行动

体育要闻

乔丹最想单挑的男人走了

娱乐要闻

森林北报案,称和汪峰的感情遭受压力

财经要闻

私募大佬孙强:中国为什么缺少耐心资本

汽车要闻

升级8155芯片 新款卡罗拉锐放售12.98-18.48万

态度原创

艺术
本地
游戏
数码
公开课

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

《乐高地平线大冒险》使用虚幻5开发 支持光追

数码要闻

三星 Galaxy Watch 首款 FE 产品正式发布,199 美元起

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版