为基本 http 配置 traefik,以便仪表板使用端口 80 -- 找不到页面 404

Kim*_*cks 5 ubuntu cloudflare docker traefik

我的 VPS 是 ubuntu 22.04 LTS 无头

\n

我正在这样做,/home/ubuntu所以我有一个ubuntusudoer 用户。

\n

已经安装了 docker 并正在运行 Dockerversion 20.10.15, build fd82621

\n

我的目的是首先使用普通的 http 成功安装并运行 traefik。这是为了实现我的最终目标,即somedemowebsite.com在同一 VPS 上运行多个应用程序,每个应用程序使用一个子域

\n

我的 Traefik 配置

\n

这些是我的步骤/home/ubuntu

\n
mkdir traefik\ncd traefik\nmkdir data \ncd data\ntouch acme.json\nchmod 600 acme.json\ntouch traefik.yml\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的/home/ubuntu/traefik/docker-compose.yml

\n
mkdir traefik\ncd traefik\nmkdir data \ncd data\ntouch acme.json\nchmod 600 acme.json\ntouch traefik.yml\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的/home/ubuntu/traefik/data/traefik.yml

\n
version: \'3.9\'\n\nservices: \n  traefik: \n    image: traefik:v2.6 \n    container_name: traefik \n    restart: unless-stopped \n    security_opt: \n      - no-new-privileges:true \n    networks: \n      - proxy \n    ports: \n      - 80:80 \n      - 443:443 \n      - 8080:8080\n    volumes: \n      - /etc/localtime:/etc/localtime:ro \n      - /var/run/docker.sock:/var/run/docker.sock:ro \n      - /home/ubuntu/traefik/data/traefik.yml:/traefik.yml:ro \n      - /home/ubuntu/traefik/data/acme.json:/acme.json \n      - /home/ubuntu/traefik/data/config.yml:/config.yml:ro \n    labels: \n      - "traefik.enable=true" \n      - "traefik.http.routers.traefik.entrypoints=http" \n      - "traefik.http.routers.traefik.rule=Host(traefik.mydomaincom)" \n      - "traefik.http.middlewares.traefik-auth.basicauth.users=USER:BASIC_AUTH_PASSWORD" \n      - "traefik.http.routers.traefik.service=api@internal"\n\nnetworks: \n  proxy: \n    external: true\n\n
Run Code Online (Sandbox Code Playgroud)\n

DNS设置

\n

我使用 CloudFlare 作为我的 DNS

\n

我的 CF 配置somedemowebsite.com

\n
    \n
  • SSL/TLS 加密模式关闭(不安全)
  • \n
  • SSL/TLS 推荐器 是
  • \n
  • 始终使用 HTTPS 否
  • \n
\n

命令

\n

/home/ubuntu/traefik我做的时候

\n
docker network create proxy\ndocker compose up --force-recreate\n
Run Code Online (Sandbox Code Playgroud)\n

我得到一个

\n
[+] Running 1/0\n\xe2\xa0\xbf Container traefik Created 0.1s\nAttaching to traefik\ntraefik | time="2022-05-13T14:31:12Z" level=info msg="Configuration loaded from file: /traefik.yml"\n
Run Code Online (Sandbox Code Playgroud)\n

我看到了什么

\n

当我访问时,我收到页面 404 未找到错误http://traefik.somedemowebsite.com

\n

我所期望的

\n

提示进行用户名和密码的基本身份验证

\n

更新

\n

当我使用端口 8080 时可以访问仪表板,但不能访问端口 80。

\n

如何判断导致 404 的原因

\n

我发现这个https://doc.traefik.io/traefik/getting-started/faq/#404-not-found

\n

有4个原因。如何进行调试才能知道导致 404 的原因?

\n

我引用

\n
\n
    \n
  1. 到达没有路由器的入口点的请求
  2. \n
  3. 到达没有 HTTP 路由器的入口点的 HTTP 请求
  4. \n
  5. HTTPS 请求到达没有 HTTPS 路由器的入口点
  6. \n
  7. 到达具有无法匹配的 HTTP/HTTPS 路由器的 EntryPoint 的请求
  8. \n
\n
\n

我假设它不是 3,因为我明确只使用 http。

\n

我如何判断它是 1、2 还是 4?

\n

Kim*_*cks 1

没关系,我已经解决了。

罪魁祸首是域名没有被蜱虫包裹。另外,为了使基本身份验证正常工作,我需要将中间件分配给路由器。

评论是改变发挥作用的地方。因此对于docker-compose.yml

version: '3.9'

services:
  traefik:
    image: traefik:v2.6
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /home/ubuntu/traefik/data/traefik.yml:/traefik.yml:ro
      - /home/ubuntu/traefik/data/acme.json:/acme.json
      - /home/ubuntu/traefik/data/config.yml:/config.yml:ro
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      # notice the ticks
      - "traefik.http.routers.traefik.rule=Host(`traefik.mydomain`)"
      # added the middleware
      - "traefik.http.routers.traefik.middlewares=traefik-auth"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=USER:BASIC_AUTH_PASSWORD"
      - "traefik.http.routers.traefik.service=api@internal"

networks:
  proxy:
    external: true
Run Code Online (Sandbox Code Playgroud)