Como posso reescrever a localização raiz dos recursos referenciados nas páginas de proxy reverso no Apache 2?

Como posso reescrever a localização raiz dos recursos referenciados nas páginas de proxy reverso no Apache 2?

Temos um servidor de aplicativos localizado emhttp://foo.bar.

Ele precisa ser acessado via http://wibble/foo usando proxy reverso.

Eu consegui isso, mas há coisas em http://foo.bar que fazem referência a /

POR EXEMPLO:

/images/blah.jpg

Então, ele está tentando obter http://wibble/images/blah.jpg em vez de

http://wibble/foo/images/blah.jpg

Alguma idéia de como posso inserir o prefixo /foo para qualquer coisa referenciada em / ?

Responder1

mod_proxynuncamodifica o HTML.

Somente os cabeçalhos de resposta HTTP especificamente mencionados acima serão reescritos. O Apache não reescreverá outros cabeçalhos de resposta, nem reescreverá referências de URL dentro de páginas HTML. Isso significa que se o conteúdo proxy contiver referências de URL absolutas, eles ignorarão o proxy. Um módulo de terceiros que examinará o HTML e reescreverá as referências de URL é o mod_proxy_html de Nick Kew.

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

Responder2

Se você estiver usando o nginx como servidor front-end, poderá usar o HttpSubModule para realizar a substituição. Essencialmente, o nginx deve fazer proxy da solicitação e realizar a substituição no texto retornado. Eu acredito, porém, que você não pode usar isso se tiver compactação no back-end (então, contanto que você tenha compactação no servidor front-end, você estará bem):

Essencialmente: Nginx -> proxy para apache -> retornar para Nginx -> realizar substituição -> compactar e servir

Presumo que exista um módulo semelhante para Apache e outros servidores.

informação relacionada