我一直在关注 Traefik 和 LE 集成的示例以及 SmartHomeBeginner 上的示例,尽管我一直无法让 Traefik 通过 https 在子域上工作。我可以在带有端口号的 IP 地址上看到后端,但这并不理想。
当我在浏览器中查看 HTTPS 页面时,我不断收到 ERR_TOO_MANY_REDIRECTS,并且我已经确认在 Linux 中执行简单的 wget 失败,并且在 20 次重定向后出现 302 错误和重大失败。
我看不出哪里错了...
####### Docker Compose ##########
version: "3.6"
services:
traefik:
image: traefik:1.7.4
container_name: traefik
command: --api --docker
restart: always
ports:
- 80:80
- 443:443
environment:
- CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
- CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY}
networks:
- traefik_proxy
labels:
- "traefik.enable=true"
- "traefik.backend=traefik"
- "traefik.frontend.rule=Host:traefik.${DOMAINNAME}"
- "traefik.port=8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${USERDIR}/docker/traefik/traefik.toml:/traefik.toml
- ${USERDIR}/docker/traefik/acme/acme.json:/acme.json
- ${USERDIR}/docker/shared:/shared
###### traefik.toml ######
logLevel = "DEBUG" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC
defaultEntryPoints = ["https","http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true
exposedByDefault = false
[acme]
email = "email"
storage = "/acme.json"
entryPoint = "https"
# remove below line when happy its all working fine - dev LE certs
caServer="https://acme-staging-v02.api.letsencrypt.org/directory"
#create certificate when container is created
[acme.dnsChallenge]
provider = "cloudflare"
delayBeforeCheck = 0
[[acme.domains]]
main = "xxxx.com"
[[acme.domains]]
main = "*.xxxx.com"
提前致谢。
最佳答案
我已经设法弄清楚我遗漏了什么,traefik.toml 和 docker-compose 文件都正常,唯一的问题是 Cloudflare 设置为“灵活”但必须像我一样设置为“关闭”尝试改用 LE 证书,然后就可以了。请参阅链接以供引用:s3 and cloudflare flexible ssl handshakes
关于http - 使用 LE 集成设置 Traefik - 错误太多重定向/302,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53082591/