Apache 2.2はアクセス制御が煩雑なので、Order, Allow, Denyの書き方をまとめてみた。
Apache 2.2はmod_access_compatが使われている。
まだApache 2.2で動いているwwwサーバが少なからずあるのです...
接続元IPベースでのアクセス制御
Apache 2.2のルールはファーストマッチではなく、Orderによって優先順位が変わるので注意。
一部の接続元からのみアクセスを許可したい/拒否したいというケースで考慮が必要になるかと。
(分かりづらいためかApache 2.4やNginxではこのスタイルは継承されていない模様)
Order Deny, Allow (全て許可) | Order Allow, Deny (全て拒否) | |
---|---|---|
一部アクセス許可 | Deny from all | Allow from <IP> |
Allow from <IP> | ||
一部アクセス拒否 | Deny from <IP> | Allow from all |
Deny from <IP> | ||
全て許可 | Allow from all | Allow from all |
全て拒否 | Deny form all | Deny from all |
Satisfyの設定について
接続元IPベースでのアクセス制御とBasic認証でのアクセス制御、AND条件、OR条件の指定はSatisfyを設定する。
Satisfy All | Any
デフォルトはALLが適用されている。何もしなければAND条件でルールに対する評価を行う。
Satisfy Anyの設定例↓
Satisfy Any
Require Valid-user
Allow from 192.168.1
192.168.1のIPレンジのネットワークからは認証不要でアクセスできる。
それ以外の接続元はBasic認証が必要。