Apache の設定ファイルで、ホストまたはIPアドレスでアクセス制限を行うための書き方を紹介します。
また、実際にサンプルを乗せて設定例を紹介します。
IP アドレスの制限では、allow(許可)、deny(拒否)を記述して設定していきます。
また、ApacheではDirectoryやLocation内に記述することで一部のディレクトリやURLのみ拒否することができます。
まず、前知識として話します。
order allow,deny
上記は、許可したあとに拒否するという意味です。
order deny,allow
ならば、拒否したあとに許可するという意味になります。
allow from all
は、全てを許可するという意味であり、
deny from all
は、全てを拒否するという意味です。
以下では、IPアドレスが999.999.999.999の接続のみを拒否しています。
order allow,deny
allow from all
deny from 999.999.999.999
また、IPアドレスだけでなくホスト名による指定も可能です。
以下では、PbTimes からのアクセスのみ拒否しています。
order allow,deny
allow from all
deny from .pb-times.jp # PbTimes からのアクセスを拒否
以下のようにすることで、日本と思われるアドレスからのみ拒否することもできます。
order allow,deny
allow from all
deny from .jp #日本と思われるアドレスを拒否
次は特定のホスト・IPアドレスのみ許可します。
以下の例では、999.999.999.999 のアドレスのみ接続を許可しています。
order deny,allow
deny from all
allow from 999.999.999.999
次はホスト名による制限です。
以下の例では、PbTimes及びローカルからの接続のみを許可しています。
order deny,allow
deny from all
allow from .pb-times.jp # PbTimes からのアクセスを許可
allow from localhost # localhost からのアクセスを許可
以下の例では、日本と思われるアドレスのみ許可しています。
order deny,allow
deny from all
allow from .jp #日本と思われるアドレスを許可
Direcroty 内に記述することで、特定のディレクトリのみにアクセス制限をかけることができます。
以下の例では、/wp-admin への接続を999.999.999.999のIPアドレスのみ許可しています。
<Direcroty /wp-admin>
order deny,allow
deny from all
allow from 999.999.999.999
</Direcroty>
Location を使用すると特定のアクセス制限のみにアクセス制限をかけることができます。
以下の例は、上記と同様の制限がかかります。
<Location /wp-admin>
order deny,allow
deny from all
allow from 999.999.999.999
</Location>
DirectoryとLocationはよく似ていますが、Directoryは特定のディレクトリに、Locationは特定のURLに対して処理されます。
Locationは、ファイルシステム外のコンテンツにディレクティブを適用するときに 使用してください。
IPアドレスで制限をかけるのは問題ないのですが、ホスト名でかけるとパフォーマンスが低下してしまいます。
理由は、Apacheはホスト名をIPアドレスに変換するのでDNS サーバに接続する回数だけパフォーマンスが落ちるのです。
1回のアクセスならよいのですが、画像がたくさんあるページなど、複数アクセスが必要なページなどは要注意です。