次のスニペットを使用すると、誰もが/ fooと/ barの両方にアクセスできます
ProxyPass /foo http://example.com/foo
ProxyPassReverse /foo http://example.com/foo
ProxyPass /bar http://example.com/bar
ProxyPassReverse /bar http://example.com/bar
しかし、誰もが/ fooにアクセスでき、/ barが特定のIPからのリクエストにのみアクセスできるようにしたい場合はどうすればよいでしょうか。
リモートアドレスをチェックするSetEnvIf
ディレクティブを使用できると思います(Remote_Addr
)。
IPが1つの場合:
SetEnvIf Remote_Addr "123.123.123.123" TRUST=yes
正規表現による複数のIPの確認
SetEnvIf Remote_Addr "123\.123\.123\.123|134\.134\.(134\.(134|134)|134\.134)" TRUST=yes
あなたがこれを直接行うことができるかわかりません:
ProxyPass /foo http://example.com/foo env=TRUST
しかし、おそらくあなたは書き換えルールを操作して同じ結果を得ることができます...
たとえば、信頼されないすべてのIP(env=!TRUST
)
それが役に立てば幸い。
答えは次のようになります。単一のIPのセットではなくサブネット全体を許可する必要がある人のために、1つのルールにIPとサブネットを含めました。
<Location /foo>
Deny from all // **This rule is the most IMPORTANT**
Allow from 192.168.1.2 10.100 // The second value implies 10.100.0.0/16 subnet
ProxyPass http://example.com/foo
ProxyPassReverse http://example.com/foo
</Location>
<Location /bar>
Allow from 1.2.3.4 2.3.4.5 ...
ProxyPass http://example.com/bar
ProxyPassReverse http://example.com/bar
</Location>
ここでは、ProxyPassおよびProxyPassReverseの最初の引数がロケーションブロックのターゲットであることを示しています。