本文介绍 请求(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
第二个服务是指 你的应用程序