GeekFactory

int128.hatenablog.com

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なども書けるので、ヘルスチェックを認証から外す場合にも使えます。