本文介绍 请求(Requests) 与 Traefik 之间不可告人的秘密~
总览全局
让我们放大 Traefik 的架构,并讨论能够创建路由的组件。

- 定义 Traefik 的
入口点(ENTRYPOINTS),用于接收请求 - 收到请求后,
路由(选择)器(ROUTERS)会分析请求,查看请求是否匹配定义好的规则- 如果有
中间件(MIDDLEWARES),那么可能会对请求做一些转化(transform)
- 如果有
- 如果有则会将请求转发到定义的
服务(SERVICES)——这里的服务不是指你的应用程序!! - Traefik 的
服务(SERVICES)将请求转送(forwarding)到你的应用程序
服务(SERVICES) 根据上下文语境,
有时候是指:Traefik 的服务(SERVICES)
有时候是指:你的应用程序
明确职责
Providers在你的基础架构中发现服务 (它们的 IP,是否健康,…)Entrypoints侦听传入的流量Routers分析请求 (host, path, headers, SSL, …)Middlewares也许会对请求做一些处理 (身份验证,流量限速,headers)
Services服务将请求转发给你的服务 (负载均衡,…)
入口点(Entrypoints)

TRAEfik IS THE ONLY ACCESSIBLE CONTAINER FROM THE OUTSIDE
TRAEfik 是唯一可以从外部访问的容器
把上面一句话的意思再整理一下:
如果我们要反向代理我们的服务(比如某个 Web应用),把 Traefik 与服务看作一个整体的话,那么 Traefik 就是唯一对外的访问入口~
运行一个什么都没有配置(也就是都使用默认配置),Traefik 的默认入口点是端口 80,
1 | $ sudo ./traefik & |
1 | $ sudo kill 1259 |
当然我们可以设置多个入口:

设置入口的格式是:1
[host]:port[/tcp|/udp]
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20## Static configuration
## entryPoints 的配置是属于静态配置
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
streaming:
address: ":1704/udp"
tcpep:
address: ":3179"
udpep:
address: ":3179/udp"
# 有多个网卡时,指定监听那个网卡
specificIPv4:
address: "192.168.2.7:8888"
specificIPv6:
address: "[2001:db8::1]:8888"
entryPoints 还可以设置信任的 IP地址,请求生命周期,http 转 https 等…
更多信息,请查阅 官方文档 - EntryPoints
X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到 Web服务器 的客户端最原始的 IP地址的 HTTP请求头 字段
路由(Routers)
路由(选择)器 —— 负责将传入请求连接到可以处理这些请求的服务。

在这个过程中,如果有中间件,那么请求转发到服务之前,可能会使用一些中间件来对请求做一些修改~
这里的服务是指 Traefik 的 SERVICE
服务(Services)
服务 —— 配置如何访问服务
第一个服务是指 Traefik 的 SERVICE
第二个服务是指 你的应用程序
