Como montar um proxy reverse no servidor Apache

Proxy reverse é uma espécie de cluster de máquinas, onde um servidor central utiliza recursos de outros servidores web de sua rede interna. Com um proxy reverse você pode misturar num único site, recursos do Apache em servidor Linux, IIS em Windows 2k, Java em Jakarta Tomcat, etc.

[ Hits: 147.431 ]

Por: Fabiano S. Ricardo em 07/01/2004


O que vem a ser um proxy reverse



O que vem a ser necessariamente um Proxy Reverse?

Imagine que você tenha uma máquina Linux rodando o Apache como servidor de aplicações web com páginas em HTML que pode ser facilmente acessado por qualquer pessoa de qualquer lugar.

Bom, suponhamos que você tem dois servidores Windows 2000 Server rodando na rede interna com IPs não roteáveis, um rodando aplicações ASP com o Serviço IIS (Internet Information Service) e outro rodando aplicações Java, por exemplo o Jakarta - TomCat. Ambos acessando um bando de dados robusto do tipo Oracle ou outro banco qualquer.

Só que essas máquinas só conseguem responder por http://192.168.0.1/aplicacao ou http://servidor_windows/aplicacao, ou seja, somente as máquinas da sua rede interna poderão navegar na aplicação e você não tem nenhum ip verdadeiro para estar delegando a essas máquinas para poder torná-las acessíveis para a internet.

Aí entra a jogada o Proxy Reverse! O Proxy Reverse pode ser entendido também como Cluster Web, ou seja, uma máquina principal recebe a solicitação e essa máquina tem por objetivo solicitar o serviço de outra máquina. Não entenda como redirecionamento e sim como troca de processamento, sendo que o processamento estará sendo dividido, ou seja, uma estará postando as informações e a outra estará fornecendo o serviço.

    Próxima página

Páginas do artigo
   1. O que vem a ser um proxy reverse
   2. Configurando o Apache para o funcionamento do proxy
   3. Configurando o proxy reverse para acessar outras máquinas
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Replicação e balanceamento de carga em servidores usando DNS

Radius - Freeradius com MySQL no Debian

VNC + Hamachi

Conectando Ajato com Linux

Compartilhando internet via rádio entre um servidor Linux e clientes Windows

  
Comentários
[1] Comentário enviado por fabio em 07/01/2004 - 01:59h

Babei com esse recurso do Apache, muito bom mesmo! Agora me pintou uma dúvida, a diretiva de proxy reverse aqui está declarada relacionada com o documento raiz de um site, mas e se eu tiver vários domínios no servidor separados por VirtualHosts e agora quero fazer com que determinado site fique hospedado num servidor interno. Posso declarar o <IfModule...> dentro de uma entrada <VirtualHost>? Entendeu a pergunta? Vou pesquisar isso, qualquer coisa me dê um toque.

[]'s

[2] Comentário enviado por msmaximo em 08/01/2004 - 09:47h

Parabéns Fabiano pelo artigo. Esta muito bem explicado.
Ele será muito útil aonde trabalho.
Um abraço.

[3] Comentário enviado por raptor_mogi em 08/01/2004 - 16:33h

Obrigado pessoal, espero poder contribuir com mais artigos interessantes!

[4] Comentário enviado por lryal em 11/04/2004 - 11:30h

Oi Fabiano,
Excelente artigo. Muito bem escrito.
Bom, se você tiver alguma dica sobre alta disponibilidade de servidores, isto é, algum artigo que possa ajudar-me sobre configuração de VRRP, round robin, ou qualquer outro método de alta disponibilidade agradeço muito.
A minha idéia é ter 2 servidores de proxy reverso e se um falhar o outro assume.
O meu objetivo não é utilização profissional e sim educacional. Se você quiser mais informações sobre o meu objetivo posso enviar um email explicando mais detalhes.
Agradeço muito se voce puder ajudar-me.
Abcs,
Luis Roberto

[5] Comentário enviado por lryal em 11/04/2004 - 11:33h

Oi Fabiano,
Excelente artigo. Muito bem escrito.
Bom, se você tiver alguma dica sobre alta disponibilidade de servidores, isto é, algum artigo que possa ajudar-me sobre configuração de VRRP, round robin, ou qualquer outro método de alta disponibilidade agradeço muito.
A minha idéia é ter 2 servidores de proxy reverso e se um falhar o outro assume.
O meu objetivo não é utilização profissional e sim educacional. Se você quiser mais informações sobre o meu objetivo posso enviar um email explicando mais detalhes.
Agradeço muito se voce puder ajudar-me.
Abcs,
Luis Roberto

[6] Comentário enviado por ambn em 23/04/2004 - 16:15h

x

[7] Comentário enviado por ambn em 23/04/2004 - 16:18h

Ola Fabiano,
Gostei muito do seu artigo. Segui a receita de bolo e funcionou quase 100% do que eu precisava.
O problema é que quando o cliente tenta acessar o servidor, ele é redirecionado para o endereço ip do servidor original, ou seja, aquele que tem a aplicação a ser acessada, porém local (da rede do cliente) e não o servidor da empresa.

Você teria alguma dica a respeito disso.

ps: não sei se fui claro.

Grato

[8] Comentário enviado por eric.shimizu em 27/10/2005 - 10:15h

Muito bom.... fiz uns testes aqui e funcionou perfeito...
Artigo muito bem explicado...
Parabéns

[9] Comentário enviado por mcruz em 24/05/2006 - 16:51h

Fabiano,
Muito bom artigo. Eu fiz uns testes e funcionou também, mas estava ocorrendo o seguinte problema:

qdo se digitava no browser /serv1, não funcionava
qdo se digitava no browser /serv1/, funcionava

passou a funcionar qdo modifiquei as linhas

ProxyPass /serv1/ http://192.168.0.22:80/serv1/
ProxyPassReverse /serv1/ http://192.168.0.22:80/serv1/

para

ProxyPass /serv1/ http://192.168.0.22/serv1/
ProxyPassReverse /serv1/ http://192.168.0.22/serv1/

[10] Comentário enviado por kakaroto em 03/09/2008 - 10:22h

ola fiz a configuração conforme mas não funciona, quer dizer até funciona mas ele tenta puxar o ip invalido estou tentando redirecionar para o OWA e ele abre pede login e senha e depois qndo começa a abrir o OWA fica pensando pensando e na barra de estatus mostra q ele esta tentando o ip invalido segue minha conf

ProxyRequests Off
ProxyPass /exchange http://192.168.3.2/exchange
ProxyPassReverse /exchange http://192.168.3.2/exchange
AllowCONNECT 443
<Directory /var/www/exchange>
Order Allow,deny
Allow from all
</Directory>
Redirect Permanent /exchange https://192.168.3.2/exchange

ProxyVia On
CacheRoot "/usr/local/apache/proxy"
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1

Se alguém tiver alguma idéia de onde estou errando, os modulos estao carregados meu apache é a versão 1.3

atenciosamente.

[11] Comentário enviado por raptor_mogi em 03/09/2008 - 20:39h

Saudações caro amigo, realmente fiz esse tipo de serviçõa já faz um bom tempo... mas vamos lá..
bom pelo que percebi parece que está faltando umas barrinhas nas chamadas do proxypass e proxypassreverse.
Se sua configuração está assim como você postou está faltando o que percebi foi o seguinte

ProxyPass /exchange/ http://192.168.3.2/exchange/
ProxyPassReverse /exchange/ http://192.168.3.2/exchange/
Redirect Permanent /exchange/ https://192.168.3.2/exchange

Bom nem vou olhar o resto, se vc seguiu a documentação o que faltou foi isso, agora se não funcionar dê uma revisada
porque o trêm funciona sim..rs

Abraços.

[12] Comentário enviado por kairok em 01/11/2008 - 20:31h

Opa, estou com o mesmo problema que o kakroto.

E não é falta de barras,

Quando vc digita inicialmente o endereço do servidor ele exibe a 1º página sem alterar o endereço, mas ai qnd clica em algum link ou tenta realizar login na página ele mostra o IP do servidor web, isso na rede interna, qnd testei na internet ele retornava erro e exibia o endereço interno na url do browser.

[13] Comentário enviado por shotcult em 01/12/2008 - 15:25h

Muito bom estava pesquisando algo sobre isso, segui seu tutorial e funcionou 100% agradeça a seu amigo que lhe ajudou tambem, foi de muita utilidade pra mim Obrigado por contribuir.

[14] Comentário enviado por shotcult em 02/12/2008 - 09:23h

Galera segue como configurei para não acontecer este problema de acesso so a primeira pagina.

<VirtualHost *:80>
ProxyPreserveHost Off
ProxyPass / http://IP-DO-SERVIDOR/
ProxyPassReverse / http://IP-DO-SERVIDOR/
ServerName nome.nomedodominio.com.br
Redirect Permanent / http://nome.nomedodominio.com.br
</VirtualHost>

ProxyVia On

<IfModule mod_disk_cache.c>
CacheRoot "/usr/local/apache/proxy"
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
</IfModule>

Deste jeito quando digito nome.nomedodominio.com.br ele entra na primeira pegina quando logo ele vai para exemplo: nome.nomedodominio.com.br/index.php e assim por diante não mudando o nome.nomedodominio.com.br pelo ip interno que ocasiona erro no acesso de fora da rede.

[15] Comentário enviado por rodrigo.a.sc em 04/02/2012 - 08:58h

Po, irei colocar Um desafio :

Caso eu queira instalar um certificado digital para o website como eu faria ?

Onde ele deveria ser hospedado, no apache ou nos windows2k ??



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts