gpt4 book ai didi

docker - 使用没有子域的域名会导致路由失败

转载 作者:行者123 更新时间:2023-12-02 18:21:40 25 4
gpt4 key购买 nike

我正在尝试使用traefik创建一个简单的应用程序来处理路由和SSL,但是当我想使用“example.com”而不是“subdomain.example.com”时遇到了问题

如果我尝试包含仅带有“example.com”前端规则的服务,则唯一有效的规则是“monitor.example.com”。 “api.example.com”将不起作用并返回404。如果我注释掉了“example.com”的前端规则,则“api.example.com”将再次起作用。但是,无论如何,“monitor.example.com”都可以正常工作。此外,无论如何,“example.com”始终会返回404。

这是我的docker-compose文件:

version: '3'
services:
reverse-proxy:
image: traefik
restart: always
command: --docker
ports:
- 80:80
- 443:443
networks:
- web
labels:
- "traefik.frontend.rule=Host:monitor.example.com"
- "traefik.port=8080"
- "traefik.enable=true"
- "traefik.docker.network=web"
- "traefik.backend=traefik"
environment:
- CLOUDFLARE_EMAIL=###
- CLOUDFLARE_API_KEY=###
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/project/traefik/traefik.toml:/traefik.toml
- /home/project/traefik/acme.json:/acme.json
container_name: traefik

api:
image: api
expose:
- 5080
restart: always
networks:
- web
container_name: api
labels:
- "traefik.frontend.rule=Host:api.example.com"
- "traefik.enable=true"
- "traefik.docker.network=web"
- "traefik.port=5080"
- "traefik.backend=api"

app:
image: app
restart: always
networks:
- web
container_name: app
labels:
- "traefik.frontend.rule=Host:example.com"
- "traefik.enable=true"
- "traefik.docker.network=web"
- "traefik.backend=app"
- "traefik.port=80"

networks:
web:
external: true

这是我的traefik配置:
defaultEntryPoints = ["https", "http"]

[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[entryPoints.trdash]
address = ":8080"
[entryPoints.trdash.auth]
[entryPoints.trdash.auth.basic]
users = [
"admin:###",
]

[api]
entryPoint = "trdash"

[acme]
email = "###"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
onDemand = false
[[acme.domains]]
main = "example.com"
[[acme.domains]]
main = "*.example.com"
[acme.dnsChallenge]
provider = "cloudflare"

任何帮助,将不胜感激,谢谢!

编辑:
好的,我似乎通过在Cloudflare上使用的域上禁用“橙色云”解决了自己的问题。此外,我还必须删除traefik.toml文件中的http到https重定向规则。我不明白为什么这是一个问题,所以我将把问题悬而未决。这确实似乎抵消了Cloudflare提供的许多值(value)。

最佳答案

事实证明,问题在于启用Cloudflare代理(橙色云)而不启用后端SSL。只要我在服务器上具有SSL证书(我通过“加密”完成),就可以将Cloudflare SSL设置为“完全(严格)”,并且路由现在可以正常工作。

感谢Traefik Slack上的Daniel Tomcej帮助我找到了这个答案。

关于docker - 使用没有子域的域名会导致路由失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com