gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:24:56 26 4
gpt4 key购买 nike

我的 VPS 是 ubuntu 22.04 LTS headless
我在 /home/ubuntu 做这个所以我有一个ubuntu用户是 sudoer。
已安装 docker 并运行 Docker version 20.10.15, build fd82621我的目的是安装和运行 traefik 成功,只需简单的 http .这是为了实现我的最终目标,即运行多个应用程序,每个应用程序都使用 somedemowebsite.com 下的子域。在同一个 VPS 上
我的 Traefik 配置
这些是我在 /home/ubuntu 的步骤

mkdir traefik
cd traefik
mkdir data
cd data
touch acme.json
chmod 600 acme.json
touch traefik.yml
这是我的 /home/ubuntu/traefik/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
- 8080:8080
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"
- "traefik.http.routers.traefik.rule=Host(traefik.mydomaincom)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=USER:BASIC_AUTH_PASSWORD"
- "traefik.http.routers.traefik.service=api@internal"

networks:
proxy:
external: true

这是我的 /home/ubuntu/traefik/data/traefik.yml
api:
dashboard: true
debug: true
insecure: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
serversTransport:
insecureSkipVerify: true
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
file:
filename: /config.yml
log:
filePath: "/var/log/traefik.log"
format: json
level: DEBUG
DNS 设置
我正在为我的 DNS 使用 CloudFlare
我的 somedemowebsite.com 的 CF 配置是
  • SSL/TLS 加密模式关闭(不安全)
  • SSL/TLS 推荐人 是
  • 始终使用 HTTPS 否

  • 命令
    /home/ubuntu/traefik我做了
    docker network create proxy
    docker compose up --force-recreate
    我得到一个
    [+] Running 1/0
    ⠿ Container traefik Created 0.1s
    Attaching to traefik
    traefik | time="2022-05-13T14:31:12Z" level=info msg="Configuration loaded from file: /traefik.yml"
    我所看到的
    当我转到 http://traefik.somedemowebsite.com 时,我得到一个找不到页面 404 的错误。
    我所期望的
    提示输入用户名和密码的基本身份验证
    更新
    当我使用端口 8080 时,我可以访问仪表板。但不是端口 80。
    如何判断导致此 404 的原因
    我找到了 https://doc.traefik.io/traefik/getting-started/faq/#404-not-found
    有4个原因。如何以一种我可以知道导致我的 404 的原因的方式进行调试?
    我引用
    1. A request reaching an EntryPoint that has no Routers
    2. An HTTP request reaching an EntryPoint that has no HTTP Router
    3. An HTTPS request reaching an EntryPoint that has no HTTPS Router
    4. A request reaching an EntryPoint that has HTTP/HTTPS Routers that cannot be matched

    我认为它不是 3,因为我明确地只使用 http。
    如何判断它是 1、2 还是 4?

    最佳答案

    没关系,我已经解决了。
    罪魁祸首是域没有被包含在刻度中。此外,为了使基本身份验证正常工作,我需要将中间件分配给路由器。
    评论是更改使事情起作用的地方。所以对于 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

    关于docker - 为基本 http 配置 traefik,以便仪表板使用端口 80 -- 找不到页面 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72212444/

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