apache アクセス制限について全く分かっていなかったのでまとめる
「66.228.122.42」からのアクセスを403(Forbidden)にしたい場合
トップに以下のようにdeny設定をする
<Directory "/var/www/html"> Options -Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all deny from 66.228.122.42 </Directory>
これで指定のIPからの接続は拒否される。
しかし下層のディレクトリで以下のようにOrderの設定がされていると
それで上書きされるため、トップのIP制限が有効とならない。
<VirtualHost *:80> ServerName sample.com DocumentRoot /var/www/html/sample.com <Directory "/var/www/html/sample.com"> AllowOverride All Options FollowSymLinks Order allow,deny Allow from all </Directory> </VirtualHost>
下層ではAllowOverrideのみ上書きしたいのであれば、
以下のようにすること。
<VirtualHost *:80> ServerName sample.com DocumentRoot /var/www/html/sample.com <Directory "/var/www/html/sample.com"> AllowOverride All </Directory> </VirtualHost>
このようにすることで、Orderの設定はトップから引き継ぐことが可能。
下層でトップの設定を上書きしていないか?
ということを常に意識すること。