Pages

sexta-feira, 24 de agosto de 2012

Proxy reverso com Apache2


Hospedar um site não é mais coisa de provedor de internet, muita gente tem banda larga em casa, se não tem ip fixo usa um dns dinâmico. Empresas tem links com ips disponíveis e preferem ter o controle do seu site, ou até em vez de ter apenas a hospedagem eles preferem ter o servidor dedicado para o serviço.

A questão em ter o controle do servidor é também ter a responsabilidade pela segurança dos sites, além do mod_security (que abordaremos mais oportunamente) uma etapa de melhoria na segurança é colocar mais uma camada entre quem acessa e o servidor Web.

Essa camada serviria para não deixar os clientes acessarem diretamente o servidor, não ter acesso aos diretórios onde estão as páginas e caso o servidor fosse atacado, apenas o proxy seria afetado mantendo o servidor principal íntegro, sem acesso externo, mas íntegro.

Nosso cenário é o seguinte:

Um servidor Web(podem ser mais) com todas as paginas da empresa e com os acessos de banco de dados configurados, com seus respectivos virtualhosts que atendem pelos nomes: www.cooperati.local (site principal), cursos.cooperati.local (sites com os cursos), videocasts.cooperati.local (sites dos videos).

Esses sites são apenas internos e precisam ser acessados pela internet nos seguintes endereços: www.cooperati.com.br, cursos.cooperati.com.br, videocasts.cooperati.com.br.



No servidor (ou servidores) web não precisa ser alterado nada em suas configurações, apenas a programação não deve fazer apenas referência a endereços de IP internos, pois isso pode causar erro no cliente ao tentar buscar IP da rede interna do servidor.

No servidor Proxy devemos fazer o seguinte:

Primeiro instale o Apache2:
root # apt-get install apache2

Habilite os módulos necessários:
root # a2enmod proxy proxy_balancer proxy_connect proxy_html proxy_http

OBS: Pode ser que você não use todos os tipos de recursos fornecidos habilite os módulos mesmo assim, logo você vai querer mais recursos e eles já estão lá .

Basta agora criar os arquivos que fazem o redirecionamento dos domínios:

root # vi /etc/apache2/sites-available/www-cooperati
ProxyVia On
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ProxyPassReverse / http://www.cooperati.local/
ProxyPassReverse /includes http://www.cooperati.local/includes
Redirect Permanent / http://www.cooperati.local/
 <IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/xml application/xhtml+xml "application/x-javascript \n\n" "text/html \n\n" DeflateCompressionLevel 9
</IfModule>
</VirtualHost>


Onde:
ProxyVia On – Habilita o proxy nesse domínio
ServerName – Endereço de vem na URL e que vai ser usado para proxy do endereço interno.
ProxyPreserveHost – Em ON ele vai preservar o endereço do host que está fazendo o proxy e não daquele da diretiva ProxyPass
ProxyRequests – Em Off evita que usem seu servidor para relay de spammers
ProxyPass – O endereço do site após URL (/ raiz do site), e depois em qual servidor e porta está o site
ProxyPassReverse (a mesma coisa de proxy pass)

Módulo deflate é usado para comprimir as páginas, ele negocia com os clientes uma compressão e envia os dados compactados gerando muito menos tráfego na rede

Depois é só criar os arquivos, seguindo o mesmo padrão para os outros domínios:

root # vi /etc/apache2/sites-available/cursos-cooperati
 
ProxyVia On
<VirtualHost *:80>
ServerName cursos.cooperati.com.br
ProxyPreserveHost On
ProxyRequests Off
ProxyPassReverse / http://cursos.cooperati.local/
ProxyPassReverse /includes http://cursos.cooperati.local/includes
Redirect Permanent / http://cursos.cooperati.local/
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/xml application/xhtml+xml "application/x-javascript \n\n" "text/html \n\n"
DeflateCompressionLevel 9
</IfModule>
</VirtualHost>


Agora do site dos famosos videocasts :

root # vi /etc/apache2/sites-available/videocasts-cooperati
ProxyVia On
<VirtualHost *:80>
ServerName videocasts.cooperati.com.br
ProxyPreserveHost On
ProxyRequests Off
ProxyPassReverse /includes http://videocasts.cooperati.local/includes
Redirect Permanent / http://videocasts.cooperati.local/
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/xml application/xhtml+xml "application/x-javascript \n\n" "text/html \n\n"
DeflateCompressionLevel 9
</IfModule>
</VirtualHost>

Agora habilite os sites:
root # a2ensite www-cooperati cursos-cooperati videocasts-cooperati

Feito isso vamos reiniciar o Apache ( poderíamos apenas fazer reload, mas como habilitamos os módulos devemos fazer o reinício do serviço):

root # service apache2 restart

Pronto, agora basta colocar no seu browser o endereço de internet do seu site que o proxy reverso do apache fará o redirecionamento para o servidor interno.

Nenhum comentário:

Postar um comentário