configurando mod_proxy_html corretamente?

configurando mod_proxy_html corretamente?

Eu tenho um servidor web Apache2 que lida com proxy reverso para o aplicativo Rails3 em execução em outra máquina.

A configuração funciona, exceto que os URLs gerados no webapp não estão sendo reescritos pela minha configuração para mod_proxy_html.

O"Cenário de proxy reverso"é exatamente o que estou tentando fazer, então segui o tutorial tão completamente quanto pude.

Apliquei ou tentei as respostas fornecidasaquino stackoverflow, sem efeito.

De acordo com o "Cenário de proxy reverso", você deseja carregar vários módulos. Todas essas instruções estão no meu arquivo httpd.conf e quando examino a saída do

apactectl -t -D DUMP_MODULES

todos os módulos esperados aparecem na listagem.

Meu servidor web externo que faz o proxy reverso está em www.ourdomain.org e o aplicativo Rails está disponível internamente em apphost.local (o servidor é Mac OS X Server 10.6, o servidor do aplicativo Rails é Mac OS X 10.6).

O que está funcionando agora é o acesso ao webapp por meio do proxy reverso como:

http://www.ourdomain.org/apphost/railsappname/controllername/action 

Mas nenhum dos arquivos javascript, arquivos css ou outros ativos são carregados, e os links internos do aplicativo da web saem sem a parte apphost da URL, como se minha regra de reescrita estivesse configurada incorretamente (então é claro que me concentrei nisso e parece que não consigo adicionar ou excluir nada no processo de passagem do html do apphost e do servidor Apache).

Por exemplo, passando o mouse sobre um link de ação no HTML retornado pelo aplicativo da web, você obterá:

http://www.ourdomain.org/railsappname/controllername/action

Esta é a aparência das minhas diretivas do Apache:

LoadModule proxy_html_module /usr/libexec/apache2/mod_proxy_html.so
LoadModule xml2enc_module /usr/libexec/apache2/mod_xml2enc.so
    ProxyHTMLLogVerbose On
    LogLevel Debug
    ProxyPass /apphost/  http://apphost.local/
    <Location /apphost/>
            SetOutputFilter INFLATE;proxy-html;DEFLATE
            ProxyPassReverse /
            ProxyHTMLExtended On
            ProxyHTMLURLMap railsappname/ apphost/railsappname/
            RequestHeader unset Accept-Encoding
    </Location>

Após cada alteração que faço no httpd.conf, verifico religiosamente apachectl -t apenas para manter a sanidade.

Definitivamente, não sou um especialista em Apache, mas todas as diretrizes que seguem as minhas parecem não anular o que estou fazendo aqui. Mas nada que eu tente parece alterar os URLs que vejo em meu navegador depois de acessar o servidor Apache com uma solicitação para meu aplicativo da web.

Mesmo que você não saiba o que fiz de errado, eu gostaria de receber ideias sobre como fazer com que o Apache ajude a ver no que ele está funcionando e fazendo com o HTML proveniente do meu aplicativo da web. Foi isso que entendi que o ProxyHTMLLogVerbose On e o LogLevel Debug estavam configurando, mas não estou vendo nada nos arquivos de log.

Responder1

Talvez uma resposta um pouco simplista, mas a maioria (se não todas) das diretivas ProxyHTMLURLMap que vi até agora têm um / no início do padrão de correspondência/substituição. Você já tentou esta variante da sua configuração?

ProxyHTMLURLMap /railsappname/ /apphost/railsappname/

Se isso não ajudar, qual versão do Apache você está executando? E se for o caso, qual versão do módulo? Ele só vem junto com o Apache desde o Apache 2.4, portanto, para versões mais antigas do Apache, você mesmo deve ter instalado (alguma versão) deste módulo.

Como alternativa, você também pode mudar para mod_substitute, embora isso exija mais configuração do que mod_proxy_html.

Em algum momento, eles removeram algumas configurações internas, o que exige que você mesmo as adicione. Verhttp://apache.webthing.com/svn/apache/filters/proxy_html/proxy_html.conf, as diretivas ProxyHTMLLinks e ProxyHTMLEvents são as que você precisa adicionar à sua configuração.

informação relacionada