configurando mod_proxy_html corretamente?

2

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

A configuração funciona, exceto que as URLs geradas no aplicativo da Web não estão sendo reescritas pela minha configuração para mod_proxy_html.

O "Cenário de Proxy Reverso" é exatamente o que eu estou tentando fazer, então segui o tutorial tão completamente quanto eu sei.

Eu apliquei ou tentei respostas fornecidas aqui no stackoverflow, sem efeito.

De acordo com o "Cenário de Proxy Reverso", você quer um número de módulos carregados. Todas essas instruções estão no meu arquivo httpd.conf e quando eu examino a saída de

apactectl -t -D DUMP_MODULES

todos os módulos esperados são exibidos 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 de aplicativos rails é Mac OS X 10.6).

O que está funcionando agora é o acesso ao webapp via proxy reverso como:

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

Mas nenhum dos arquivos javascript, arquivos css ou outros recursos são carregados, e links internos para o aplicativo da web saem sem a parte do URL do URL, como se minha regra de reconfiguração estivesse configurada incorretamente (então, é claro que eu focado nisso e parece que nada pode ser adicionado ou excluído no processo de passar o html do apophost e sair pelo servidor Apache).

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

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

Veja como minhas diretivas do Apache se parecem:

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 eu faço no httpd.conf, eu verifiquei religiosamente o apachectl -t apenas para ser são.

Eu definitivamente não sou um especialista em Apache, mas todas as diretivas que se seguem não parecem anular o que estou fazendo aqui. Mas, em seguida, nada que eu tente parece alterar as URLs que vejo no meu navegador depois de atingir o servidor Apache com uma solicitação para o meu aplicativo da Web.

Mesmo que você não saiba o que eu fiz de forma incorreta, gostaria de receber ideias sobre como fazer com que o Apache ajude a ver o que está funcionando e fazendo com o html que vem do meu aplicativo da web. Isso é o que eu entendi o ProxyHTMLLogVerbose On e LogLevel Debug a ser configurado, mas eu não estou vendo nada nos arquivos de log.

    
por tobinjim 27.08.2012 / 04:38

1 resposta

1

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

ProxyHTMLURLMap /railsappname/ /apphost/railsappname/

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

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ê adicione você mesmo. Veja o link , as diretivas ProxyHTMLLinks e ProxyHTMLEvents são aquelas que você precisa adicionar à sua configuração .

    
por 27.08.2012 / 05:19

Tags