Apache Reverse Proxy Zugriffskontrolle


8

Ich habe einen Apache-Reverse-Proxy, der derzeit für einige Sites Reverse-Proxy ist. Allerdings werde ich jetzt eine neue Site hinzufügen (nennen wir es newsite.com), auf die nur bestimmte IPs zugreifen sollten. Ist dies mit Apache als Reverse-Proxy möglich?

Ich verwende VirtualHosts für die Sites, die als Proxy verwendet werden. Ich habe versucht, die Allow / Deny-Direktiven in Kombination mit den Location-Anweisungen zu verwenden. Zum Beispiel:

<VirtualHost *:80>  
Servername newsite.com   
<Location http://newsite.com>
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>
<IfModule rewrite_module>
 RewriteRule ^/$ http://newsite.internal.com [proxy]
</IfModule>

Ich habe zum Beispiel auch versucht, erlauben / verweigern spezifisch für die Site in den Proxy-Direktiven zu konfigurieren

<Proxy http://newsite.com/>
  Order deny,allow
  Deny from all
  Allow from x.x.x.x
</Proxy>

Ich habe diese Definition jedoch immer noch für den Rest der Proxy-Sites.

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>

Egal was ich mache, es scheint von jedem Ort aus zugänglich zu sein. Liegt dies an der Definition für alle anderen Proxy-Sites? Gibt es eine Reihenfolge, auf die Proxy-Anweisungen angewendet werden? Ich hatte die Newsite sowohl vor als auch nach der * und auch innerhalb der VirtualHost-Anweisung.

Antworten:


2

Sie verwenden ServerName und ServerAlias für den Abgleich von newsite.com.

Sie sollten die Direktive NICHT für eine Reverse-Proxy-Konfiguration verwenden:

<Proxy whatever>

Du solltest benutzen:

Für Apache 2.2:

<Location />
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>

Für Apache 2.4:

<Location />
   <RequireAny>
       Require             ip x.x.x.x/255.255.255.0
       Require ...
   </RequireAny>
</Location>

Nach dem Authz sollten Sie einfach einen ProxyPass und den ProxyPassReverse ausführen (für die 302.301 Weiterleitungen):

ProxyPass /  http://newsite.com/
ProxyPassReverse /  http://newsite.com/

Beachten Sie, dass Sie dazu newsite.com zu Ihren / etc / hosts hinzufügen müssen oder dass DNS den Host in der URL auflösen sollte. Sie können auch nur die IP-Adresse verwenden, aber Sie sollten den httpd-Server anweisen, der den Header "Host:" mit folgendem Inhalt beibehält:

ProxyPreserveHost On

1

hatte heute ein ähnliches Problem; War im Zusammenhang mit der Art und Weise, wie der Platzhalterabgleich durchgeführt wird, ich denke, es wird die vollständige URL verwendet: in meinem Fall hatte ich

<Proxy /jira*>
  Order allow,deny
  Deny from all
</Proxy>
ProxyPass /jira https://myhost.com

und das hat nicht funktioniert. Die Website war von überall zugänglich. Ich habe ein paar Dinge ausprobiert und eine funktionierende Version gefunden:

<Proxy *jira*>

Also versuchen Sie es in Ihrem Fall mit

<Proxy http://newsite.com*>

um sicherzustellen, dass Apache mit dieser URL übereinstimmt.


0
<VirtualHost *:80>
    Servername newsite.com

    <Proxy *>
            Order Deny,Allow
            Deny from all
            Allow from x.x.x.x
    </Proxy>

    ProxyPass /  http://newsite.com/
    ProxyPassReverse /  http://newsite.com/

</VirtualHost>

1
Was macht das und warum macht es das?
sysadmin1138

Dies ist ein Reverse-Proxy, auf den nur über eine bestimmte IP zugegriffen werden kann (definiert durch Ersetzen des 'x' in Zulassen von xxxx ).
dr0i
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.