如何在执行其他 ACL 的同时使用 HAProxy 进行基本身份验证?

如何在执行其他 ACL 的同时使用 HAProxy 进行基本身份验证?

我在 apache 服务器前运行 HAProxy,并且想为一些域实现基本身份验证。

手册指出这应该可以解决问题:

userlist admins
user myusername insecure-password mypassword

frontend restricted_cluster
   acl auth_tintoretto http_auth(admins)
   http-request auth realm ShareaholicRestricted

但是,我还有一些其他 ACL,并且在一个前端下有多个域:

 frontend http-in

    # Define hosts
    acl stag_static hdr(host) -i staging.static.domain.com
    acl prod_static hdr(host) -i prod2.static.domain.com

    ## figure out which one to use
    use_backend apache-node1 if stag_static
    use_backend nginx-cluster if prod_static

我如何组合这些命令以便仅限制对 stag_static 的访问?

答案1

我还没有测试过,但请尝试将该http-request auth realm blah行放入后端配置中。它应该可以工作。

答案2

http-request auth在与您想要授权的站点匹配的 ACL 上进行谓词:

frontend http-in
  acl stag_static hdr(host) -i staging.static.example.com
  acl prod_static hdr(host) -i prod2.static.examplecom

  http-request auth realm "The No Homers Club" if stag_static

  use_backend apache-node1 if stag_static
  use_backend nginx-cluster if prod_static

相关内容