Apacheのアクセス制限についてまとめます。
Apache2.4ではホストベースのアクセス制御にRequire
ディレクティブを利用します。
以前のバージョンでは、Order
、Allow
、Deny
の3つのディレクティブで行っていましたが、
こちらは非推奨となっているので注意が必要です。
参考: https://httpd.apache.org/docs/2.4/howto/access.html
設定例は以下となります。
Require all granted
Require ip 127.0.0.1
上位ディレクトリでRequire all granted
が設定されていると、以下の設定はエラーとなります。
<Directory "/var/www/html/test">
Require not ip 60.143.6.62
</Directory>
「すべてを許可」もしくは「指定したIPを拒否」という設定になりおかしくなるためです。
<RequireAll>
で囲むことで、このエラーは回避できます。
<Directory "/var/www/html/test">
<RequireAll>
Require all granted
Require not ip 60.143.6.33
</RequireAll>
</Directory>
<RequireAll>
で囲むことで、すべての条件を満たすという設定となります。
<RequireAny>
で囲むといずれかの条件を満せばよいという設定になります。
ただ、囲まなくてもデフォルトで<RequireAny>
となるため、使用する機会は少なそうです。
<Directory "/var/www/html/test">
<RequireAny>
Require ip 60.123.2.2
Require ip 60.123.2.1
</RequireAny>
</Directory>
httpd.conf
と同様に、.htaccess
に設定を書くことができます。
<RequireAll>
Require all granted
Require not ip 60.143.6.62
</RequireAll>