2013-10-31 14 views
28

特定のIPアドレスのセットのみがアクセスできるようにするために必要な仮想ホストの1つについて、同じapacheサーバー上に複数の仮想ホストがあります。Apache:仮想ホスト内の特定のソースIPへのアクセスを制限する

これを行う最善の方法をお勧めします。私はmod_authz_hostsモジュールを見てきましたが、仮想ホスト内で実行できるようには見えません。

答えて

32

mod_authz_hostディレクティブは<Location>または<Directory>ブロックの内部である必要がありますが、私はそうのような<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

+0

ありがとう、これは私のために働いた – frameworksnow

6

あなたはディレクティブ(mod_authz_host)以下を追加する必要があり、あなたの仮想ホスト内のApache 2.2を使用している場合:

Order deny,allow 
Deny from all 
Allow from 10.0.0.1 

あなたも、サブネット

Allow from 10.0.0 

Apacheの少し違うような2.4ルックスを指定することができます構成として。 あなたが使っているApacheのバージョンを指定するほうが良いでしょう。

+0

は、私は、このことによって設定することができた情報をありがとう仮想ホスト内のロケーションタグ内にディレクティブを追加する – frameworksnow

+0

私の答えが有用で、これが正しい答えだと思わないなら少なくとも投票してください;) – giuliox

+0

私は試しましたが、私は投票する特権を持っていませんそれだけでそれをアップ。すぐに私はもっと評判が上がり、戻って投票してくれることを願っています。入力いただきありがとうございます。 – frameworksnow

8

のApache 2.4の場合は、あなたが使用しますRequire IP directive。これだけ

<VirtualHost *:80> 
    <Location /> 
     Require ip 192.168.0 
    </Location> 
    ... 
</VirtualHost> 

*。ネットワーク192.168.0からマシンを許可し、あなただけのアクセス権を持っているローカルホストマシンをしたい場合は、その後、ネットワーク・インターフェース・アドレスはIPv4の127.0.0.1またはIPv6

<VirtualHost *:80> 
    <Location /> 
     Require ip ::1 
    </Location> 
    ... 
</VirtualHost> 
ため ::1です
0

Apache 2.4では、認証設定の構文が変更され、OrderDenyまたはAllowディレクティブは使用しないでください。

これを行うための新しい方法は、次のようになります。新しい構文を使用して

<VirtualHost *:8080> 
    <Location /> 
     Require ip 192.168.1.0 
    </Location> 
    ... 
</VirtualHost> 

さらなる例は、Apacheのマニュアルに記載されています:Upgrading to 2.4 from 2.2

関連する問題