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
ページに移動するには、どうすればこれを取得できますか?
どのバージョンのApacheを使用していますか? URLに基づいてリソースへのアクセスを制限する1つの方法は、
例えば:
<Location /admin/tools>
Order Deny,Allow
Deny from all
Allow from 192.168.1.34
</Location>
上記の要件の時点で、この回答は正常に機能しています。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の表示を許可する
このシナリオを拡張して、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エンドポイントアクセス全体がロックされます。