Docker 使用Traefik的Mailcow反向代理未路由到正确的Nginx服务

Docker 使用Traefik的Mailcow反向代理未路由到正确的Nginx服务,docker,docker-compose,nginx-reverse-proxy,traefik,traefik-ingress,Docker,Docker Compose,Nginx Reverse Proxy,Traefik,Traefik Ingress,我正在尝试跟踪已停靠的mailcow,并使用Traefik作为我的负载平衡器 我已成功获得SSL证书,certdump在检查日志时按预期工作 我遇到的问题是,当我访问mail.example.com时,nginx-mailcow容器没有收到请求。我的Traefik日志显示: level=error msg=“entryPoint\”安全\”不存在“路由名称”=moo@dockerentryPointName=secure level=error msg=“此路由器没有有效入口点”路由器名称=mo

我正在尝试跟踪已停靠的mailcow,并使用Traefik作为我的负载平衡器

我已成功获得SSL证书,
certdump
在检查日志时按预期工作

我遇到的问题是,当我访问
mail.example.com
时,
nginx-mailcow
容器没有收到请求。我的Traefik日志显示:

level=error msg=“entryPoint\”安全\”不存在“路由名称”=moo@dockerentryPointName=secure
level=error msg=“此路由器没有有效入口点”路由器名称=moo@docker

我的
docker compose.override.yml
如下所示(与社区文档没有太大区别):

版本:“2.1”
服务:
nginx mailcow:
网络:
特拉菲克:
网状物:
标签:
-traefik.enable=true
-traefik.http.routers.moo.rule=Host(`${MAILCOW\u HOSTNAME}`)
-traefik.http.routers.moo.tls=true
-traefik.http.routers.moo.tls.certresolver=godaddy
-traefik.http.routers.moo.middleware=redirect@file
-traefik.http.routers.moo.service=nginx-mailcow
-traefik.http.services.moo.loadBalancer.passHostHeader=true
-traefik.http.middleware.https redirect.redirectscheme.scheme=https
-traefik.http.middleware.https redirect.headers.customrequestheaders.X-Forwarded-Proto=https
-traefik.http.routers.moo.middleware=https重定向
-traefik.http.services.moo.loadbalancer.server.port=80
-traefik.http.routers.moo.entrypoints=secure
-traefik.docker.network=web
证书转储程序:
图片:humenius/traefik证书转储程序
容器名称:traefik\u certdumper
网络模式:无
卷数:
-顶点:/traefik:ro
-./data/assets/ssl/:/output:rw
环境:
-域=${MAILCOW_HOSTNAME}
网络:
特拉菲克:
外部:正确
网状物:
外部:正确
卷数:
顶点:
名称:“traefik_acme”
有人能看出我做错了什么吗

我也只尝试过:

标签:
-traefik.enable=true
-traefik.http.routers.moo.rule=Host(`${MAILCOW\u HOSTNAME}`)
-traefik.http.routers.moo.tls=true
-traefik.http.routers.moo.tls.certresolver=godaddy
-traefik.http.services.moo.loadbalancer.server.port=80
-traefik.http.routers.moo.entrypoints=secure
-traefik.docker.network=web

这仍然不起作用。

为服务定义名称时,必须在服务配置中使用相同的名称,如下所示:

  • traefik.http.routers.moo.service=nginx-mailcow
  • traefik.http.services.moonginx-mailcow.loadBalancer.passHostHeader=true
loadBalancer.servers
(注意服务器中的s)没有
端口
键,只有
url

  • traefik.http.services.moo.loadbalancer.server.port=80
  • traefik.http.services.nginx-mailcow.loadbalancer.servers.url=['http://nginx-mailcow:80“]
但是,在使用默认值时,可以省略上面所有的=)

还有一件事,我不知道你的Traefik容器是如何配置的,但是如果你的Traefik运行的是一个定义的
Traefik
网络(内部)和
web
网络(公共),你应该在Mailcow容器中使用
Traefik
网络,因为你想通过Traefik路由所有外部流量

  • traefik.docker.network=web

#30天StackOverflow

请包括traefik容器的配置,特别是入口点。
labels:
  - traefik.enable=true
  - traefik.http.routers.moo.rule=Host(`${MAILCOW_HOSTNAME}`)
  - traefik.http.routers.moo.tls=true
  - traefik.http.routers.moo.tls.certresolver=godaddy
  - traefik.http.routers.moo.middlewares=redirect@file
  - traefik.http.middlewares.https-redirect.redirectscheme.scheme=https
  - traefik.http.middlewares.https-redirect.headers.customrequestheaders.X-Forwarded-Proto=https
  - traefik.http.routers.moo.middlewares=https-redirect
  - traefik.http.routers.moo.entrypoints=secure
  - traefik.docker.network=traefik