他の 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 もいくつかあり、1 つのフロントエンドの下に複数のドメインがあります。

 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

関連情報