Apache 2.4からアクセス制御の書き方が大きく変わったので、自分で良く使う記述をメモしておく。
参考
どこからでもアクセス可能
<Directory /var/www/> Require all granted </Directory>
基本アクセス禁止、ローカルと特定のIPアドレスの範囲のみアクセス可能
(たとえば、192.168.1.0/24。CIDRによるIPアドレスの範囲指定)
<Directory /var/www/> Require local Require ip 192.168.1.0/24 </Directory>
上は以下のと同じ。RequireAnyはどれか一つの条件に合致すればOKというもの。
<Directory /var/www/> <RequireAny> Require local Require ip 192.168.1.0/24 </RequireAny> </Directory>
基本アクセス禁止、特定にIPアドレスからか、そうじゃなければDigest認証(.htaccessを使った場合)
Digest認証を利用するためには、auth_digestモジュールを有効化する必要がある。
% sudo a2enmod auth_digest
/var/www/html/sandboxにて.htaccessを用いてアクセス制限を行う場合は、sites-avaliable以下の設定ファイルでその旨指定する。以下の設定は.htaccessで何でも設定できるようにしている。指定できる範囲を狭める場合は適切なオプションを選ぶ→AllowOverride。
<Directory /var/www/html/sandbox> AllowOverride All </Directory>
Apacheを再起動する。
% sudo apache2ctl restart
ディレクトリやファイルの準備をする。
% sudo mkdir -p /var/www/html/sandbox % sudo touch /var/www/html/sandbox/.htaccess
.htaccessの中身を以下のようにする。
AuthType Digest AuthName "Require Auth" AuthUserFile /var/www/html/sandbox/.htdigest Require all denied Require ip 192.168.1.0/24 Require valid-user
アクセスできるユーザとパスワードを用意する。
% sudo htdigest -c .htdigest 'Require Auth' USER_NAME
オプション-cをつけるのはファイルを作成するときのみ。ユーザの追加時は不要。'Require Auth'の部分は.htaccessのAuthNameの文字列を記述する。USER_NAMEは作成したいユーザ名。
最後にファイルの所有権変更して終了(自分のホームディレクトリの下ならば不要)。
% chown -R wwb-data:wwb-data /var/www/html/sandbox