Solicitações HTTP de proxy reverso usando informações do banco de dados

1

Temos um servidor da Web ligeiramente irregular: ele fornece detalhes do usuário com base no endereço IP do usuário. Os detalhes do usuário são armazenados em vários bancos de dados; Cada banco de dados armazena informações sobre um subconjunto de usuários. Os usuários possuem dados em apenas um banco de dados. Existe um banco de dados mestre que informa onde cada usuário pode ser encontrado.

Devido a fatores externos, o servidor da web deve ser substituído por uma máquina dedicada para cada banco de dados. Seria fácil configurar um proxy reverso que divide as solicitações entre os servidores. No entanto, a decisão de qual servidor encaminhar a solicitação depende da entrada no banco de dados mestre.

Existe um servidor proxy reverso que permite que um script decida qual servidor de back-end consegue manipular uma solicitação específica?

    
por Andomar 30.08.2010 / 13:48

1 resposta

1

O Squid pode facilmente fazer isso com seus parâmetros url_rewrite_program e location_rewrite_program .

Por exemplo, crie um script Perl como

#!/usr/bin/perl -w

$!=1;
while (<>) {
     s@foo@bar@g;
     print;
}

e salve como / usr / local / bin / mysquidrewriter . O script acima substituiria todas as ocorrências foo na URL como barra . Para as coisas reais do SQL, é claro que você precisa modificar esse script. : -)

Em seguida, adicione ao squid.conf uma linha como

url_rewrite_program /usr/local/bin/mysquidrewriter

Quando você reinicia o Squid, ele inicia um par de processos de mysquidrewriter em segundo plano e cada URL que o Squid deve servir será massageado através deles. Eu fiz isso muitas vezes e funciona perfeitamente.

    
por 30.08.2010 / 13:56