Ao navegar por diferentes redes da internet, os servidores proxy e os túneis HTTP facilitam o acesso ao conteúdo na Rede Mundial de Computadores (World Wide Web). O proxy pode estar no computador local do usuário, ou em algum lugar entre o computador deste e o servidor de destino na Internet. Esta página é um esquema de conceitos básicos sobre proxies e algumas opções de configuração.
Há dois tipos de proxies: proxy de envio (do inglês "forward proxies", ou túnel, ou ainda, gateway) e proxy reverso ("reverse proxies" usados para proteger o acesso ao servidor de largura de banda, autenticação, decriptação ou caching).
Proxy de Envio
Proxy de envio, também chamado gateway ou "proxy" fornece serviços a um cliente ou grupo de clientes. É possível que haja centenas de milhares de proxies de envio livres na Internet. Estes armazenam e enviam serviços de rede (como o DNS, ou páginas da web) para economia e controle da largura de banda usada pelo grupo.
Proxies de envio também podem ser anónimos e esconder o endereço IP dos usuários que navegam pela Web ou usam outros serviços de Internet. O TOR (The Onion Router), para ser anónimo, roteia tráfego de rede por vários proxies .
Proxy reverso
Como o nome já indica, faz o inverso do proxy de envio: O proxy de envio benefecia a clientes (ou a hosts que o requisitam), já o proxy reverso benefecia a servidores. Proxies de envio podem esconder a identidade de clientes, ao passo que proxies reversos podem esconder a dos servidores. Proxies reversos tem várias funções, dentre os quais:
- Load balancing: distribuir a carga por vários servidores web ,
- Cache de conteúdo estático: liberta os servidores web por esconder conteúdo estático, como fotos
- Compressão: acelera o tempo de carregamento por comprimir e otimizar conteúdos
Envio de informação de clientes por meio de proxies
Proxies fazem parecer que os pedidos vêm do endereço IP do proxy. Isto pode ser útil se o proxy provê anonimato ao cliente. Porém, noutros casos, perde-se a informação do pedido original. O endereço IP original é usado em verificação de erros, em estatísticas ou ao gerar conteúdo ajustado à localização. Uma forma comum de divulgar esta informação é usando estes cabeçalhos HTTP:
Cabeçalho padronizado:
Forwarded
- Contêm informação do lado do cliente de proxy, que foi alterada ou perdida se há um proxy no caminho do pedido
Ou as versões de facto padrão:
X-Forwarded-For
- Identifica o endereço IP de origem do cliente que se conectou ao servidor web por meio de um proxy HTTP ou um load balancer
X-Forwarded-Host
- Identifica o Host originalmente requisitado pelo cliente, quando este se conectou ao seu proxy ou load balancer
X-Forwarded-Proto
- Identifica o protocolo (HTTP ou HTTPS) que o cliente usou ao se conectar ao seu proxy ou load balancer
Pode-se usar o cabeçalho Via
para informar, não sobre o cliente conectado, mas sobre o próprio proxy.
Via
- Adicionado por proxies, tanto de envio como reversos, e aparece no cabeçalho do pedido e da resposta.
Túnel HTTP
O Tunelamento encapsula os dados, permitindo assim que dados de rede privada e protocolos traféguem em redes públicas. Tunelamento HTTP é usar o protocolo de alto nível (HTTP) para transportar outro de nível abaixo (TCP).
O Protocolo HTTP protocol especifica o método CONNECT
. Este começa comunicações de mão-dupla com o recurso requisitado e pode abrir um túnel. É assim que o cliente de proxy HTTP pode acessar websites a usar SSL (i.e. HTTPS, porta 443). Mas, é digno de nota, que nem todos os servidores proxy tem suporte ao método CONNECT
ou limitam-no à porta 443.
Veja também o artigo HTTP tunnel, na Wikipedia.
Proxy Auto-Configuration (PAC)
O ficheiro Proxy Auto-Configuration (PAC) é uma função de JavaScript que determina se pedidos de motores de busca (HTTP, HTTPS, e FTP) vão direto ao destino ou são reencaminhadas a um proxy-servidor web. A função JavaScript contida no ficheiro PAC define:
O ficheiro auto-config será salvo com extensão .pac
:
proxy.pac
E o MIME type é configurado para:
application/x-ns-proxy-autoconfig
O Ficheiro consiste numa função de nome FindProxyForURL
. Se o servidor DNS interno está configurado para fonecer nomes à hosts internos, e o objectivo é usar um proxy só para hosts sem nome, então este exemplo deve funcionar:
function FindProxyForURL(url, host) {
if (isResolvable(host))
return "DIRECT";
else
return "PROXY proxy.mydomain.com:8080";
}
Veja Proxy Auto-Configuration (PAC) para mais exemplos.