# Guia do Linux/Avançado/Apache/Configurando o Apache como servidor proxy
## Configurando o Apache como servidor proxy

O Apache pode ser configurado para funcionar como servidor proxy transparente para sua rede interna, possibilitando inclusive o uso de cache de disco. É possível se fazer conexões HTTP (incluindo SSL) e FTP. Através desta característica também é possível usar uma das características mais interessante desse servidor web: o redirecionamento de conexões para uma determinada URL para uma outra máquina, que pode ser um outro host remoto ou uma máquina da rede interna (não acessível diretamente via Internet). O primeiro passo é ativar o módulo de proxy no arquivo httpd.conf, basta descomentar a linha:
O seguinte bloco pode ser colocado no final do arquivo httpd.conf para configurar um servidor proxy para realizar conexões diretas (sem o uso de cache) e permitir o uso de servidores proxy em sua rede:
Segue a explicação de cada uma das diretivas acima:

### ProxyRequests [on/off]

    Ativa (on) ou Desativa (off) o serviço de proxy do servidor Apache. Note que o módulo libproxy.so deve estar carregado para que o bloco <IfModule libproxy.c> seja processado. A desativação desta diretiva não afeta a diretiva ProxyPass.

### ProxyRemote [origem] [URL]

    Esta opção é útil para fazer o Apache redirecionar suas requisições para outro servidor proxy (como o squid ou o gateway da rede, caso o Apache estiver sendo executado em uma máquina interna). A origem pode ser uma URL completa (como http://www.debian.org), uma URL parcial (como ftp, http) ou "*" para que o redirecionamento seja sempre usado.

### ProxyBlock [padrão]

    Permite bloquear o acesso a endereços que contenham o padrão especificado. Podem ser especificadas palavras, máquinas, domínios, URLs separados por espaços. O Apache fará a resolução DNS no caso de endereços IP e fará o cache para requisições futuras.

### NoProxy [endereços]

    Permite especificar endereços Internos que não serão redirecionados para o servidor proxy especificado por ProxyRemote. Podem ser usados nomes de máquinas, endereços IP, subredes ou domínios separados por espaços.

### ProxyDomain [endereço]

    Especifica o endereço que será adicionado a URL caso seja recebida uma requisição que contenha somente um nome de máquina. É útil em redes Internas.
Note que quando o suporte a proxy não está ativado no Apache, qualquer endereço de URL externa levará a página definida pela diretiva DocumentRoot. Isto deixará de funcionar após configurar o serviço de proxy. O uso do cache é interessante para acelerar as requisições http da rede interna para a rede externa, desta forma, se uma requisição foi feita anteriormente, será descarregado o arquivo do disco rígido e assim evitar uma nova conexão externa (isto libera a rede para outras coisas). Para configurar um cache no serviço proxy, adicione as seguintes linhas no final do bloco anterior de proxy:
Cada diretiva acima possui o seguinte significado:

### CacheRoot

    Diretório base onde serão criados os outros diretórios de cache. O cache só será ativado se esta diretiva for definida.

### CacheForceCompletion [num]

    Se uma transferência for cancelada e passar de num%, o Apache continuará a transferência e armazenará o arquivo no cache. O valor padrão é 90.

### CacheSize [num]

    Define o tamanho máximo do diretório de cache do Apache, em KB. Não especifique um valor que tome mais de 70% do espaço em disco. O valor padrão é 5.

### CacheGcInterval [num]

    Define o tempo que o cache será checado em busca de arquivos maiores que o total do cache. Arquivos que ultrapassem o tamanho do cache são automaticamente eliminados.

### CacheDefaultExpire [num]

    Define o tempo que os documentos ficarão no cache, se foram transferidos através de protocolos que não suportam horas de expiração. O valor padrão é 1 hora.

### CacheMaxExpire [num]

    Define o tempo que os documentos permanecerão armazenados no cache (em horas). Esta opção ignora a hora de expiração do documento (caso fornecida). O valor padrão é 24 horas.

### NoCache [endereços]

    Permite especificar lista de palavras, máquinas, domínios, IP's que não serão armazenados no cache do Apache. Caso seja usado NoCache * o cache será desativado completamente. Note que o cache também pode ser desativado comentando a diretiva CacheRoot.
Se você desejar um servidor cache mais flexível, rápido, dinâmico, configurável (com possibilidade de uso de restrições baseadas em URL, tempo de acesso, autenticação), instale o squid e configure o apache para fazer forward de conexões para ele ([#s-s-apache-proxy-redir Redirecionamento de conexões no Apache, Seção 12.11.2]).

### Controlando o acesso ao servidor proxy

Incluir o bloco abaixo no arquivo access.conf para definir o acesso dos serviços de proxy nas redes desejadas (se a sua configuração for aberta como padrão isto pode ser opcional):
Para explicações sobre o processo de bloqueio acima, veja [#s-s-apache-acesso-restr-autor Autorização, Seção 12.7.1].

### Redirecionamento de conexões no Apache

Este recurso do Apache é interessante para criar clusters de servidores em sua rede interna. O que ele faz é pegar uma requisição a um determinado endereço e redireciona-lo a outra máquina e as respostas são repassadas ao servidor web (para o cliente a mesma máquina esta atendendo a requisição, para você o processamento das requisições esta sendo distribuído internamente na rede). As seguintes diretivas são usadas para realizar o redirecionamento de conexões: ProxyPass e ProxyPassReverse

#### ProxyPass [diretório_da_url [outro_servidor:/diretório]

    A ProxyPass permite que a URL seja redirecionada para o servidor local e diretório especificado. Por exemplo, assumindo que o endereço principal de nosso servidor é http://www.guiafoca.org e desejamos que a URL http://www.guiafoca.org/download seja atendida por uma máquina localizada na nossa rede privada com o endereço http://192.168.1.54. Basta incluir a linha:
Qualquer requisição externa a http://www.guiafoca.org/download/iniciante será atendida por http://192.168.1.54/iniciante.

#### ProxyPassRemote [diretório_da_url [outro_servidor:/diretório]

    Esta diretiva permite modificar o cabeçalho Location nas mensagens de respostas de redirecionamento enviadas pelo Apache. Isto permite que o endereço retornado seja o do servidor (que faz a interface externa com o cliente) e não da máquina do redirecionamento.
Se a máquina 192.168.1.54 redirecionar a URL para http://192.168.1.54/download/iniciante, a resposta será modificada para http://www.guiafoca.org/download/iniciante antes de ser retornada ao cliente. \