Nginxの条件判定とBasic認証について
Nginxで管理しているすべてのバーチャルホストにBasic認証を掛け、特定のサイトのみ認証フローをスキップさせたいと考えております。
当初HTTPブロックで上記を実現しようとしましたが、IfモジュールはHTTPブロックでは使用できませんでした(設定内容は後述)。各バーチャルホストのServerブロックに記述すれば、動作するとは思いますが、なるべく一カ所にまとめて記述することで見通しをよくし、一括で管理できればと考えております。
何か良い解決策があればご教授いただければ幸いです。
下記は、失敗時の設定サンプルです。(nginx.conf HTTPブロック内)
# Basic認証除外リスト
map $http_host $skip_auth_host {
default false;
sample-AAA.com true;
sample-BBB.com true;
}
# Basic認証
if ($skip_auth_host = true) {
auth_basic "basic authentication";
auth_basic_user_file pathto/htpasswd;
}