FONTE: http://linuxnatyworking.wordpress.com/2011/10/01/proxy-reverso-com-apache/
Muita gente enxerga o proxy apenas como um servidor que intermedia as requisições entre a rede local e a internet, fazendo cache de páginas e controle de acesso. Sem dúvidas, o serviço mais conhecido e utilizado para este fim é o Squid (http://www.squid-cache.org/). Mas o Proxy tem outra característica/função, pouco conhecida mas muito útil: o Proxy Reverso.Proxy Web x Proxy Reverso
O Proxy Web corresponde à ‘função’ conhecida pela maioria das pessoas. Nesta configuração, o proxy tem a função de compartilhar a internet com a rede local, receber as requisições feitas pelos clientes e buscar o que foi solicitado nos servidores Web. Além disso, o Proxy oferece mais algumas vantagens a um administrador de redes, como:
- Controle de acesso: O acesso à internet pode ser controlado com base no horário, endereço IP do cliente, login e sites com conteúdo indesejado;
- Cache de páginas: o Proxy guarda informações das páginas acessadas. Quando alguém acessa um endereço, o servidor procura primeiro nos seus arquivos armazenados, caso já possua a página, não precisa buscá-la novamente. O que acaba tornando a navegação mais rápida e evitando acessos desnecessários à Web;
- Relatórios de acesso: Todos os logs de acesso são armazenados, o que permite que possam ser criados relatórios dos acessos realizados pelos clientes através do servidor;
O Proxy Reverso é um servidor instalado entre a internet e os servidores Web internos de uma empresa. As requisições externas, são direcionadas a um servidor interno por meio de um roteamento feito pelo Proxy Reverso. Dessa forma, ele é a única interface para as requisições externas.
Imagine a situação: Sua empresa possui o domínio xyz.com.br registrado, seu site (www.xyz.com.br) está em um servidor dentro da sua rede e, além do portal há outras aplicações que precisam ser disponibilizadas externamente. Para cada aplicação é necessário possuir um domínio ou subdomínio registrados? Não! Neste caso, pode ser usado o Proxy Reverso. Como?! É o que vou explicar daqui a pouco.
Além do roteamento de requisições externas, são vantagens do Proxy Reverso:
- Segurança: Como o Proxy é a única interface externa da rede, ele “esconde” os demais servidores;
- Criptografia: a criptografia SSL pode ser delegada o Proxy ao invés dos servidores internos;
- Balanceamento de carga: o servidor pode distribuir a carga para vários servidores da rede;
- Cache: assim como o Web Proxy, o Proxy Reverso pode manter em cache o conteúdo estático das requisições realizadas, ajudando assim a diminuir a carga dos servidores Web.
- Compressão: o Proxy Reverso pode tornar o acesso mais rápido através da compressão do conteúdo acessado;
Além do Proxy Web, o Squid também pode se comportar como Proxy Reverso, mas neste artigo, teremos como base o Apache 2.2 para esta função. As configurações apresentadas funcionam tanto no Windows quanto no Linux. Então, vamos colocar as mãos na massa…
No arquivo de configuração do Apache, vamos fazer as seguintes alterações:
Nota: no linux geralmente o httpd.conf está nos diretórios /etc/http/conf ou /usr/local/http/conf, dependendo da distro utilizada.
- Habilitar os módulos do Proxy. Para isso, descomente as linhas:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so
- Incluir vhosts na configuração. Para isso acrescente ou descomente a linha abaixo:
Nota2: Os vhosts não são necessários na configuração do Proxy Reverso. São utilizados quando há mais de um nome para o mesmo servidor, e cada nome será direcionado para uma aplicação diferente.
Include conf/extra/httpd-vhosts.conf
- Incluir o arquivo de mod-proxy. Para isso acrescente ou descomente a linha abaixo:
Include conf/extra/mod_proxy.confNota: Caso os dois arquivos citados acima não existam no servidor, os mesmos devem ser criados.
Para fazer o roteamento das requisições direcionadas aos servidores internos é utilizado o ProxyPass, a sintaxe é simples, basicamente temos a estrutura:
ProxyPass /destino http://servidor.da.app:porta/destino ProxyPassReverse /destino http://servidor.da.app:porta/destinoPara trabalhar com vhosts, crie ou edite o arquivo conf/extra/httpd-vhosts.conf e crie os vhosts com as seguintes configurações:
Nota: Sempre o contexto informado deve ser igual ao contexto da aplicação.
Nota2: Todos os diretórios referenciados pela aplicação no servidor de hospedagem devem ser configurados no Proxy, a não ser que eles sejam subdiretórios de algum que já tenha sido configurado.
<VirtualHost *:80> ServerName app1.xyz.com.br ErrorLog "logs/app1.xyz.com.br-error.log" CustomLog "logs/app1.xyz..com.br-access.log" common ProxyPass / http://app1.xyz.com.br:8040/ ProxyPassReverse / http://app1.xyz.com.br:8040/ ProxyPass /contexto1 http://app1.xyz.com.br:8040/contexto1 ProxyPassReverse /contexto1 http://app1.xyz.com.br:8040/contexto1 </VirtualHost>Para trabalhar somente com o roteamento das requisições, apontando as requisições recebidas para outros servidores da rede, crie ou edite o arquivo conf/extra/mod_proxy.conf e insira as linhas de acordo com as aplicações e servidores da sua rede:
ProxyPass /aplicacao http://servidor.xyz.com.br:8040/aplicacao ProxyPassReverse /aplicacao http://servidor.xyz.com.br:8040/aplicacao ProxyPass /teste http://servidor2.xyz.com.br/teste ProxyPassReverse /teste http://servidor2.xyz.com.br/teste ProxyPass /teste_qa http://servidor2.xyz.com.br:8080/teste_qa ProxyPassReverse /teste_qa http://servidor2.xyz.com.br:8080/teste_qaSempre que uma alteração no apache for efetuada o mesmo deve ser reiniciado.
Nenhum comentário:
Postar um comentário