Eds*_*ior 5 reverse-proxy forwarding docker-compose traefik
我是 Traefik v2.1.4 的初学者。我在 docker 容器中使用。我正在尝试设置静态路由。我找到了一些使用 toml 配置文件的示例。
[providers]
[providers.file]
[http]
[http.routers]
[http.routers.netdata]
rule = "Host(`netdata.my-domain.com`)"
service = "netdata"
entrypoint=["http"]
[http.services]
[http.services.netdata.loadbalancer]
[[http.services.netdata.loadbalancer.servers]]
url = "https://192.168.0.2:19999"
Run Code Online (Sandbox Code Playgroud)
按照这个例子,我想将它转换为我的 docker-compose 的 docker 标签。
我的 docker-compose 文件:
version: "3.7"
services:
traefik:
image: traefik:v2.1.4
container_name: traefik
restart: always
command:
- "--log.level=DEBUG"
- "--api.insecure=false"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsresolver.acme.tlschallenge=true"
- "--certificatesresolvers.letsresolver.acme.email=my-email@domain.com"
- "--certificatesresolvers.letsresolver.acme.storage=/letsencrypt/acme.json"
labels:
- "traefik.enable=true"
# middleware redirect
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
# global redirect to https
- "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.redirs.entrypoints=web"
- "traefik.http.routers.redirs.middlewares=redirect-to-https"
# dashboard
- "traefik.http.routers.traefik.rule=Host(`traefik.my-domain.com`)"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.middlewares=admin"
- "traefik.http.routers.traefik.tls.certresolver=letsresolver"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.middlewares.admin.basicauth.users=user:hash-passwordXXX"
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
default:
external:
name: network
Run Code Online (Sandbox Code Playgroud)
没有提到指定 url 的 docker 标签(在https://docs.traefik.io/v2.1/routing/providers/docker/#routers中)。我尝试使用 url 而不是端口,但它不起作用。
所以我建议使用文件提供程序(https://docs.traefik.io/v2.1/providers/file/)。
更新你的配置:
services:
...
traefik:
...
command:
...
- "--providers.file.directory=/path/to/dynamic/conf"
config:
- source: redirect.toml
target: /path/to/dynamic/conf/redirect.toml
...
...
configs:
redirect.toml:
file: redirect.toml
Run Code Online (Sandbox Code Playgroud)
并使用您的重定向创建redirect.toml(如您的示例所示)。
当然,您也可以将配置绑定到容器中,或者创建您自己的包含配置的 traefik 镜像,或者...
如果您想使用标签,您可以启动一个使用 socat 进行重定向的服务
services:
...
netdata:
image: alpine/socat
command: tcp-listen:80,fork,reuseaddr tcp-connect:192.168.0.2:19999
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.netdata.rule: Host(`netdata.my-domain.com`)
traefik.http.services.netdata_srv.loadbalancer.server.port: 80
# hm, and probably tell to forward as https, ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7814 次 |
最近记录: |