You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik为不同Docker容器配置独立HTTPS端口访问报404问题

问题原因

你的配置存在3个直接导致404的错误:

  • other入口点(对应9090端口)的HTTPS跳转配置残缺,只写了scheme=https但没有指定跳转目标,导致Traefik在该端口的路由规则加载异常。
  • 你提到访问8443端口返回404,但当前Traefik只映射了80、443、9090三个端口到宿主机,8443端口没有任何服务监听,自然无法正常响应。
  • 你给CKAN、Jupyter两个后端容器单独配置了宿主机端口映射,这部分虽然不直接导致404,但会让服务可以绕过Traefik直接被公网访问,存在不必要的安全风险。

补充说明:你用的HTTP-01类型ACME证书申请本身配置是正确的,这类证书校验只会走80端口,和你的Jupyter服务用9090端口对外提供HTTPS没有冲突,证书可以正常签发。

修复方案

1. 修正Traefik服务启动参数

找到traefik服务command块里的--entrypoints.other.http.redirections.entryPoint.scheme=https这行,直接删除。你需要的是在9090端口直接终止HTTPS流量,不需要把该端口的请求跳转到其他入口点。修正后的command块核心配置如下:

command:
  - "--api=true"
  - "--api.dashboard=true"
  - "--log.level=DEBUG"
  - "--providers.docker=true"
  - "--providers.docker.exposedbydefault=false"
  - "--providers.docker.network=ldmnetwork"
  - "--entrypoints.web.address=:80"
  - "--entrypoints.websecure.address=:443"
  - "--entrypoints.other.address=:9090"
  - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
  - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
  - "--entrypoints.web.http.redirections.entryPoint.permanent=true"

  - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
  - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
  - "--certificatesresolvers.myresolver.acme.email=XXXX"
  - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"

2. 调整后端服务配置

  • 删除CKAN、Jupyter两个服务下的ports映射段(就是"5000:5000"和"8000:8000"这两行),Traefik会通过内部Docker网络直接访问容器端口,不需要把后端端口暴露到公网。
  • 给Jupyter的路由加一行显式开启TLS的配置,确保Traefik在9090端口正确处理HTTPS握手,Jupyter的labels段修正后如下:
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.jupyternotebook.rule=Host(`example.com`)"
  - "traefik.http.routers.jupyternotebook.entrypoints=other"
  - "traefik.http.routers.jupyternotebook.tls=true"
  - "traefik.http.routers.jupyternotebook.tls.certresolver=myresolver"
  - "traefik.http.services.jupyternotebook.loadbalancer.server.port=8000"

CKAN的原有labels配置不需要改动,保持原样即可。

3. 重启服务验证

在docker-compose.yml所在目录执行以下命令重启所有服务:

docker compose up -d

等待1-2分钟让Traefik完成证书签发后,直接访问对应地址即可:

  • https://example.com 打开CKAN服务
  • https://example.com:9090 打开Jupyter服务

注意:如果第一次访问9090端口提示证书不安全,是因为证书还在签发流程中,查看Traefik日志确认证书签发成功后刷新页面即可,不要访问未做映射的8443端口。


内容的提问来源于stack exchange,提问作者Ahmad Sakor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:27:45