O bypass do proxy de balanceamento de carga do Apache não está funcionando

2

Eu tenho usado o apache como um proxy reverso para um servidor de aplicativos puma (RoR). Os ativos estão todos em um subdiretório chamado assets, e eu adicionei uma linha à configuração do apache assim:

<Location /assets>
  ProxyPass !
</Location>

Isso funcionou bem, o material estático era servido pelo apache, todo o resto era proxied para o puma. No entanto, quero implementar o balanceamento de carga, então adicionei as seguintes linhas à configuração:

<Proxy balancer://mycluster>
  BalancerMember http://localhost:9292
  BalancerMember http://192.168.1.2:9292
</Proxy>

e defina as diretivas reversas de passagem de proxy e de passagem de proxy para essa

ProxyPass / balancer://mycluster lbmethod=byrequests
ProxyPassReverse / balancer://mycluster

Agora, o diretório de recursos não funciona, recebo um erro 500 quando o navegador tenta obter um dos arquivos no diretório. No log de erros do servidor, a seguinte linha aparece:

 [Wed Aug 28 15:31:52 2013] [warn] proxy: No protocol handler was valid for 
 the URL /assets/application-c713b532d29cd16b1e8d99df39489e72.css. If you 
 are using a DSO version of mod_proxy, make sure the proxy submodules are 
 included in the configuration using LoadModule.

Alguém pode sugerir porque minha configuração não funciona mais? A configuração completa é aqui

- EDITAR

Na verdade, o único caminho que funciona é o caminho da raiz, nenhuma das outras solicitações que anteriormente estavam em proxy para o trabalho do servidor puma também.

    
por Slicedpan 28.08.2013 / 16:44

1 resposta

3

Eu usaria a diretiva ProxyPassMatch para um melhor controle:

ProxyPassMatch ^/assets/.*$ !
ProxyPassMatch ^/(.*)$ balancer://mycluster/$1 lbmethod=byrequests
ProxyPassReverse / balancer://mycluster

<Proxy balancer://mycluster>
  BalancerMember http://localhost:9292
  BalancerMember http://192.168.1.2:9292
</Proxy>

Como as diretivas são avaliadas na ordem em que aparecem, o diretório assets não deve estar em proxy, enquanto o resto das URLs usaria o balanceador.

    
por 28.08.2013 / 20:16