SetEnvIfでヘッダがない場合の条件の書き方
ApacheのSetEnvIfでヘッダがない場合の条件の書き方を調べてみました。下記のように正規表現に ^$
を指定すると、ヘッダなしにマッチしてくれます。
# x-forwarded-forヘッダがない場合、環境変数noelbを設定する SetEnvIf x-forwarded-for "^$" noelb
例えば、ELBを経由するアクセスのみ認証を有効にしたい場合は下記のように設定します。
Satisfy Any # 認証 AuthUserFile /example/.htpasswd AuthName Example AuthType Basic require valid-user # ELB経由でないアクセスは認証を外す SetEnvIf x-forwarded-for "^$" noelb Order Deny,Allow Deny from all Allow from env=noelb
なお、SetEnvIfはヘッダだけでなくリクエストURIなども書けるので、ヘルスチェックを認証から外す場合にも使えます。