Docker Compose部署Rancher2于Traefik2后连接被拒问题求助
解决Rancher2部署在Traefik2后无法访问的问题
从你给出的配置和描述来看,我发现几个关键的配置问题,结合Traefik和Rancher的协同逻辑,咱们一步步来排查解决:
1. 修正Traefik路由与TLS配置的匹配问题
你当前的配置里,TLS属性绑定到了web-secure路由,但你的Rancher路由名称是rancher2,这会导致Traefik没有给Rancher的路由启用TLS,直接访问HTTPS自然会失败。同时,重定向中间件的应用场景也需要调整——应该先配置HTTP路由来跳转到HTTPS,而不是在HTTPS路由上添加重定向中间件。
2. 修正NO_PROXY环境变量的格式
Docker环境变量不需要额外加引号,引号会被当成变量值的一部分,导致Rancher无法正确识别NO_PROXY列表,可能影响内部服务通信。
3. 确保Traefik与Rancher在同一Docker网络
这是最容易忽略的点:Traefik必须和Rancher容器加入同一个用户自定义Docker网络(不能只用默认的bridge网络,默认网络的DNS解析和通信有局限)。如果Traefik已经有自己的自定义网络(比如叫traefik-net),一定要把Rancher也加入这个网络。
修正后的完整Rancher配置示例
rancher2: image: rancher/rancher:latest container_name: rancher2 labels: - traefik.enable=true # HTTP路由:跳转到HTTPS - traefik.http.routers.rancher2-http.rule=Host(`rancher2.docker.localhost`) - traefik.http.routers.rancher2-http.entrypoints=web - traefik.http.routers.rancher2-http.middlewares=rancher2-redirect # HTTPS路由:处理实际请求 - traefik.http.routers.rancher2-https.rule=Host(`rancher2.docker.localhost`) - traefik.http.routers.rancher2-https.entrypoints=websecure - traefik.http.routers.rancher2-https.tls=true # 指定Rancher的服务端口(Traefik转发到容器的443端口,也可根据需求改为80) - traefik.http.services.rancher2-service.loadbalancer.server.port=443 # 重定向中间件定义 - traefik.http.middlewares.rancher2-redirect.redirectscheme.scheme=https environment: # 去掉引号,正确设置NO_PROXY - NO_PROXY=localhost,127.0.0.1,0.0.0.0,192.168.10.0/24,172.20.0.0/24,example.com # 关键:告诉Rancher它运行在反向代理后面,正确生成内部链接 - CATTLE_SERVER_URL=https://rancher2.docker.localhost networks: # 替换成你的Traefik所在的自定义网络名称 - traefik-net # 加入同一网络后容器间可直接访问端口,expose仅作文档说明,非必需 # expose: # - 80 # - 443
额外检查步骤
- 验证Traefik网络配置:确保Traefik的compose配置里已经声明了自定义网络,示例如下:
traefik: # ... 其他Traefik配置 ... networks: - traefik-net networks: traefik-net: external: true # 如果已手动创建网络则保留,否则删除该行让compose自动创建 - 检查Traefik的EntryPoints配置:确保Traefik正确配置了
web(80端口)和websecure(443端口),示例如下:traefik: command: - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - --providers.docker=true - --providers.docker.exposedbydefault=false # ... 其他配置(如证书 resolver) ... - 查看容器日志细节:用
docker logs traefik搜索rancher2关键词,确认Traefik是否正确识别了Rancher的路由;用docker logs rancher2检查启动时是否有代理配置相关的警告。
按照这些步骤调整后,应该就能正常访问https://rancher2.docker.localhost了。
内容的提问来源于stack exchange,提问作者eldorne
相关产品推荐
相关产品推荐

