同じApacheサーバー上に複数の名前付き仮想ホストがあります。仮想ホストの1つに対して、特定のIPアドレスセットのみがアクセスを許可されるようにする必要があります。
これを行う最良の方法を提案してください。 mod_authz_hostsモジュールを見てきましたが、仮想ホスト内で実行できるようには見えません。
mod_authz_Host
ディレクティブは<Location>
または<Directory>
ブロック内にある必要がありますが、Apache 2.2のように<VirtualHost>
内で前者を使用しました:
<VirtualHost *:8080>
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
...
</VirtualHost>
参照: https://askubuntu.com/questions/262981/how-to-install-mod-authz-Host-in-Apache
Apache 2.4の場合、 IPディレクティブが必要 を使用します。したがって、192.168.0.0/24ネットワークからのマシンのみを許可するには(範囲192.168.0.0-192.168.0.255)
<VirtualHost *:80>
<Location />
Require ip 192.168.0.0/24
</Location>
...
</VirtualHost>
そして、ローカルホストマシンにアクセスさせたいだけなら、特別な ローカルディレクティブが必要 があります。
次の条件のいずれかに該当する場合、ローカルプロバイダーはサーバーへのアクセスを許可します。
- クライアントアドレスは127.0.0.0/8と一致します
- クライアントアドレスは:: 1
- 接続のクライアントとサーバーの両方のアドレスが同じです
これにより、ローカルホストから発信された接続を照合する便利な方法が可能になります。
<VirtualHost *:80>
<Location />
Require local
</Location>
...
</VirtualHost>
仮想ホスト内でApache 2.2を使用している場合、次のディレクティブを追加する必要があります( mod_authz_Host ):
Order deny,allow
Deny from all
Allow from 10.0.0.1
サブネットを指定することもできます
Allow from 10.0.0
Apache 2.4は、構成が少し異なります。使用しているApacheのバージョンを指定した方がいいかもしれません。
Apache 2.4では、許可構成の構文が変更されており、Order
、Deny
、またはAllow
ディレクティブは使用されなくなりました。
これを行う新しい方法は次のとおりです。
<VirtualHost *:8080>
<Location />
Require ip 192.168.1.0
</Location>
...
</VirtualHost>
新しい構文を使用したその他の例は、Apacheのドキュメントに記載されています。 2.2から2.4へのアップグレード