Apache seleciona seletivamente os pedidos de proxy reverso para o novo servidor

2

Estou movendo um aplicativo da web para um novo conjunto de servidores em um datacenter diferente. Como parte de um período beta, desejo configurar o servidor antigo como um proxy reverso para algumas solicitações, com base em um padrão na URL.

Por exemplo, se alguém solicitar:

http://old.example.com/foo/bar?q=1

... Quero dar a eles os resultados de

http://new.example.com/foo/bar?q=1

Os redirecionamentos não funcionarão, pois isso é usado como uma API e alguns clientes não seguem corretamente os redirecionamentos (a correção dos clientes não é uma opção). Além disso, isso precisa funcionar para solicitações GET e POST.

A lista de URLs para proxy seria seletiva, por exemplo, de modo que somente as solicitações "foo/*" seriam intermediadas por proxy, e as outras apenas seriam atendidas por old.example.com até a transição final.

O mod_proxy é o caminho certo a seguir? Não consigo encontrar nenhum exemplo que pareça:

  1. Permitir proxy seletivo (por exemplo, /foo/bar está em proxy, mas /baz/ham não é)
  2. Passe o caminho e a string de consulta inteiros e
  3. Mantenha o corpo do POST e todos os cabeçalhos HTTP intactos.

Qualquer ajuda seria muito apreciada.

    
por Mike Griffith 19.12.2012 / 19:28

1 resposta

3

Do que você descreve um simples:

 ProxyPass /foo/ http://new.example.com/foo/

deve funcionar. Todos os cabeçalhos e consultas GET / POST devem ser encaminhados corretamente. Você pode precisar de um ProxyPassReverse correspondente, dependendo da configuração e das necessidades. Se você precisar de mais controle sobre quais URLs são intermediadas por proxy, use:

 ProxyPassMatch [regex] [url]

A documentação oficial faz um bom trabalho em explicar as coisas. Se você tentou fazer proxy desse jeito e não funciona uma nova pergunta com detalhes mais específicos sobre o que você tentou e qual é o problema exato, você pode obter melhores resultados.

    
por 19.12.2012 / 21:22