web-dev-qa-db-ja.com

Apacheajpリバースプロキシを使用して特定のURLを制限する方法

Apache Reverse Proxyを使用していますが、以下はApache Virtual Host構成の一部です

ProxyRequests Off
<Proxy *>
        AddDefaultCharset off
        Order deny,allow
        Allow from all
</Proxy>
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
proxyPass /        ajp://127.0.0.1:8009/

ここで、request urlのようにhttp://mysite.com/admin/toolsを制限して、特定のIP addressからのみアクセスできるようにします。どうすればこれを達成できますか?

編集:

上記の要件の時点で この回答 は正常に機能しています。1つまたは2つのIP'sからadmin URLへのアクセスを許可し、残りのIP'sをリダイレクトしたいとします。 forbidden errorを表示する代わりにindexページに移動するには、どうすればこれを取得できますか?

1
Mahesh.D

どのバージョンのApacheを使用していますか? URLに基​​づいてリソースへのアクセスを制限する1つの方法は、

例えば:

<Location /admin/tools>
  Order Deny,Allow
  Deny from all
  Allow from 192.168.1.34
</Location>
1

上記の要件の時点で、この回答は正常に機能しています。1つまたは2つのIPから管理URLへのアクセスを許可し、残りのIPを禁止エラーを表示する代わりにインデックスページにリダイレクトしたい場合、どうすればよいですか?

@ krist-van-besienの回答を拡張するには、次のようにErrorDocument for403 Forbiddenを使用してこれを行うことができます。

<Location /admin/tools>
  Order Deny,Allow
  Deny from all
  Allow from 192.168.1.34
  ErrorDocument 403 /index.php
</Location>

ユーザーには、リダイレクト先のページを表示する権限が必要であることに注意してください。詳細については、この質問を確認できます: ブロックされたIPに403 ErrorDocumentの表示を許可する

1
zorlem

このシナリオを拡張して、RESTful Webサービスエンドポイントに適用するのではなく、Webページからエンドポイントを呼び出す。

ローカルサーバーのWebページからの要求をプロキシしてWebサービスアドレスに転送し、ローカル内部ネットワーク要求(開発者)にWebサービスエンドポイントへのアクセスを許可する一方で、直接の外部WSエンドポイント要求を制限する方法はありますか?

たとえば、WebサービスがTomcat(ポート8080)で実行されていて、mod_proxyを使用して、Webページのサービス呼び出しでポート80-> Tomcat:8080/webserviceのWebページからApacheリクエストをリダイレクトしている場合です。

        <Location /admin/tools>
            Order Deny,Allow
            Deny from all
            Allow from localhost
            Allow from 127.0.0.1
            Allow from *local.domain.com
        </Location>
        ProxyPass /admin/tools http://localhost:8080/admin/tools
        ProxyPassReverse /admin/tools http://localhost:8080/admin/tools

これを試してみると、プロキシパスエンドポイントに送信されるWebページリクエストを含むWSエンドポイントアクセス全体がロックされます。

0
user197657