traefik 教程
traefik 是一个HTTP层面的反向代理和负载均衡, 用Go编写, 有的功能包括:
- 没有依赖
- 带熔断器
- Let’s Encrypt证书支持
- 无缝重启
- 支持多个后端:Docker/Kubernetes等
- 自带一个简单的web ui,用于查看请求响应时间和配置等
官网是https://traefik.io/ . 下载traefik之后,要使用traefik,我们首先要写一份配置文件:
defaultEntryPoints = ["http"]
traefikLogsFile = "traefik.log"
logLevel = "INFO"
[accessLog]
filePath = "access.log"
[web]
address = ":8088"
[entryPoints]
[entryPoints.http]
address = ":8080"
compress = true
[file]
[backends]
[backends.local]
[backends.local.servers.all]
url = "http://127.0.0.1:80"
[frontends]
[frontends.local]
backend = "local"
[frontends.local.routes.all]
rule = "Path:/"
如官网所用示例图:
其中有三个概念需要了解:
- entrypoint: 这是流量的入口,即是http还是https
- frontend: 这相当于nginx配置中的location, server_name等,即当流量还在nginx上,没有proxy_pass之前
- backend: 这相当于nginx中,proxy_pass后接的配置
了解了这个概念之后, 我们再来看一下traefik是怎么读取配置文件的. traefik配置文件的读取顺序是:
- 默认配置
- 配置文件
- 命令行参数
- k-v存储
从上往下依次增高. 这也就意味着, traefik可以动态配置. 现在我们来解释一下上面贴出来的配置文件:
- 首先前面六行是配置了traefik自身的配置和日志, 包括日志路径, 入口点, 只支持HTTP因为是在本地使用, 没有配域名和证书
- 然后
[web]
指的是traefik自带的web管理界面 entryPoints
里则是对traefik的入口点进行配置, 包括监听地址等file
中则包括上面所说的frontends
和backends
的配置(记得一定要写file…我被官网教程坑了)
用下来的感受如下(主要是和Nginx作对比):
- 缺少静态文件服务的支持
- web ui意义并不大
- 配置文件比Nginx的还复杂一点, 反向代理对HTTP的操作能力却又不如Nginx
- 只支持HTTP(s),不支持TCP层面的反向代理
于是我又换回了Nginx. Nginx大法好!
更多文章
本站热门
- socks5 协议详解
- zerotier简明教程
- 搞定面试中的系统设计题
- 用peewee代替SQLAlchemy
- frp 源码阅读与分析(一):流程和概念
- Golang(Go语言)中实现典型的fork调用
- DNSCrypt简明教程
- 一个Gunicorn worker数量引发的血案
- Golang validator使用教程
- Docker组件介绍(一):runc和containerd
- Docker组件介绍(二):shim, docker-init和docker-proxy
- 使用Go语言实现一个异步任务框架
- 协程(coroutine)简介 - 什么是协程?
- SQLAlchemy简明教程
- Go Module 简明教程