{"id":51,"date":"2010-07-26T15:04:14","date_gmt":"2010-07-26T18:04:14","guid":{"rendered":"http:\/\/blog.digavoip.com.br\/2010\/07\/26\/squid-4-parte-configurando-o-cache-de-paginas-e-arquivos\/"},"modified":"2010-07-26T15:04:14","modified_gmt":"2010-07-26T18:04:14","slug":"squid-4-parte-configurando-o-cache-de-paginas-e-arquivos","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=51","title":{"rendered":"Squid &#8211; 4 parte &#8211; Configurando o cache de p\u00e1ginas e arquivos"},"content":{"rendered":"<p>Cr\u00e9ditos:  Carlos E. Morimoto <\/p>\n<p>Uma das configura\u00e7\u00f5es mais importantes com rela\u00e7\u00e3o ao desempenho do proxy e \u00e0 otimiza\u00e7\u00e3o do tr\u00e1fego da rede \u00e9 a configura\u00e7\u00e3o dos caches, onde o Squid guarda as p\u00e1ginas e arquivos j\u00e1 acessados de forma a fornec\u00ea-los rapidamente quando solicitados novamente. O Squid trabalha com dois tipos de cache:<br \/>\n1- Cache r\u00e1pido, feito usando parte da mem\u00f3ria RAM do servidor;<br \/>\n2- Cache um pouco mais lento por\u00e9m maior, feito no HD.<br \/>\nO cache na mem\u00f3ria RAM \u00e9 ideal para armazenar arquivos pequenos, como p\u00e1ginas html e imagens, que ser\u00e3o entregues instantaneamente para os clientes. O cache no HD \u00e9 usado para armazenar arquivos maiores, como downloads, arquivos do Windows Update e pacotes baixados via apt-get.<br \/>\nO cache na mem\u00f3ria RAM \u00e9 sempre relativamente pequeno, j\u00e1 que o volume de mem\u00f3ria RAM no servidor \u00e9 sempre muito menor do que o espa\u00e7o em disco. O cache no HD pode ser mais generoso, afinal a id\u00e9ia \u00e9 que ele guarde todo tipo de arquivos, principalmente os downloads grandes, que demoram para serem baixados.<br \/>\nA configura\u00e7\u00e3o do cache \u00e9 feita adicionando mais algumas linhas no arquivo de configura\u00e7\u00e3o:<br \/>\n1- A configura\u00e7\u00e3o da quantidade de mem\u00f3ria RAM dedicada ao cache \u00e9 feita adicionando a op\u00e7\u00e3o &#8220;cache_mem&#8221;, que cont\u00e9m a quantidade de mem\u00f3ria que ser\u00e1 dedicada ao cache. Para reservar 64 MB, por exemplo, a linha ficaria:<br \/>\ncache_mem 64 MB<br \/>\nComo regra geral, voc\u00ea pode reservar 32 ou 64 MB para o cache em um servidor n\u00e3o dedicado, que atende a apenas alguns micros (como o servidor de uma pequena rede local) e at\u00e9 1\/3 da mem\u00f3ria RAM total em um servidor proxy dedicado, que atende a um volume maior de usu\u00e1rios (veja mais detalhes a seguir). Em um servidor com 1 GB de RAM, por exemplo, voc\u00ea poderia reservar at\u00e9 350 MB para o cache na mem\u00f3ria.<br \/>\n2- Logo depois vai a op\u00e7\u00e3o &#8220;maximum_object_size_in_memory&#8221;, que determina o tamanho m\u00e1ximo dos arquivos que ser\u00e3o guardados no cache feito na mem\u00f3ria RAM (o resto vai para o cache feito no HD). O cache na mem\u00f3ria \u00e9 muito mais r\u00e1pido, mas como a quantidade de RAM \u00e9 muito limitada, \u00e9 melhor deix\u00e1-la dispon\u00edvel para p\u00e1ginas web, figuras e arquivos pequenos em geral. Para que o cache na mem\u00f3ria armazene arquivos de at\u00e9 64 KB, por exemplo, adicione a linha:<br \/>\nmaximum_object_size_in_memory 64 KB<br \/>\n3- Em seguida vem a configura\u00e7\u00e3o do cache em disco, que armazenar\u00e1 o grosso dos arquivos. Por default, o m\u00e1ximo s\u00e3o downloads de at\u00e9 16 MB e o m\u00ednimo \u00e9 zero, o que faz com que mesmo imagens e arquivos pequenos sejam armazenados no cache. Quase sempre \u00e9 mais r\u00e1pido ler a partir do cache do que baixar de novo da web, mesmo que o arquivo seja pequeno.<br \/>\nSe voc\u00ea faz download de arquivos grandes com freq\u00fc\u00eancia e deseja que eles fiquem armazenados no cache, aumente o valor da op\u00e7\u00e3o &#8220;maximum_object_size&#8221;. Isso \u00e9 especialmente \u00fatil para quem precisa baixar muitos arquivos atrav\u00e9s do apt-get ou Windows Update em muitos micros da rede. Se voc\u00ea quiser que o cache armazene arquivos de at\u00e9 512 MB, por exemplo, as linhas ficariam:<br \/>\nmaximum_object_size 512 MB<br \/>\nminimum_object_size 0 KB<br \/>\nVoc\u00ea pode definir ainda a percentagem de uso do cache que far\u00e1 o Squid come\u00e7ar a descartar os arquivos mais antigos. Por padr\u00e3o, sempre que o cache atingir 95% de uso, ser\u00e3o descartados arquivos antigos at\u00e9 que a percentagem volte para um n\u00famero abaixo de 90%:<br \/>\ncache_swap_low 90<br \/>\ncache_swap_high 95<br \/>\n4- Depois vem a op\u00e7\u00e3o &#8220;cache_dir&#8221;, que \u00e9 composta por quatro valores. O primeiro, (\/var\/spool\/squid) indica a pasta onde o Squid armazena os arquivos do cache, enquanto o segundo (2048) indica a quantidade de espa\u00e7o no HD (em MB) que ser\u00e1 usada para o cache. Aumente o valor se voc\u00ea tem muito espa\u00e7o no HD do servidor e quer que o Squid guarde os downloads por muito tempo.<br \/>\nContinuando, os n\u00fameros 16 e 256 indicam a quantidade de subpastas que ser\u00e3o criadas dentro do diret\u00f3rio. Por padr\u00e3o, temos 16 pastas com 256 subpastas cada uma. O n\u00famero &#8220;ideal&#8221; de pastas e subpastas para um melhor desempenho varia de acordo com o sistema de arquivos usado, mas esta configura\u00e7\u00e3o padr\u00e3o \u00e9 adequada para a maioria das situa\u00e7\u00f5es. Combinando as quatro op\u00e7\u00f5es, a linha ficaria:<br \/>\ncache_dir ufs \/var\/spool\/squid 2048 16 256<br \/>\nAssim como na maioria das op\u00e7\u00f5es do Squid, se a linha &#8220;cache_dir&#8221; for omitida, \u00e9 usada a configura\u00e7\u00e3o default para a op\u00e7\u00e3o, que \u00e9 usar o diret\u00f3rio &#8220;\/var\/spool\/squid&#8221; e fazer um cache em disco de 100 MB.<br \/>\n5- Voc\u00ea pode definir ainda o arquivo onde s\u00e3o guardados os logs de acesso do Squid. Por padr\u00e3o, o Squid guarda o log de acesso no arquivo &#8220;\/var\/log\/squid\/access.log&#8221;. Este arquivo \u00e9 usado pelo Sarg para gerar as p\u00e1ginas com as estat\u00edsticas de acesso:<br \/>\ncache_access_log \/var\/log\/squid\/access.log<br \/>\nMais uma configura\u00e7\u00e3o que voc\u00ea pode querer alterar \u00e9 o padr\u00e3o de atualiza\u00e7\u00e3o do cache. Estas tr\u00eas linhas precisam sempre ser usadas em conjunto, ou seja, voc\u00ea pode alter\u00e1-las, mas sempre as tr\u00eas precisam estar presentes no arquivo. Eliminando uma, o Squid ignora as outras duas e usa o default.<br \/>\nOs n\u00fameros indicam o intervalo (em minutos) que o Squid ir\u00e1 aguardar antes de verificar se um item do cache (uma p\u00e1gina, por exemplo) foi atualizado, para cada um dos tr\u00eas protocolos. O primeiro n\u00famero (o 15) indica que o Squid verificar\u00e1 (a cada acesso) se as p\u00e1ginas e arquivos com mais de 15 minutos foram atualizados. Ele faz uma verifica\u00e7\u00e3o r\u00e1pida, checando o tamanho do arquivo e, se o arquivo n\u00e3o mudou, ele continua fornecendo aos clientes o arquivo que est\u00e1 no cache, economizando banda da conex\u00e3o<br \/>\nO terceiro n\u00famero (o 2280, equivalente a dois dias) indica o tempo m\u00e1ximo, depois do qual o objeto \u00e9 sempre verificado. Al\u00e9m do http e ftp, o Squid suporta o protocolo gopher, que era muito usado nos prim\u00f3rdios da internet para localizar documentos de texto, mas perdeu a relev\u00e2ncia hoje em dia:<br \/>\nrefresh_pattern ^ftp: 15 20% 2280<br \/>\nrefresh_pattern ^gopher: 15 0% 2280<br \/>\nrefresh_pattern . 15 20% 2280<br \/>\nDepois de adicionar todas estas configura\u00e7\u00f5es, o nosso arquivo de configura\u00e7\u00e3o j\u00e1 ficar\u00e1 bem maior:<br \/>\nhttp_port 3128<br \/>\nvisible_hostname gdh<br \/>\ncache_mem 64 MB<br \/>\nmaximum_object_size_in_memory 64 KB<br \/>\nmaximum_object_size 512 MB<br \/>\nminimum_object_size 0 KB<br \/>\ncache_swap_low 90<br \/>\ncache_swap_high 95<br \/>\ncache_dir ufs \/var\/spool\/squid 2048 16 256<br \/>\ncache_access_log \/var\/log\/squid\/access.log<br \/>\nrefresh_pattern ^ftp: 15 20% 2280<br \/>\nrefresh_pattern ^gopher: 15 0% 2280<br \/>\nrefresh_pattern . 15 20% 2280<br \/>\nacl all src 0.0.0.0\/0.0.0.0<br \/>\nacl manager proto cache_object<br \/>\nacl localhost src 127.0.0.1\/255.255.255.255<br \/>\nacl SSL_ports port 443 563<br \/>\nacl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535<br \/>\nacl purge method PURGE<br \/>\nacl CONNECT method CONNECT<br \/>\nhttp_access allow manager localhost<br \/>\nhttp_access deny manager<br \/>\nhttp_access allow purge localhost<br \/>\nhttp_access deny purge<br \/>\nhttp_access deny !Safe_ports<br \/>\nhttp_access deny CONNECT !SSL_ports<br \/>\nacl redelocal src 192.168.1.0\/24<br \/>\nhttp_access allow localhost<br \/>\nhttp_access allow redelocal<br \/>\nhttp_access deny all<br \/>\nAqui j\u00e1 temos uma configura\u00e7\u00e3o mais completa, incluindo um conjunto de regras de seguran\u00e7a (para que o proxy seja usado apenas a partir da rede local) e a configura\u00e7\u00e3o do cache. Esta \u00e9 uma configura\u00e7\u00e3o adequada para uso em uma rede dom\u00e9stica ou em um pequeno escrit\u00f3rio.<br \/>\nA acl &#8220;Safe_ports&#8221;, alimentada com um conjunto de portas (80, 21 e outras) \u00e9 usada para restringir as portas de sa\u00edda do servidor proxy, evitando, por exemplo, que ele seja usado para enviar e-mails (porta 25). Isso evita um conjunto de abusos comuns e \u00e9 uma configura\u00e7\u00e3o importante em qualquer servidor que precise ser configurado de forma minimamente segura. Naturalmente, voc\u00ea pode adicionar outras portas \u00e0 lista, conforme necess\u00e1rio.<br \/>\nEm uma rede maior, voc\u00ea provavelmente iria querer adicionar algumas limita\u00e7\u00f5es de acesso, limitando o acesso a algumas p\u00e1ginas, criando um sistema de autentica\u00e7\u00e3o ou limitando o uso com base no hor\u00e1rio, entre outras possibilidades. Vamos a elas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cr\u00e9ditos: Carlos E. Morimoto Uma das configura\u00e7\u00f5es mais importantes com rela\u00e7\u00e3o ao desempenho do proxy e \u00e0 otimiza\u00e7\u00e3o do tr\u00e1fego da rede \u00e9 a configura\u00e7\u00e3o dos caches, onde o Squid guarda as p\u00e1ginas e arquivos j\u00e1 acessados de forma a fornec\u00ea-los rapidamente quando solicitados novamente&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/51"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=51"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/51\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}