ProxyPreserveHost su singole regole proxy


8

Ho due regole di proxy sul mio host web, una che punta a un'istanza di vernice locale per scopi di memorizzazione nella cache, per la quale voglio abilitato ProxyPreserveHost, e un'altra che punta a un sito ospitato di terze parti, per cui desidero che ProxyPreserveHost sia disabilitato. Posso comunque farlo in base a una regola / pass?

Risposte:


13

In Apache 2.2, no - la ProxyPreserveHostdirettiva è valida solo nella configurazione del server o in contesti di host virtuali ; avresti bisogno che le diverse ProxyPassistruzioni si trovassero in host virtuali diversi.

In Apache 2.4, sì - il contesto della directory è stato aggiunto per la direttiva , quindi ora puoi fare qualcosa come:

<Location /to-varnish/>
    ProxyPreserveHost On
    ProxyPass http://127.0.0.1:8000/to-varnish/
</Location>
<Location /to-third-party/>
    ProxyPreserveHost Off
    ProxyPass http://third-party-site.com/
</Location>

3

È possibile con l'aiuto di RequestHeader

ProxyPreserveHost On
<LocationMatch third-party-pattern>
   RequestHeader  set  Host  third-party-vhost-name
   ProxyPassMatch  http://third-party-server
</LocationMatch>
<LocationMatch varnish-pattern>
   ProxyPassMatch  http://varnish-server
</LocationMatch>

0

Non riesco a migliorare la risposta di Sorin ...

Nella nostra situazione locale che esegue Apache 2.2 e l'app primaria richiede proxypreservehost (autore CQ / AEM) per accedere, ma un partner a cui facciamo il proxy richiede il proprio host nell'intestazione host.

Non abbiamo bisogno di farlo con regex però, un normale <Location...>funziona bene.

Dalla documentazione ( http://httpd.apache.org/docs/2.2/mod/core.html#location ):

La direttiva limita l'ambito di applicazione delle direttive allegate tramite URL.

Questa soluzione funziona per noi:

  <Location /[path]/ >
    RequestHeader set Host [thirdparty]
  </Location>
  RewriteRule ^/[path]/(.*) https://[thirdparty]/$1 [P,NC,L]

Ciò imposta l'intestazione host per questa richiesta sul nome host del partner.

Con questo in atto, possiamo continuare ad accedere all'autore CQ / AEM e al proxy del servizio partner usando l'intestazione host prevista.

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.