Controllo dell'accesso proxy inverso Apache


8

Ho un proxy inverso Apache che attualmente sta eseguendo il proxy inverso per alcuni siti. Tuttavia ora sto per aggiungere un nuovo sito (chiamiamolo newsite.com) che dovrebbe essere accessibile solo da determinati IP. È possibile usare Apache come proxy inverso?

Uso VirtualHosts per i siti sottoposti a proxy. Ho provato a utilizzare le direttive Consenti / Nega in combinazione con le istruzioni Posizione. Per esempio:

<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>

Ho anche provato a configurare consenti / nega in modo specifico per il sito nelle direttive proxy, ad esempio

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

Ho ancora questa definizione per il resto dei siti proxy.

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

Non importa quello che faccio, sembra essere accessibile da qualsiasi luogo. È a causa della definizione per tutti gli altri siti proxy. Esiste un ordine al quale si applicano le direttive Proxy. Ho avuto il giornale sia prima che dopo * e anche all'interno dell'istruzione VirtualHost.

Risposte:


2

Stai usando ServerName e ServerAlias per abbinare newsite.com.

Si dovrebbe non utilizzare per una configurazione proxy inverso della direttiva:

<Proxy whatever>

Dovresti usare:

Per apache 2.2:

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

Per apache 2.4:

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

Dopo aver eseguito Authz, dovresti semplicemente fare un ProxyPass e ProxyPassReverse (per i reindirizzamenti 302.301):

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

Tieni presente che con questo devi aggiungere newsite.com al tuo / etc / hosts o che dns dovrebbe risolvere l'host nell'URL. È inoltre possibile utilizzare solo l'indirizzo IP ma è necessario indicare al server httpd che conserva l'intestazione "Host:" con:

ProxyPreserveHost On

1

ha avuto un problema simile oggi; Era correlato a come viene eseguita la corrispondenza dei caratteri jolly, penso che utilizzi l'URL completo: nel mio caso avevo

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

e questo non ha funzionato. Il sito era accessibile da qualsiasi luogo. Ho provato un paio di cose e ho trovato una versione funzionante:

<Proxy *jira*>

Quindi nel tuo caso prova con

<Proxy http://newsite.com*>

per assicurarsi che apache corrisponda a tale URL.


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
Cosa fa questo e perché lo fa?
sysadmin1138

Questo è un proxy inverso accessibile solo da un determinato IP (da definire sostituendo la "x" in Consenti da xxxx ).
dr0i,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.