.NET

18 jan, 2010

Criando um Proxy com Apache2

Publicidade

Quando precisamos processar mais de um tipo de linguagem em um mesmo ambiente web com apache, podemos delegar as requisições para outros servidores Http.

  • Por exemplo, eu tenho uma aplicação em php, mas essa aplicação
    tem módulos integrados novos que foram desenvolvidos em
    Java, ColdFusion, .Net e por aí vai, e eu preciso adicionar este como
    um módulo do sistema.
  • Ou eu preciso dividir o processamento da minha aplicação que possui um módulo que requer de muito poder de processamento.

Pensando nisso eu efetuei uma pesquisa e acabei descobrindo como
delegar requisições para outros computadores na minha rede ou em uma
rede externa. A solução que encontrei veio bem a calhar, foi a de criar um proxy no apache.

Criei um servidor apenas para receber minhas requisições e, com base nas
mesmas, delegar ao servidor responsável pelo processamento.

Agora, imaginem que tenho uma url www.exemplo.com. O ponto principal da minha url é processar o site que foi feito em php. Para acessar os sub-sistemas que o domínio possui há sub-pastas dos módulos:

  • Apache2 (192.168.0.1:80) – Servidor que recebe as requisições.
  • PHP (192.168.0.2:80) – Site da empresa.
  • Java (192.168.0.3:8080) – Sistema interno de protocolo da empresa.
  • .NET (192.168.0.4:80) – Sistema de pagamento e cobranças.
  • ColdFusion (192.168.0.5:8888) – Sistema de HelpDesk.

Com base nas informações acima, vamos começar a configurar o proxy para redirecionar as requisições.

Entende-se que você tenha tudo instalado.

Configurando um proxy para o site (Servidor PHP – 192.168.0.2:80):

<virtualhost *:80>
ServerName www.exemplo.com
ProxyPass / http://192.168.0.2:80/
<proxy *>
Order deny,allow
Allow from all
</proxy>
</virtualhost>

A diretiva ServerName especifica qual url este virtualhost irá responder.

  • A diretiva ProxyPass é responsável por fazer o
    mapeamento da url que irá receber a requisição e encaminhar para o
    servidor responsável por processar a mesma. O ProxyPass atua como um espelho para os servidores remotos.
  • Na declaração da tag <Proxy> você controla o acesso a url.

 Configurando o sistema de protocolo (Servidor Java – 192.168.0.3:8080):

<virtualhost *:80>
    ServerName www.exemplo.com
    ProxyPass /sip http://192.168.0.3:8080/sip
    <proxy *>
        Order deny,allow
        Deny from all
        Allow from 192.168.0.0
    </proxy>
</virtualhost>

Como você pode notar, na diretiva ProxyPass adicionamos a /sip. Isso significa que, quando a url www.exemplo.com/sip for acessada, o proxy enviará a requisição para o servidor http://192.168.0.3:8080/sip, que é o responsável pelo sistema em questão.

Um outro ponto importante é que na tag <Proxy> foram adicionadas duas diretivas: Deny from all, que vai bloquear qualquer acesso a url; e Allow from 192.168.0.0, que vai liberar o acesso somente para requisições vindas da faixa de IP’s 192.168.0.0.

As demais configurações para os outros IPs seguem o mesmo modelo.

Para demais configurações, acesse o site da apache http://httpd.apache.org/docs/2.2/mod/mod_proxy.html.

Espero ter ajudado, e até a próxima!