Kim*_*cks 5 ubuntu cloudflare docker traefik
我的 VPS 是 ubuntu 22.04 LTS 无头
\n我正在这样做,/home/ubuntu所以我有一个ubuntusudoer 用户。
已经安装了 docker 并正在运行 Dockerversion 20.10.15, build fd82621
我的目的是首先使用普通的 http 成功安装并运行 traefik。这是为了实现我的最终目标,即somedemowebsite.com在同一 VPS 上运行多个应用程序,每个应用程序使用一个子域
这些是我的步骤/home/ubuntu
mkdir traefik\ncd traefik\nmkdir data \ncd data\ntouch acme.json\nchmod 600 acme.json\ntouch traefik.yml\nRun Code Online (Sandbox Code Playgroud)\n这是我的/home/ubuntu/traefik/docker-compose.yml
mkdir traefik\ncd traefik\nmkdir data \ncd data\ntouch acme.json\nchmod 600 acme.json\ntouch traefik.yml\nRun Code Online (Sandbox Code Playgroud)\n这是我的/home/ubuntu/traefik/data/traefik.yml
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\nRun Code Online (Sandbox Code Playgroud)\n我使用 CloudFlare 作为我的 DNS
\n我的 CF 配置somedemowebsite.com是
在/home/ubuntu/traefik我做的时候
docker network create proxy\ndocker compose up --force-recreate\nRun 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"\nRun Code Online (Sandbox Code Playgroud)\n当我访问时,我收到页面 404 未找到错误http://traefik.somedemowebsite.com
提示进行用户名和密码的基本身份验证
\n当我使用端口 8080 时可以访问仪表板,但不能访问端口 80。
\n我发现这个https://doc.traefik.io/traefik/getting-started/faq/#404-not-found
\n有4个原因。如何进行调试才能知道导致 404 的原因?
\n我引用
\n\n\n\n
\n- 到达没有路由器的入口点的请求
\n- 到达没有 HTTP 路由器的入口点的 HTTP 请求
\n- HTTPS 请求到达没有 HTTPS 路由器的入口点
\n- 到达具有无法匹配的 HTTP/HTTPS 路由器的 EntryPoint 的请求
\n
我假设它不是 3,因为我明确只使用 http。
\n我如何判断它是 1、2 还是 4?
\n没关系,我已经解决了。
罪魁祸首是域名没有被蜱虫包裹。另外,为了使基本身份验证正常工作,我需要将中间件分配给路由器。
评论是改变发挥作用的地方。因此对于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)
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |