Por que o mod_proxy não gosta de recursão?

1

Isenção de responsabilidade: Sou muito novo no mod_proxy e um pouco novo no apache em geral.

Eu tenho um host virtual muito simples com a seguinte configuração:

<VirtualHost *:80>
    ServerName myhost.mydomain


    <IfModule mod_proxy.c>
    ProxyRequests Off

    ProxyPass /mysite http://www.google.com
    ProxyPassReverse /mysite http://www.google.com

    </IfModule>

</VirtualHost>

Quando vou para http://myhost.mydomain/mysite , ele exibe o resultado esperado, ou seja, a página inicial do Google, mas ele não envia as imagens do Google. Quando olho para a fonte de uma imagem, ela é em termos de myhost.mydomain em vez de um URI do Google, o que é esperado. O que não é esperado é porque as imagens não estão sendo buscadas por mod_proxy e enviadas para mim. Como eu faço mod_proxy "recursiva" a la mod_rewrite . Na mesma linha, se eu já estiver familiarizado com mod_rewrite , por que se incomodar com mod_proxy ?

    
por tacos_tacos_tacos 01.10.2012 / 23:43

1 resposta

2

Os recursos do Google na página estão no formato img src="/images/srpr/logo3w.png" ou similar; isso faz com que eles sejam buscados a partir da raiz do site.

Veja como você configurou o proxy; /mysite/images/srpr/logo3w.png é a solicitação que o navegador do cliente precisaria enviar para obter a imagem. Mude para ..

ProxyPass / http://www.google.com/

e tudo deveria funcionar.

mod_proxy_html foi projetado para alterar os caminhos de link para funcionar corretamente no contexto do proxy, mas não conte com ele funcionando corretamente para um site que você não controla, especialmente se algum link building for concluído no lado do cliente javascript.

mod_rewrite e mod_proxy têm finalidades completamente diferentes; Se você usar o sinal [P] em mod_rewrite , estará realmente utilizando mod_proxy , mas de uma maneira menos eficiente do que apenas configurando ProxyPass .

    
por 02.10.2012 / 00:46