Escolar Documentos
Profissional Documentos
Cultura Documentos
codigo=11846
Introdução
Nesse artigo vou explicar passo-a-passo como instalar e configurar um proxy reverso usando Apache com
cache, compactação e estatísticas.
Como podemos entender na imagem acima, quando um usuário quer acessar um serviço do Web Server
por exemplo, ele passa pelo proxy reverso, que faz a requisição para o Web Server e depois repassa a
informação para o usuário. Assim sendo, sempre que existir um proxy reverso antes do Web Server ou
qualquer outro tipo de servidor de serviço, o usuário sempre irá falar e somente falará com o proxy
reverso, que então irá fazer toda as requisições ao servidor de serviço.
Vou usar o CentOS x64 como base. Vamos instalar o Apache 2.2.3:
1 de 8 05/12/2010 21:13
Proxy reverso com Apache + cache + compactação + estatísticas [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11846
A ideia é fazer com que todos os serviços da empresa passem a funcionar somente pelo site principal, o
www.nossoproxy.com.br.
# vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
<IfModule mod_proxy.c>
####COMPACTAÇÃO####
<IfModule mod_headers.c>
ProxyPreserveHost Off
<Proxy "http://sos.nossoproxy.com.br">
RequestHeader set Host sos.nossoproxy.com.br
</Proxy>
<IfModule mod_headers.c>
ProxyPreserveHost Off
2 de 8 05/12/2010 21:13
Proxy reverso com Apache + cache + compactação + estatísticas [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11846
<Proxy "http://online.nossoproxy.com.br">
RequestHeader set Host sos.nossoproxy.com.br
</Proxy>
<IfModule mod_headers.c>
ProxyPreserveHost Off
<Proxy "http://www.nossoproxy.com.br">
RequestHeader set Host www.nossoproxy.com.br
</Proxy>
ProxyPass / http://www.nossoproxy.com.br/
ProxyPassReverse / http:// www.nossoproxy.com.br
</IfModule>
### CACHE###
</IfModule>
</VirtualHost>
Salvar e feche.
Reinicie o Apache:
<IfModule mod_headers.c>
</IfModule>
Dentro dele você pode fazer configuração de proxy que modifica o header da requisição. Necessário
quando o servidor que você queira se conectar solicita o Host Header.
RequestHeader set Host Modifica o Host Header, assim você pode se conectar no Web Server através de
nome.
ProxyPass pega o que o usuário digita após a primeira / (ela também está incluída) e direciona para um
endereço. Sendo que isso é em direção ao servidor proxy. Exemplo: www.nossoproxy.com.br/sos
ProxyPassReverse altera ou mantém o que vem após a primeira / (ela também está incluída) e direciona
para um endereço. Sendo que isso é em direção ao usuário (reverso).
3 de 8 05/12/2010 21:13
Proxy reverso com Apache + cache + compactação + estatísticas [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11846
Configuração de cache
<IfModule mod_disk_cache.c>
CacheEnable disk /
CacheRoot /var/spool/httpd
CacheDirLevels 5
CacheDirLength 4
CacheMinFileSize 1024
CacheMaxFileSize 10485760
CacheDefaultExpire 144000
</IfModule>
Essas são as minhas configurações, cada um deve fazer a sua. Vou explicar cada item.
CacheEnable disk /, aqui diz que irá fazer cache de tudo que é possível fazer.
CacheRoot, diretório onde os arquivos do cache serão salvos, não esquecer de dar permissão ao usuário
apache:
Exemplo: /var/spool/httpd/1111/2222/3333/4444/5555
CacheDirLength, quantidade de caracteres dos nomes de diretórios. Teoricamente quanto menor, mais
rápido vai ser a busca do cache no disco.
Próxima etapa.
Configuração de compactação
<IfModule mod_deflate.c>
Vamos as explicações:
AddOutputFilterByType DELATE, diz que vai compactar os tipos de arquivos que estiverem saindo do
4 de 8 05/12/2010 21:13
Proxy reverso com Apache + cache + compactação + estatísticas [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11846
proxy.
Os arquivos que configurei são a grande maioria de tipos de arquivos que compreendem hoje a internet.
Vale informar que não configurei arquivos de imagem, já que na maioria das vezes elas já estão
compactadas e seu ganho seria pequeno e o processamento iria aumentar bastante.
DeflateCompressionLevel 9, nível de compactação dos arquivos, varia de 1 até 9, quanto maior, maior a
compactação e processamento.
Pelo que tem no mercado hoje, esse foi o melhor software livre que encontrei que gera estatísticas através
do log do Apache.
http://awstats.sourceforge.net/#DOWNLOAD
Baixando:
# wget http://awstats.sourceforge.net/files/awstats-7.0.tar.gz
Descompactando:
# cd awstats-7.0/tools
Instalando:
# perl awstats_configure.pl
Dentro do seu httpd.conf foi inserido novas linhas, vamos dar um pouco mais de segurança a página de
estatísticas.
Adicione as linhas que estão em negrito. Meu local de instalação das páginas é /var/www/html:
<VirtualHost *:8080>
#
# Directives to allow use of AWStats as a CGI
#
5 de 8 05/12/2010 21:13
Proxy reverso com Apache + cache + compactação + estatísticas [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11846
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/var/www/html/awstats-7.0/wwwroot">
Options FollowSymLinks Indexes
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Feche e salve.
# vi awstats/awstats.www.nossoproxy.com.br.conf
Localize a linha:
LogFormat=
Altere para:
# vi /etc/httpd/conf/httpd.conf
Para que isso? Para que o awstats consiga pegar os informações necessárias do log do Apache.
Listen seuip:8080
Salve e feche.
Vamos agora configurar com que frequência o awstats vai ler o log do Apache para buscar informações
para gerar as estatísticas.
# crontab -e
6 de 8 05/12/2010 21:13
Proxy reverso com Apache + cache + compactação + estatísticas [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11846
Salve e feche.
Com essa configuração o script de atualização irá executar a cada 2 minutos todos os dias.
www.nossoproxy.com.br:8080/awstats/awstats.pl?config=www.nossoproxy.com.br
Configure o hosts:
# vi /etc/hosts
Inserir as linhas:
seuip sos.nossoproxy.com.br
seuip online.nossoproxy.com.br
Salve e feche.
Finalizando...
# vi /etc/sysconfig/network
Altere para:
HOSTNAME=www.nossoproxy.com.br
Considerações finais
Testei o poderoso Varnish, realmente ele parece ser muito bom (globo.com usa), mas infelizmente cheguei
em um ponto que precisava de ajuda e não tive, a documentação é muito pobre ainda e tive certa demora
com o uso de tickets no site deles.
Pensei também no ngnix, mas achei que teria o mesmo problema do Varnish. Então vamos de Squid, ele
deixou a desejar em certas configurações que não consegui fazer. Um ponto muito positivo do Apache é a
vasta documentação.
Fiz testes durante 2 semanas utilizando cache de disco, cache de memória e sem cache, posso afirmar que
o cache de disco obteve o melhor desempenho em conjunto com a compactação nível 9.
7 de 8 05/12/2010 21:13
Proxy reverso com Apache + cache + compactação + estatísticas [Artigo] http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11846
http://www.vivaolinux.com.br/artigo/Proxy-reverso-com-Apache-+-cache-+-compactacao-+-estatisticas
8 de 8 05/12/2010 21:13