Traefik反代教程
序:用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: true
providers:
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还没试过,这玩意稳定很重要
收工
非要一张图才能发表,好吧!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
云想流月
校验提示文案
feeafee
校验提示文案
wootim
校验提示文案
值友7294203776
校验提示文案
wootim
校验提示文案
feeafee
校验提示文案
云想流月
校验提示文案
值友7294203776
校验提示文案