Ich versuche, einen Reverse-Proxy einzurichten, damit nur einige ausgewählte IP-Bereiche einen Proxy für einen internen Host erstellen können, während ich möchte, dass alle anderen Benutzer, die nicht zu den IP-Bereichen gehören, zu unserem internen benannten Host umleiten. In diesem Setup funktioniert der Webservice, während jeder, der nicht über VPN in unser Netzwerk eingebunden ist, nicht zur internen Ressource navigieren kann. Ich habe versucht, dies ohne Glück zum Laufen zu bringen. Meine Teilkonfiguration lautet derzeit wie folgt:
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>
Diese Konfiguration scheint gut zu funktionieren, um zu verhindern, dass andere IP-Bereiche Proxys verwenden können. Ich bin jedoch unklar, wie ich eine Weiterleitungsanweisung für andere Personen hinzufügen kann.
Bearbeiten Ausgehend von der ersten Antwort sieht mein Code jetzt so aus:
<If "%{REMOTE_ADDR} -ipmatch 'xxx.xxx.xxx.xxx/24'">
ProxyPass / http://server.local.corp:8000/
ProxyPassReverse / http://server.local.corp:8000/
</If>
Und Apache löst beim Neustart den folgenden Fehler aus:
ProxyPass cannot occur within <If> section
Action 'configtest' failed.
The Apache error log may have more information.
quelle
Antworten:
Folgendes sollte funktionieren, wenn Sie Subdomains verwenden dürfen, nur sollte ich es im Moment nicht testen können ...
Die Logik sollte jedoch funktionieren.
Verwenden Sie die, um XTERNs in eine Unterdomäne umzuleiten, z. xtern.example.com und lösen Sie die Dinge mit virtuellen Hosts!
quelle
Sie müssen Ihre ProxyPass- und Redirect-Anweisungen in die neu eingeführte If-Anweisung einschließen: <If expression> ProxyPass… </ If> "
Werfen Sie einen Blick auf http://httpd.apache.org/docs/2.4/mod/core.html#if mehr über die Ist - Richtlinie , um herauszufinden, und http://httpd.apache.org/docs/2.4/expr .html , um zu lernen, wie man einen Apache-Ausdruck schreibt (-ipmatch scheint das zu sein, wonach Sie suchen)
Beachten Sie, dass dies nur in Apache httpd 2.4 gültig ist.
quelle