entryPoints配置
defaultEntryPoints = ["oneway"]
[entryPoints]
# 代表traefik的监听端口为90
[entryPoints.oneway]
address = ":90"
#90端口接收到的请求先进行鉴权,traefik会先访问跳转到http://127.0.0.1:51001/t/test1进行权限验证
[entryPoints.oneway.auth.forward]
address = "http://127.0.0.1:51001/t/test1"
trustForwardHeader = true
authResponseHeaders = ["Ws-Platform-Token", "Ws-Platform-Userid", "Ws-Platform-Roleid", "Ws-Platform-Groupids"]
90端口接收到的请求先进行鉴权,traefik会先访问跳转到http://127.0.0.1:51001/t/test1进行权限验证
例如,访问http://127.0.0.1:90/abcde,traefik监听到请求,先转发请求至鉴权地址
http://127.0.0.1:51001/t/test1,如果返回非200,那么拒绝/abcde请求,如果200继续转发操作
可以在http://127.0.0.1:51001/t/test1中进行判断用户是否存在/abcde接口权限
frontends/backends前后端服务配置
[file]
#前端服务
[frontends]
#前端服务名auth
[frontends.auth]
#对应的后端服务名为authsystem
backend = "authsystem"
passHostHeader = true
[frontends.auth.routes]
#请求路径前缀为/access/的请求将会认为是属于auth这个前端服务来处理
[frontends.auth.routes.route0]
rule = "PathPrefixStrip:/access/"
#后端服务
[backends]
#后端服务名为authsystem
[backends.authsystem]
[backends.authsystem.servers]
#authsystem后端服务地址为http://127.0.0.1:51001
#配置多个server1....server10
[backends.authsystem.servers.server0]
url = "http://127.0.0.1:51001"
请求经过entryPoints接收以及转发鉴权之后,接下来就是转发到对应的应用服务器进行逻辑处理,上述配置就是请求路径为/access/开头的请求,将会由auth前端处理,auth又会将请求转发至authsystem后端处理
即如果请求地址为http://127.0.0.1:90/access/test1,那请求最终转发到了http://127.0.0.1:51001/test1
consul注册中心整合
上述配置是在配置文件中写死后端服务地址,而生产中通常服务都注册在注册中心,traefik支持和consul的注册中心整合
首先微服务在启动时注册到consul时,添加traefik相关配置的tags标签,配置前端服务frontend的路径前缀
在traefik.toml中配置consul地址和consul中的标签前缀,traefik即可动态构造frontends和backends,动态路由
[consulCatalog]
#consul注册中心地址
endpoint = "localhost:8500"
domain = "consul.localhost"
# consul中服务tags中,traefik相关配置的前缀
prefix = "traefik"