Traefik TCP 路由规则与优先级
通用说明
- 路由器名中不能包含字符
@。 - 如果 HTTP 路由器和 TCP 路由器同时监听同一个入口点,则 TCP 路由器将先应用。如果 TCP 路由器未找到匹配路由,则 HTTP 路由器将接管。
规则(Rules)
规则是一组配置了值的匹配器,用于确定特定连接是否符合特定条件。如果规则验证通过,路由器会激活,调用中间件,然后将连接转发到服务。
下表列出了所有可用的匹配器:
| 匹配器 | 描述 |
|---|---|
HostSNI(domain) | 检查连接的 SNI(Server Name Indication)是否等于 domain。支持通配符子域匹配(如 *.example.com)。 |
HostSNIRegexp(regexp) | 检查连接的 SNI 是否匹配 regexp。使用 Go 风格的语法。 |
ClientIP(ip) | 检查连接的客户端 IP 是否为 ip。支持 IPv4、IPv6 和 CIDR 格式。 |
ALPN(protocol) | 检查连接的 ALPN 协议是否等于 protocol。 |
反引号或引号?
要设置规则的值,请使用反引号 ` 或转义双引号 \"。 不接受单引号 '。
复杂规则表达式
可以使用 AND (&&) 和 OR (||) 逻辑运算符,以及括号。 可以使用 NOT (!) 运算符来反转匹配器。
优先级(Priority)
TCP 路由器可以拥有 priority 选项。
- 数值越大,优先级越高。
- 默认优先级为 0。
- 仅在同一入口点上声明的路由器之间考虑。
适用场景
- 基于 SNI 的路由:通过 TLS SNI 区分不同的服务
- 多协议共存:HTTP 路由器和 TCP 路由器同时存在
- 基于 IP 的路由:根据客户端 IP 区分服务
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。