0

正常に動作する ProxyPass ajp ルールを正常に作成しましたが、ip-whitelist を使用して特定の URL のアクセスを制限したいと考えています。つまり、誰かがホワイトリストにない IP から来た場合、リクエストはプロキシパスされるべきではありません (そして、理想的には、ある種のアクセス拒否が発行されるべきです)。

プロキシを渡すマシンを制御できないため、そのマシンの構成に ip-whitelist を配置できません。そのため、proxypass ルールを持つ同じマシンでこれを構成しようとしています。

リクエストがまだプロキシパスされているため、「Allow from」ルールを使用して <Location /path> を定義しても機能しません。これは単に、proxypass ルールが location-rule より優先されることを意味していると思います。

リモートアドレスに応じて環境変数を設定することで回避しようとしました(その場合、非ホワイトリスト IP を存在しない URL にプロキシすることができるためです。きれいではありませんが、目標を達成することができます)が、proxypass のようですルールは環境変数では機能しません。これと同じくらい簡単なもの:

SetEnv custom_proxypath=/
ProxyPass %{ENV:custom_proxypath} ajp://10.50.40.21:8009/
ProxyPassReverse %{ENV:custom_proxypath} ajp://10.50.40.21:8009/

動作しません。その間

ProxyPass / ajp://10.50.40.21:8009/
ProxyPassReverse / ajp://10.50.40.21:8009/

完璧に動作します。

私には選択肢がありません。他の誰かがこれにアプローチする方法を提案していますか?

4

1 に答える 1

0

今日知ったのですが・・・ SetEnv は ProxyPassよりもリクエストサイクルの後半で適用されるため、設定が間に合いません。ただし、RewriteCond/RewriteRule で設定された環境変数と同様に、SetEnvIf は十分早い段階で適用されます。これを常に真である SetEnvIf にリファクタリングできるはずであり、それでうまくいきます。

于 2013-07-05T03:06:15.137 に答える