背景
Webサイトにクラウドフレアを導入した。
要望
コントロールパネルからではなく、Apacheの設定でBasic認証を導入したい
方法
# CloudFlareからの実際のクライアントIPを取得
SetEnvIf CF-Connecting-IP . CFIP=$0
# Basic認証の設定
AuthUserFile "/var/www/html/.htpasswd"
AuthName "Please enter your ID and password"
AuthType Basic
Require valid-user
# キャッシュ制御
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
# オリジナルのIPアドレスをチェック
SetEnvIf CF-Connecting-IP "192\.10\.123\.[0-9]{1,3}" hoge
# アクセス制御
Order Allow,Deny
# 環境変数による制御
Allow from env=hoge
# 直接アクセスを許可
Allow from 192.01.123.0/24