CloudFlareを使用しつつアクセス制限


はじめに

CloudFlareを使用しながら、メンテナンスする際は少し面倒ですよね。
IPアドレスはCloudFlareのIPアドレスなのでどれが自分のIPアドレスなのか分かりません。


やってみる

この例では 111.111.111.111 以外の人がCloudFlare経由でアクセスしてきた時、自動的に503を返して test.htm を表示させます。

ErrorDocument 503 /test.htm

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/test.htm
RewriteCond %{HTTP:CF-Connecting-IP} !=111.111.111.111
RewriteRule ^.*$ - [R=503,L]

おまけ

これを応用してCloudFlareのFlexible SSLを使用している時にhttpsの強制もできます。
ただ、CloudFlare側のフィルタに余裕があるのであれば、CloudFlareのコントロールパネルから設定すると良いです。

(余計にサーバが応答してしまうし…)

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]