リバースプロキシを設定して、いくつかの選択したIP範囲のみが内部ホストにプロキシできるようにしようとしていますが、IP範囲内にない他の人は、内部の名前付きホストにリダイレクトしたいと思います。この設定では、Webサービスは機能しますが、ネットワークにVPN接続されていない人は、内部リソースに移動できません。私はこれを運がなくても機能するようにしてきました、私の部分的な設定は現在次のとおりです:
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
<Location />
Allow From xxx.xxx.xxx.xxx/24 1xxx.xxx.xxx.xxx/23
Deny From All
ProxyPass http://server.local.corp:8000/
ProxyPassReverse http://server.local.corp:8000/
</Location>
この構成は、他のIP範囲がプロキシできないようにブロックするためにうまく機能しているように見えますが、他の人にリダイレクトステートメントを追加する方法がわかりません。
編集最初の回答からアドバイスを受けると、私のコードは次のようになります。
<If "%{REMOTE_ADDR} -ipmatch 'xxx.xxx.xxx.xxx/24'">
ProxyPass / http://server.local.corp:8000/
ProxyPassReverse / http://server.local.corp:8000/
</If>
また、Apacheは再起動時に次のエラーをスローします。
ProxyPass cannot occur within <If> section
Action 'configtest' failed.
The Apache error log may have more information.
次のshouldは、サブドメインの使用が許可されている場合にのみ機能しますshould現時点ではテストできません...
ただし、ロジックは機能するはずです。
を使用して、XTERNをサブドメインにリダイレクトします。 xtern.example.comと仮想ホストで問題を解決してください!
<VirtualHost *:80>
ServerName example.com
<If "%{REMOTE_ADDR} !-ipmatch 'xxx.xxx.xxx.xxx/24'">
Redirect "/" "http://xtern.example.com"
</If>
ProxyPass http://server.local.corp:8000/
ProxyPassReverse http://server.local.corp:8000/
</VirtualHost>
<VirtualHost *:80>
ServerName xtern.example.com
ProxyPass http://server.xtern.corp:8000/
ProxyPassReverse http://server.xtern.corp:8000/
</VirtualHost>
ProxyPassおよびRedirectディレクティブを新しく導入されたIfステートメントにラップする必要があります:<If式> ProxyPass…</ If> "
http://httpd.Apache.org/docs/2.4/mod/core.html#if を見て、Ifディレクティブの詳細を確認してください。 http:// httpd.Apache.org/docs/2.4/expr.html Apache式の記述方法を学ぶ(-ipmatchはあなたが探しているもののようです)
これはApache httpd 2.4でのみ有効であることに注意してください。