Traefik
Docker中使用
使用文件证书
相比Nginx更加简单,给出docker-compose文件:
services:
traefik:
image: traefik:v3.4
container_name: traefik
security_opt:
- no-new-privileges:true
networks:
- app_net
command:
- "--api.insecure=false"
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=app_net"
- "--providers.file.directory=/etc/traefik/dynamic"
- "--entryPoints.http.address=:80"
- "--entryPoints.https.address=:443"
- "--entryPoints.https.http.tls=true"
- "--entryPoints.http.http.redirections.entryPoint.to=https"
- "--entryPoints.http.http.redirections.entryPoint.scheme=https"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./certs:/certs:ro"
- "./dynamic:/etc/traefik/dynamic:ro"
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.rule=Host(`traefik.evalexp.top`)"
- "traefik.http.routers.dashboard.entrypoints=https"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.tls=true"
- "traefik.http.routers.dashboard.middlewares=dashboard-auth"
- "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$2y$$05$$HaY5fUzjZxKwK6AqKVZyjOMLOIw.BLGtFuHHecSBRocWu6AxeLBDu"
这里需要说明的是,证书需要放置到当前目录下的certs目录中,文件的动态配置放置到dynamic文件夹下,并且添加一个tls.yaml
的配置,如下:
tls:
certificates:
- certFile: /certs/SAN_evalexp.top.cer
keyFile: /certs/SAN_evalexp.top.key
这样就添加了TLS证书;需要注意的是,在我们配置路由的过程中,无需指定证书,traefik会根据SNI自动匹配合适的证书。
当前结构如下:
traefik
├── certs
│ ├── SAN_evalexp.top.cer
│ └── SAN_evalexp.top.key
├── docker-compose.yml
└── dynamic
├── ipfs.yml
└── tls.yaml
使用证书中心
如果通过证书中心,我们就不需要考虑那么多了,参考Traefik 接入,直接将证书相关的去除,添加一个etcd的provider即可。