rewriteを使ってプロキシ経由とダイレクトの両方をアクセス制限
プロキシはHTTP_X_FORWARDED_FORがついた
行儀のよいサーバであることが前提
プロキシサーバ群のあるネットワーク 192.168.0.0/24
許可したい接続元のネットワーク 192.168.1.0/24
プロキシ経由でアクセスされても
ダイレクトでアクセスされても
192.168.1.0/24に制限したい
RewriteEngine On RewriteCond %{REMOTE_HOST} !^(192\.168\.0\.|192\.168\.1\.) RewriteRule ^(.*)$ - [F] RewriteCond %{REMOTE_HOST} ^192\.168\.0\. RewriteCond %{HTTP:X-Forwarded-For} !^192\.168\.1\. RewriteRule ^(.*)$ - [F]
こんな感じ
IPアドレスは論理和して否定しても
おのおのの否定を論理積にしてもよい
例えば許可したい接続元のネットワークを
192.168.1.0/24と192.168.2.0/26にするなら
RewriteEngine On RewriteCond %{REMOTE_HOST} !^192\.168\.0\. RewriteCond %{REMOTE_HOST} !^192\.168\.1\. RewriteCond %{REMOTE_HOST} !^192\.168\.2\.([1-9]|[1-5][0-9]|6[0-2]$ RewriteRule ^(.*)$ - [F] RewriteCond %{REMOTE_HOST} ^192\.168\.0\. RewriteCond %{HTTP:X-Forwarded-For} !^192\.168\.1\. RewriteCond %{HTTP:X-Forwarded-For} !^192\.168\.2\.([1-9]|[1-5][0-9]|6[0-2]$ RewriteRule ^(.*)$ - [F]
CIDRをきれいに正規表現するにはどうしたらいいのかしら?