ELB配下のApacheでBasic認証+IPアドレス制限をする方法

・Basic認証を使う
・特定のIPアドレスからのアクセスはBasic認証を使わない
■概要
AWSのELBを利用している場合、Security GroupでIPアドレス制限を掛けるのが妥当だが、
特定のIPアドレス以外でもBasic認証で認証が通ればアクセスさせるような方法が提供されていない。
そのため、Webサーバ側で制御が必要となり、
・Basic認証を設定すること
・HTTPヘッダーのX-Forwarded-Forを参照して、IPアドレス制限を掛ける
という作業になった。
最新のApacheではmod_rpafとか使えばいいらしいが、Apacheと似て非なるものだったり、
勝手に何か入れると混乱する環境だったため、力技で解決。
■httpd.confに以下のように記載。
<Location /example>
AuthType Basic
AuthName "Example User"
AuthUserFile "/etc/httpd/conf/.htpasswd"
Require valid-user
Satisfy Any
SetEnvIf X-Forwarded-For "^$" empty_ok
# 10.10.0.0/16(VPC内のアドレス)
SetEnvIf X-Forwarded-For "10.10." ip_ok
# 192.168.1.1/32(固定IPアドレス)
SetEnvIf X-Forwarded-For "192.168.1.1" 1_ok
# 123.123.1.64/28 (CIDR表記の分解例なので、適当なIPアドレス)
SetEnvIf X-Forwarded-For "123.123.1.(6[4-9]|7[0-9])" 2_ok
Order Deny,Allow
Deny from all
Allow from env=empty_ok
Allow from env=ip_ok
Allow from env=1_ok
Allow from env=2_ok
</Location>