Apache | アクセス権限 | IPアドレス制限とユーザー認証の組み合わせ

Requireを使用してIPアドレスやドメインの制限を設定する方法と、ユーザー名とパスワードを使用するユーザー認証を行う方法を、1つのディレクトリに両方指定できる。

<Directory "${SRVROOT}/htdocs/admin">
    Require all granted
    Require ip 192.168.1.0/24
		
    AuthType Basic
    AuthName "사용자명과 비밀번호를 입력하세요."
    AuthUserFile "C:/apache/passwd/passfile"
    Require valid-user
</Directory>

このように2つの方式でアクセス制限が設定されている場合、基本的には両方の条件を満たす場合だけアクセスが許可される。つまり、指定されたIPアドレスからのアクセスであり、かつユーザー認証を通過した場合である。

Apacheでは、どちらか一方の条件だけが合えばアクセスを許可するように設定することも可能である。つまり、IPアドレスが条件に合うなら無条件でアクセスを許可し、指定されたIPアドレスでなければユーザー認証を要求する。これは、社内では自由に閲覧できるが、外部から閲覧する場合はアクセス認証が必要なケースで使える。

設定するには<RequireAny>を使用する。

<RequireAny>
....
</RequireAny>

また、<RequireAll>で設定すると、特に何も指定していない場合と同じく、2つの条件が満たされた場合だけアクセスが許可される。

<RequireAll>
...
</RequireAll>

次のように記述する。

<Directory "${SRVROOT}/htdocs/admin">
    <RequireAll>
    Require all granted
    Require ip 192.168.1.0/24
		
    AuthType Basic
    AuthName "사용자명과 비밀번호를 입력하세요."
    AuthUserFile "C:/apache/passwd/passfile"
    Require valid-user
    </RequireAll>
</Directory>