Traefik反代教程

作者:Angus疯子

序:用Traefik做反代服务几年了,一直稳如老狗

网上很多相关教程但是都及其复杂,Traefik确实有多种写法,我这种写法我认为是最简便的,相信小白也能看的懂,如果你觉得你的写法更好,你是对的!你说npm更好,你是对的,你说lucky更好,你是对的!请点击右上角的X,谢谢!

先吐槽一下张大妈,都特么2024年了,代码格式还是稀烂,吐!

正文

本教程更适合NAS宝宝们没有80和443端口的体质,仅用一个端口号即可实现http自动跳转https,使用二级域名同一端口来区分不同服务爽歪歪。成功部署后只需修改dynamic_conf.yml文件保存后即时生效,不用重启容器,记得用类vs code这种编辑器,用windows记事本极易把格式打乱,然后说:辣鸡,怎么都跑不起来!

来了

1.新建三个文件acme.json、traefik.yml、dynamic_conf.yml,放到你想放到的地方,这三兄弟不能分离,一定要在一个窝里

2.修改 acme.json 权限为600 (这步必须做,不然申请证书会报错)

命令 chmod 600 /你放的路径/traefik/acme.json

3.按需修改traefik.yml、dynamic_conf.yml,注释的地方就是需要改的地方

4.以下例子是DNSPod

# traefik.yml配置entryPoints: websecure: address: ":8433" #只需改这里的端口号,随便你喜欢,改完记得路由器映射出去 http: redirections: entryPoint: to: websecure scheme: https permanent: true priority: 10 serversTransport: insecureSkipVerify: trueproviders: docker: defaultRule: Host(`{{normalize .Name }}.xxxxxxx.com`) #只需改这里的根域名 exposedbydefault: false file: filename: "/etc/traefik/dynamic_conf.yml" certificatesresolvers: LetsEncrypt: acme: email: xxxxxxx@qq.com #只需改这里的邮箱(腾讯云、阿里云、CF) storage: /etc/traefik/acme.json dnschallenge: provider: dnspod #域名解析运营商 delayBeforeCheck: 30 resolvers: - "1.1.1.1:53" - "8.8.8.8:53" # 常用域名解析运营商对照 # 腾讯云 dnspod# 阿里云 alidns# CF cloudflare

# dynamic_conf配置http: routers: plex: #随便你写啥 entryPoints: - websecure service: plex #随便你写啥,但要跟下面的一致 rule: "Host(`plex.xxxxxxxx.com`)" #只需改这里的二级域名 tls: certResolver: LetsEncrypt domains: - main: "xxxxxxx.com" #只需改这里的根域名 sans: "*.xxxxxxx.com" #只需改这里的根域名 emby: entryPoints: - websecure service: emby rule: "Host(`emby.xxxxxx.com`)" tls: true nav: entryPoints: - websecure service: nav rule: "Host(`nav.xxxxxx.com`)" tls: true ################## 华丽的分割线 ################## services: plex: #随便你写啥,但要跟上面的一致 loadBalancer: servers: - url: "http://127.0.0.1:32400" emby: loadBalancer: servers: - url: "http://10.0.0.5:12345" nav: loadBalancer: servers: - url: "http://10.0.0.5:12345"

部署容器

命令部署(腾讯云dnspod示例)docker run -d --name=traefik --net=host --restart always -e TZ=Asia/Shanghai -v /xxxxxx/docker/traefik:/etc/traefik:rw -v /var/run/docker.sock:/var/run/docker.sock:rw -e DNSPOD_API_KEY=APPID,密钥 -e DNSPOD_HTTP_TIMEOUT=30 traefik:latest堆栈部署(按需改运营商)version: '3.3'services: traefik: container_name: traefik network_mode: host restart: always environment: - TZ=Asia/Shanghai - DNSPOD_API_KEY=APPID,密钥 #腾讯云,中间是因为逗号 - DNSPOD_HTTP_TIMEOUT=30 #腾讯云# - CF_API_EMAIL=CF邮箱 #CF# - CF_API_KEY=global_key #CF# - ALICLOUD_ACCESS_KEY=没用过 #阿里云# - ALICLOUD_SECRET_KEY=没用过 #阿里云# - ALICLOUD_REGION_ID=没用过 #阿里云 volumes: - '/xxxxxx/docker/traefik:/etc/traefik:rw' - '/var/run/docker.sock:/var/run/docker.sock:rw' image: 'traefik:2.11.2'

以上用的稳定版2.11.2,最新的3.0还没试过,这玩意稳定很重要

收工

非要一张图才能发表,好吧!

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部