私は 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