traefik 教程
traefik 是一個HTTP層面的反向代理和負載均衡, 用Go編寫, 有的功能包括:
- 沒有依賴
- 帶熔斷器
- Let's Encrypt證書支援
- 無縫重啟
- 支援多個後端:Docker/Kubernetes等
- 自帶一個簡單的web ui,用於檢視請求響應時間和配置等
官網是https:// ofollow,noindex" target="_blank">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大法好!