2

一部の IP に基づいてフォルダへのアクセスを制限したいと考えています。

私はすでにそれを行う方法を知っています

<Directory "/path/to/my/directory/">
    Order Deny,Allow
    Deny from all
    Allow from 123.123.123.1 # IP 1
    Allow from 123.123.123.2 # IP 2
    Allow from 127
</Directory>

許可された IP のリストを別の方法で管理したいので、IP が次のようなメモであるテキスト ファイルから許可することをお勧めします。

123.123.123.1
123.123.123.2

誰もそれを行う方法を知っていますか? それが不可能な場合、そのようなことを行う別の方法はありますか?

PS: すべてを明確にするために、私の最終的な目的は、ローカル VPN (OpenVPN) に接続されている IP を取得し、IP が含まれていない場合はファイルを完成させ、それらを考慮できるように apache2 を再起動することです。少し奇妙ですが、同じサーバー上に、vpn ユーザーのみがアクセスできるようにしたい html コンテンツがあります。しかし、VPNを通過しても、apache2はエンドポイントではなくリモートIPアドレスを認識します...

4

1 に答える 1

0

やりたいように apache 構成に余分なファイルを含めることはできませんが、mod_rewrite のRewriteMapディレクティブを使用してマッピング ファイルを使用したり、スクリプトを実行したりすることはできます。

たとえば、次のようにマップを作成できます。

RewriteMap allow_ips txt:/path/to/ipfile.txt

そして、/path/to/ipfile.txtあなたが持っているでしょう

123.123.123.1  1
123.123.123.2  1
123.123.123.4  1
123.123.123.10  1

次に、ディレクトリ コンテナーで次のようにします。

RewriteCond の RewriteEngine ${allow_ips:%{REMOTE_ADDR}|0} 0 RewriteRule ^ - [L,F]

マッピングは条件で使用されています: ${allow_ips:%{REMOTE_ADDR}|0}。リモート アドレスが にある/path/to/ipfile.txt場合、マッピングは「1」を返します。それ以外の場合は、条件を満たす「0」を返し、ルールはアクセスを拒否します。

この種のマッピングの問題は、(マップを形成するために) 各 IP の末尾に「0」以外のものが必要になることです。

もう 1 つのオプションは、スクリプトを記述してprgマップ タイプを使用することです。スクリプトは別のファイルで IP を検索し、適切な「1」または「0」を返します。これは、キャッシュされたマップ ファイルとは対照的にスクリプトが毎回実行されるため、軽量ではありません。

于 2013-08-21T22:35:56.463 に答える