【问题标题】:Traefik basic auth on path路径上的 Traefik 基本身份验证
【发布时间】:2020-06-14 02:09:10
【问题描述】:

我正在尝试对应用程序的特定路径进行密码保护,但似乎我遗漏了一些东西并且 traefik 文档没有帮助:

从 docker-compose 粘贴:

traefik:

command:
  - "--log.level=INFO"
  - "--providers.docker=true"
  - "--providers.docker.exposedbydefault=false"
  - "--entrypoints.web.address=:80"
  - "--entrypoints.websecure.address=:443"
  - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
  - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
  - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
  - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
  - "--certificatesresolvers.letsencrypt.acme.email=email@email.com"
  - "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"

服务:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.service.middlewares=service"
  - "traefik.http.routers.service.rule=Host(`domain.example.com`)"
  - "traefik.http.middlewares.service.headers.stsSeconds=31536000"
  - "traefik.http.middlewares.service.headers.forceSTSHeader=true"
  - "traefik.http.middlewares.service.headers.stsIncludeSubdomains=true"
  - "traefik.http.middlewares.service.headers.stsPreload=true"
  - "traefik.http.middlewares.service.headers.referrerPolicy=no-referrer"
  - "traefik.http.middlewares.service.headers.browserXssFilter=true"
  - "traefik.http.middlewares.service.headers.customRequestHeaders.X-Forwarded-Proto=https"
  - "traefik.http.routers.service.tls.certresolver=letsencrypt"

如果我添加以下标签,基本身份验证正在运行,但它已在整个网站上启用:

  • “traefik.http.middlewares.service-auth.basicauth.usersfile=/etc/traefik/auth”

  • “traefik.http.routers.service.middlewares=service,service-auth”

我尝试过像这样添加第二个路由器,但这似乎不起作用:

  • “traefik.http.routers.service-admin.rule=Host(domain.example.com) && PathPrefix(/somepath)”

  • “traefik.http.middlewares.service-auth.basicauth.usersfile=/etc/traefik/auth”

  • “traefik.http.routers.service-admin.middlewares=service-auth”

我错过了什么?

【问题讨论】:

    标签: traefik traefik-authentication


    【解决方案1】:

    我设法通过一些“有根据的”猜测来解决这个问题。似乎标签的顺序和它们之间的间距起着至关重要的作用。添加第二个路由器(没有服务)确实是实现此目的的正确方法,但分离路由器和中间件代码块很重要:

      - "traefik.enable=true"
    
      - "traefik.http.routers.service.rule=Host(`example.example.com`)"
      - "traefik.http.routers.service-admin.rule=Host(`example.example.com`) && PathPrefix(`/somepath`)"
      - "traefik.http.routers.service.tls.certresolver=letsencrypt"
      - "traefik.http.routers.service-admin.tls.certresolver=letsencrypt"
      - "traefik.http.routers.service.middlewares=service"
      - "traefik.http.routers.service-admin.middlewares=service-admin"
    
      - "traefik.http.middlewares.service.headers.stsSeconds=31536000"
      - "traefik.http.middlewares.service.headers.forceSTSHeader=true"
      - "traefik.http.middlewares.service.headers.stsIncludeSubdomains=true"
      - "traefik.http.middlewares.service.headers.stsPreload=true"
      - "traefik.http.middlewares.service.headers.referrerPolicy=no-referrer"
      - "traefik.http.middlewares.service.headers.browserXssFilter=true"
      - "traefik.http.middlewares.service.headers.customRequestHeaders.X-Forwarded-Proto=https"
      - "traefik.http.middlewares.service-admin.basicauth.usersfile=/etc/traefik/auth"
    

    注意:使用的traefik版本是2.2.1

    【讨论】:

      【解决方案2】:

      我认为你错误配置了第二个路由器,尝试这样做

      "traefik.http.routers.service-admin.rule=Host(domain.example.com) && PathPrefix(/somepath)"
      "traefik.http.middlewares.service-admin.basicauth.usersfile=/etc/traefik/auth"
      "traefik.http.routers.service-admin.middlewares=service-admin"
      "traefik.http.routers.service-admin.service=$yourservice"
      

      【讨论】:

      • 据我了解,服务主要用于第 4/7 层负载平衡,它们必须在单独的动态配置文件中指定。在任何情况下,指定服务只会返回“服务 \"servicename@docker\" 不存在”错误,而且总体上似乎使设置过于复杂。
      • 您可以使用标签或dynamic config file. 指定服务。如果您使用动态文件执行此操作,则需要将其引用为 service@${provider}。更多信息请参见medium.com/better-programming/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多