# Squid

O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições frequentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso.
O Squid foi escrito originalmente para rodar em sistema operacional tipo Unix, mas ele também funciona em sistemas Windows desde sua versão 2.6.STABLE4.

## Servidor Proxy

No cache são armazenados os objetos da Internet (ex. dados de páginas web) disponíveis via protocolo HTTP, FTP e Gopher num sistema mais próximo ao do cliente. Os navegadores podem então usar o Squid local como um servidor Proxy HTTP, reduzindo o tempo de acesso aos objetos e reduzindo a utilização da conexão. Isto é muito usado por provedores no mundo todo para melhorar a velocidade de navegação para seus clientes e também em LAN que compartilham a mesma conexão à Internet. Ele pode fornecer anonimato e segurança dado ser um intermediário no acesso aos objetos. No entanto a sua utilização pode gerar preocupações a respeito da privacidade pois o Squid é capaz de armazenar registros sobre os acessos, incluindo URLs acedidas, a data e hora exatas, e quem acedeu. Isto é usado frequentemente nas empresas para controlarem o acesso à Internet dos seus funcionários..
A aplicação cliente (por exemplo, o navegador) deverá especificar explicitamente o servidor proxy que quer utilizar (típico para os clientes de provedores), ou poderá utilizar um proxy transparente, em que todos os pedidos HTTP para fora, são interceptados pelo Squid e todas as respostas são armazenadas em cache, dessa forma não sendo necessário configurar o navegador. Esta é uma típica configuração em corporações (todos os clientes na mesma rede local) e introduz as preocupações com privacidade mencionadas acima. O arquivo que permite configurar o Squid, em ambiente tipo Unix, tais como o número da porta HTTP (3128 padrão), pedidos de entrada e saída, informações de timeout e dados de acesso ao firewall é o /etc/squid/squid.conf
Squid tem algumas funcionalidades que permitem tornar as conexões anônimas, tais como desabilitar ou alterar campos específicos do cabeçalho dos pedidos HTTP do cliente. Se isto é feito e como, é controlado pela pessoa que administra a máquina que corre o Squid. As pessoas que requisitam páginas numa rede que usa Squid de forma transparente podem não saber que esta informação será registrada. Dentro de empresas do Reino Unido pelo menos, os usuários devem ser informados se computadores ou conexão com a internet está sendo monitorada.

## Proxy Reverso

O uso clássico do Squid é para fornecer caching do conteúdo de um número ilimitado de servidores web para um número limitado de clientes. Uma outra utilização é chamada de proxy reverso. Nesta modalidade, o cache é usado por um número limitado de servidores web - ou apenas um - para ser acessado por um número ilimitado de clientes. Levando em consideração um exemplo, se o lerdo.exemplo.com é um servidor web real e www.exemplo.com é o Squid fazendo o papel de proxy reverso, a primeira vez que qualquer página do www.exemplo.com é acessada, o Squid pegaria a página de lerdo.exemplo.com, mas depois os acessos seriam pegos direto da cópia armazenada no Squid. O resultado final, sem qualquer percepção ou ação por parte dos clientes, é menor tráfego para o servidor real e isso significa menor uso da CPU e memória.
É possível um único Squid servir tanto o modo clássico quanto o proxy reverso simultaneamente.