Como posso especificar ProxyPassReverse para ProxyPassMatch em vários hosts de destino?

0

Estou usando o httpd mod_proxy para configurar um proxy CORS, semelhante ao espírito do thingproxy ou crossorigin.me . Eu tenho chegado tão longe como

SSLProxyEngine on
<LocationMatch "^/corsproxy/(https?)://([^/]+)/(.*)$">
    ProxyPassMatch "$1://$2/$3"
    Header set Access-Control-Allow-Origin "https://my-site.org/"
    Header unset X-Frame-Options
</LocationMatch>

Isso funciona, pois você pode visitar http://myhost/corsproxy/http://example.com/somepage e carregar com sucesso. O problema é que os redirecionamentos ainda apontam diretamente para example.com , não para a URL equivalente com proxy.

É aí que entra o ProxyPassMatch , mas não acredito que seja capaz de fazer correspondências de regex com o URL de destino, por isso não consigo extrair o protocolo, nome de host e caminho, como fiz em LocationMatch . Existe uma solução para isso? Talvez algo que eu possa fazer com mod_rewrite ?

Antes de os comentários aparecerem: sim, estou ciente das ramificações de segurança e, sim, gostaria de tentar fazer isso totalmente dentro do httpd, em vez de executar uma ferramenta como as que eu criei no início de a questão, uma vez que introduzem dependências externas (em ambos os casos, o NodeJS).

    
por Coderer 07.07.2017 / 14:16

1 resposta

0

Não tenho certeza do que mais ProxyPassReverse normalmente faz, mas apenas para redirecionamentos consegui usar uma diretiva Header edit :

Header edit Location ^http://(.+)$ "/corsproxy/http://$1"
Header edit Location ^https://(.+)$ "/corsproxy/https://$1"

Eu joguei usando uma única linha em vez de duas, mas tive um comportamento estranho e não valia a pena rastreá-lo. Eu ainda gostaria de saber se há outros casos que eu não estou cobrindo com essa abordagem.

    
por 07.07.2017 / 16:53