ProxyPreserveHost em regras individuais do proxypass

8

Eu tenho duas regras proxypass no meu host, uma que aponta para uma instância de verniz local para fins de cache, para a qual desejo ProxyPreserveHost ativado, e outra que aponta para um site hospedado por terceiros, para o qual Desative ProxyPreserveHost desativado. Existe alguma maneira que eu possa fazer isso por regra / passagem?

    
por 580farm 14.11.2012 / 21:42

3 respostas

10

Sob o Apache 2.2, não - a diretiva ProxyPreserveHost é válida apenas na configuração do servidor ou contextos de host virtual ; você precisaria das diferentes instruções ProxyPass para estar em hosts virtuais diferentes.

No Apache 2.4, sim - o contexto do diretório foi adicionado para a diretiva , agora você pode fazer algo como:

<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>
    
por 15.11.2012 / 07:46
3

Você pode ajudar o 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>
    
por 30.05.2013 / 11:30
0

Eu sou incapaz de contestar a resposta do Sorin ...

Em nossa situação local executando o Apache 2.2, e o aplicativo principal requer proxypreservehost (autor do CQ / AEM) para efetuar login, mas um parceiro para o qual procuramos requer seu host no cabeçalho do host.

Não precisamos fazer isso com o regex, mas um <Location...> normal funciona bem.

Da documentação ( link ):

The directive limits the scope of the enclosed directives by URL.

Esta solução funciona para nós:

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

Isso define o cabeçalho do host para essa solicitação como o nome do host do parceiro.

Com isso, podemos continuar fazendo login no autor e proxy do CQ / AEM para o serviço de parceiros usando o cabeçalho de host esperado.

    
por 10.07.2014 / 19:50