Traefik 2 配置了 docker 标签和 cloudflare https,找不到 404 页面
Traefik 2 configured with docker labels and cloudflare https, 404 page not found
我无法通过 Traefik v2 仪表板(或任何其他服务)404 page not found
。我试图避免 traefik.yml
文件并使用 docker 撰写文件中的 command
和 labels
配置所有内容。 HTTPS 有效,但内容不显示。
这是定义 traefik 服务的组合文件:
version: '3.3'
services:
traefik:
image: traefik:v2.2.1
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --providers.docker.swarmmode=true
- --api
- --entrypoints.websecure.http.tls.certresolver=myresolver
- --certificatesresolvers.myresolver.acme.dnschallenge=true
- --certificatesresolvers.myresolver.acme.email=${CF_API_EMAIL}
- --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- --certificatesresolvers.myresolver.acme.storage=acme.json
- --certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare
labels:
traefik.http.routers.traefik.tls.certresolver: myresolver
traefik.http.services.traefik.loadbalancer.server.port: '8080'
traefik.http.routers.http-catchall.middlewares: redirect-to-https
traefik.http.middlewares.authtraefik.basicauth.users: user://V6Btlaf2i/ju5n/
traefik.http.routers.http-catchall.rule: hostregexp(`{host:.+}`)
traefik.http.routers.traefik.middlewares: authtraefik
traefik.http.routers.traefik.entrypoints: websecure
traefik.http.routers.traefik.service: api@internal
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
traefik.http.routers.http-catchall.entrypoints: web
traefik.http.routers.traefik.rule: Host(`traefik.example.com`)
environment:
CF_API_EMAIL: ${CF_API_EMAIL}
CF_API_KEY: ${CF_API_KEY}
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- external
logging:
driver: json-file
networks:
external:
external: true
如有任何建议,我们将不胜感激。
资源
通过一些更改使其工作:
- 需要指定网络,因为它是外部网络:
traefik.docker.network: external
- 标签应该在集群模式下
deploy
- 在 Cloudflare 中,token 应该取自“My Profile > API Tokens > Global API Key”
version: '3.3'
services:
traefik:
image: traefik:v2.2.1
command:
- --api
- --api.insecure=true
- --accessLog
- --providers.docker
- --providers.docker.swarmmode=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.myresolver.acme.dnschallenge=true
- --certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare
environment:
CF_API_EMAIL_FILE: /run/secrets/cf_api_email
CF_API_KEY_FILE: /run/secrets/cf_api_key
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- external
logging:
driver: json-file
deploy:
labels:
traefik.http.services.traefik.loadbalancer.server.port: '8080'
traefik.http.routers.traefik.middlewares: auth
traefik.http.routers.traefik.entrypoints: web
traefik.http.middlewares.auth.basicauth.users: admin:2y05.ibkghcHaj6ala4xCsgJiww1/uCFB9w.
traefik.docker.network: external
traefik.enable: 'true'
traefik.http.routers.traefik.rule: Host(`traefik.example.com`)
networks:
external:
external: true
我无法通过 Traefik v2 仪表板(或任何其他服务)404 page not found
。我试图避免 traefik.yml
文件并使用 docker 撰写文件中的 command
和 labels
配置所有内容。 HTTPS 有效,但内容不显示。
这是定义 traefik 服务的组合文件:
version: '3.3'
services:
traefik:
image: traefik:v2.2.1
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --providers.docker.swarmmode=true
- --api
- --entrypoints.websecure.http.tls.certresolver=myresolver
- --certificatesresolvers.myresolver.acme.dnschallenge=true
- --certificatesresolvers.myresolver.acme.email=${CF_API_EMAIL}
- --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- --certificatesresolvers.myresolver.acme.storage=acme.json
- --certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare
labels:
traefik.http.routers.traefik.tls.certresolver: myresolver
traefik.http.services.traefik.loadbalancer.server.port: '8080'
traefik.http.routers.http-catchall.middlewares: redirect-to-https
traefik.http.middlewares.authtraefik.basicauth.users: user://V6Btlaf2i/ju5n/
traefik.http.routers.http-catchall.rule: hostregexp(`{host:.+}`)
traefik.http.routers.traefik.middlewares: authtraefik
traefik.http.routers.traefik.entrypoints: websecure
traefik.http.routers.traefik.service: api@internal
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
traefik.http.routers.http-catchall.entrypoints: web
traefik.http.routers.traefik.rule: Host(`traefik.example.com`)
environment:
CF_API_EMAIL: ${CF_API_EMAIL}
CF_API_KEY: ${CF_API_KEY}
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- external
logging:
driver: json-file
networks:
external:
external: true
如有任何建议,我们将不胜感激。
资源
通过一些更改使其工作:
- 需要指定网络,因为它是外部网络:
traefik.docker.network: external
- 标签应该在集群模式下
deploy
- 在 Cloudflare 中,token 应该取自“My Profile > API Tokens > Global API Key”
version: '3.3'
services:
traefik:
image: traefik:v2.2.1
command:
- --api
- --api.insecure=true
- --accessLog
- --providers.docker
- --providers.docker.swarmmode=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.myresolver.acme.dnschallenge=true
- --certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare
environment:
CF_API_EMAIL_FILE: /run/secrets/cf_api_email
CF_API_KEY_FILE: /run/secrets/cf_api_key
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- external
logging:
driver: json-file
deploy:
labels:
traefik.http.services.traefik.loadbalancer.server.port: '8080'
traefik.http.routers.traefik.middlewares: auth
traefik.http.routers.traefik.entrypoints: web
traefik.http.middlewares.auth.basicauth.users: admin:2y05.ibkghcHaj6ala4xCsgJiww1/uCFB9w.
traefik.docker.network: external
traefik.enable: 'true'
traefik.http.routers.traefik.rule: Host(`traefik.example.com`)
networks:
external:
external: true