首页 > 解决方案 > 如何配置 traefik 身份验证以在 docker compose 中使用 webdav?

问题描述

我想在 traefik 后面构建一个带有身份验证的私有 webdav 服务器。

这是 docker-compose.yml 文件:

version: '3.7'
services:
  reverse-proxy:
    image: traefik:v2.2
    command: --api.insecure=true --providers.docker
    labels:
      - "traefik.http.middlewares.test-auth.digestauth.users=${AUTHUSER}"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  webdav:
    image: mwader/webdav
    labels:
      - "traefik.http.routers.webdav.rule=Host(`localhost`)||Host(`mydomain`)"
    volumes:
      - /data:/webdav

在“# docker-compose up -d”之后,webdav 正在工作,但没有任何身份验证,应该是摘要身份验证。现在任何人都知道该域可以访问我的文件。这是不可接受的。那么有什么地方我做错了吗?我怎样才能正确?谢谢!

标签: dockerdocker-composetraefikwebdavtraefik-authentication

解决方案


仅定义中间件是不够的,您必须将其与路由器一起使用。尝试使用此堆栈

version: '3.7'
services:
  reverse-proxy:
    image: traefik:v2.2
    command: --api.insecure=true --providers.docker
    labels:
      - "traefik.http.middlewares.test-auth.digestauth.users=${AUTHUSER}"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  webdav:
    image: mwader/webdav
    labels:
      - "traefik.http.routers.webdav.rule=Host(`localhost`)||Host(`mydomain`)"
      - "traefik.http.routers.webdav.middlewares=test-auth"
    volumes:
      - /data:/webdav

可以在本文中找到更多信息、详细信息和示例


推荐阅读