IBM HTTP Server ajuda: Diretrizes Proxy

Diretrizes de Proxy

 

ProxyRequests

Isto permite ou evita que o Apache funcione como um servidor de proxy. Definir ProxyRequests para 'off' não desativa o uso da diretiva ProxyPass.

ProxyRemote

Isto define os proxies remotos para este proxy. <match> se refere ao nome da URL de esquema que o servidor remoto suporta, ou uma URL parcial para a qual o servidor remoto deve ser utilizado, ou '*' para indicar que o servidor deve ser contatado para todos os pedidos. <remote-server> é uma URL parcial para o servidor remoto. Sintaxe:
  <remote-server> = <protocol>://<hostname>[:port]
<protocol> é o protocolo que deve ser utilizado para comunicar como servidor remoto; apenas "http" é suportado neste módulo.

Exemplo:

  ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
  ProxyRemote * http://cleversite.com
  ProxyRemote ftp http://ftpproxy.mydomain.com:8080
No último exemplo, o proxy irá encaminhar pedidos FTP, encapsulados como outro pedido de proxy HTTP, para outro proxy que possa identificá-los.

ProxyPass

Esta diretiva permite que servidores remotos sejam mapeados no espaço do servidor local; o servidor local não age como um proxy no sentido convencional, mas apenas parece ser um espelho do servidor remoto. <caminho> é o nome de um caminho virtual local; <url> é uma URL parcial para o servidor remoto.

Suponha que o servidor local possua um endereço http://wibble.org/; assim

   ProxyPass         /mirror/foo/ http://foo.com/
fará com que um pedido local para <http://wibble.org/mirror/foo/bar> seja convertido internamente em um pedido de proxy para <http://foo.com/bar>.

ProxyPassReverse

Esta diretiva permite que o Apache ajuste a URL do cabeçalho Localização em respostas de redirecionamento de HTTP. Por exemplo, isto é importante quando Apache é utilizado como um proxy reverso para evitar desvio do proxy reverso devido a redirecionamentos HTTP nos servidores de back end que ficam atrás do proxy reverso.

<Caminho> é o nome de um caminho virtual local.
<url> é uma URL parcial para o servidor remoto - utilizados da mesma maneira que são utilizados para a diretiva ProxyPass.

Exemplo:
Suponha que o servidor local possua um endereço http://wibble.org/; assim

   ProxyPass         /mirror/foo/ http://foo.com/
   ProxyPassReverse  /mirror/foo/ http://foo.com/
fará não apenas que um pedido local para <http://wibble.org/mirror/foo/bar> seja convertido internamente em um pedido de proxy para <http://foo.com/bar>(a funcionalidade ProxyPass fornece aqui). Também cuida dos redirecionamentos que servidor foo.com envia: quando http://foo.com/bar for redirecionado por ele para http://foo.com/quux o Apache ajustará isto para http://wibble.org/mirror/foo/quux antes de encaminhar a resposta de redirecionamento HTTP para o cliente.

Observe que esta diretriz ProxyPassReverse também pode ser utilizada juntamente com o recurso de passagem do proxy ("RewriteRule ... [P]") em mod_rewrite porque não depende de uma diretriz ProxyPass correspondente.

AllowCONNECT

A diretiva AllowCONNECT especifica uma lista de números de porta aos quais o método CONNECT de proxy pode conectar. Os navegadores atuais utilizam este método quando uma conexão https é solicitada e túnel proxy sobre http está em efeito.
Por padrão, apenas a porta https padrão (443) e a porta de snews padrão (563) são ativadas. Utilize a diretiva AllowCONNECT para substituir este padrão e permitir conexão apenas com as portas listadas.

ProxyBlock

A diretiva ProxyBlock especifica uma lista de palavras, hosts e/ou domínios, separada por espaços. Pedidos de documento HTTP, HTTPS e FTP para sites cujos nomes contêm palavras, hosts ou domínios correspondidos são bloqueados pelo servidor proxy. O módulo proxy também tentará determinar os endereços IP de itens da lista que podem ser nomes de host durante a inicialização, e armazená-los em cache para também corresponder aos testes. Exemplo:
  ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
'rocky.wotsamattau.edu' também pode ser correspondido se for feita referência pelo endereço IP.

Note que 'wotsamattau' também poderia ser suficiente para corresponder a 'wotsamattau.edu'.

Note também que

ProxyBlock *
bloqueia conexões a todos os sites.

ProxyReceiveBufferSize

A diretiva ProxyReceiveBufferSize especifica um tamanho de buffer de rede explícito para conexões HTTP e FTP de saída, para melhorar o rendimento. Ele tem que ser maior que 512 ou definido para 0 para indicar que o tamanho de buffer padrão do sistema deve ser utilizado.

Exemplo:

  ProxyReceiveBufferSize 2048

NoProxy

Esta diretiva é útil apenas para servidores proxy Apache dentro de intranets. A diretiva NoProxy especifica uma lista de subredes, endereços IP, hosts e/ou domínios, separada por espaços. Um pedido para um host que corresponda um ou mais destes sempre é servido diretamente, sem encaminhamento para o(s) servidor(es) ProxyRemote configurado.

Exemplo:

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21
Os argumentos para a diretiva NoProxy são da seguinte lista de tipo:
Domínio
Um Domínio é um nome de domínio de DNS parcialmente qualificado, precedido por um ponto. Ele representa uma lista de hosts que pertencem logicamente ao mesmo domínio ou zona de DNS (por exemplo, os sufixos dos nomes de host estão todos terminados em Domínio).
Exemplos: .com .apache.org.
Para distinguir Domínios de Nome de hosts (sintaticamente ou semanticamente; um domínio DNS pode possuir um registro DNS A também), Domínios são sempre escritos com um ponto final antes.
Nota: Comparações de nome de domínio são feitas sem levar em consideração letras maiúsculas e minúsculas e sempre assume-se que Domínios sejam ancorados na raiz da árvore de DNS, portanto dois domínios .MyDomain e .mydomain.com. (note o ponto final de rastreamento) são considerados iguais. Já que uma comparação de domínio não envolve consulta de DNS, é mais eficiente que uma comparação de subrede.
Subrede
Uma SubRede é um endereço de Internet parcialmente qualificado no formato numérico (com quatro partes separadas por pontos), seguido opcionalmente por uma barra e a máscara de rede, especificado como o número de bits significativos na SubRede. É utilizado para representar uma subrede de hosts que pode ser alcançada através de uma interface de rede comum. Na falta da máscara de rede explícita, assume-se que dígitos de trilha omitidos (ou com valor zero) especificam a máscara. (Neste caso, a máscara de rede só pode ter largura em múltiplos de 8 bits.)
Exemplos:
192.168 ou 192.168.0.0
a subrede 192.168.0.0 com uma máscara de rede implicada de 16 bits válidos (algumas vezes utilizados na forma de máscara de rede 255.255.0.0)
192.168.112.0/21
a subrede 192.168.112.0/21 com uma máscara de rede de 21 bits válidos (também utilizados na forma 255.255.248.0)
Como um caso de degeneração, uma SubRede com 32 bits válidos é o equivalente a um EndIP, enquanto uma SubRede com zero bits válidos (por exemplo, 0.0.0.0/0) é o mesmo que a constante _Default_, correspondendo a qualquer endereço IP.
EndIP
Um EndIP representa um endereço de Internet completo em formato numérico (dotted quad). Geralmente, este endereço representa um host, mas não precisa haver necessariamente um nome de domínio DNS conectado com o endereço.
Exemplo: 192.168.123.7
Nota: Um EndIP não precisa ser resolvido pelo sistema DNS, portanto ele pode resultar em melhor desempenho para o apache.

Veja também: Questões de DNS

Nome do host
Um Nome do host é um nome de domínio DNS completo que pode ser resolvido para um ou mais EndIP através do serviço de nome de domínio. Ele representa um host lógico (consulte acima para comparar com Domínios) e deve ser resolvido para pelo menos um EndIP (ou geralmente para uma lista de hosts com EndIPs diferentes).
Exemplos: prep.ai.mit.edu www.apache.org.
Nota: Em várias situações, é mais eficiente especificar um EndIP no lugar de Nome do host já que a consulta de DNS pode ser evitada. Resolução de nome no Apache pode levar um tempo considerável quando a conexão ao servidor de nome utiliza um link PPP lento.
Nota: Comparações de Nome do host são feitas sem levar em consideração letras maiúsculas e minúsculas e sempre assume-se que Nome do hosts sejam ancorados na raiz da árvore de DNS, portanto dois nomes de host WWW.MyDomain.com e www.mydomain.com. (Note o ponto final de rastreamento) são considerados iguais.

Veja Também: Questões de DNS

ProxyDomain

Esta diretiva é útil apenas para servidores proxy Apache dentro de intranets. A diretiva ProxyDomain especifica o domínio padrão a que o servidor proxy do apache pertence. Se um pedido para um host sem um nome de domínio for encontrado, uma resposta de redirecionamento para o mesmo host com o Domínio configurado anexado será gerado.

Exemplo:

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21
  ProxyDomain     .mycompany.com

ProxyVia

Esta diretiva controla o uso do cabeçalho HTTP Via: pelo proxy. Seu uso é controlar o fluxo de pedidos proxy através de uma cadeia de servidores proxy. Consulte RFC2068 (HTTP/1.1) para obter uma explicação sobre as linhas de cabeçalho Via:.

CacheForceCompletion

Se uma transferência http que está sendo armazenada em cache for cancelada, o módulo de proxy concluirá a transferência para cache se mais do que a porcentagem especificada já tiver sido transferida.

Isto é uma porcentagem e deve ser um número entre 1 e 100, ou 0 para utilizar o padrão. 100 fará com que um documento seja armazenado em cache apenas se a transferência for concluída. Recomenda-se um número entre 60 e 90.

CacheRoot

Define o nome do diretório para conter os arquivos de cache; precisa ser gravável pelo servidor httpd. (Veja a diretiva User).
Definir CacheRoot permite armazenamento em cache do proxy; sem definir um CacheRoot, a funcionalidade proxy estará disponível se ProxyRequests forem definidos para On, mas não haverá armazenamento em cache disponível.

CacheSize

Define a utilização de espaço desejada, em KB (unidades de 1024 bytes). Embora a utilização possa ser maior que esta definição, a coleta de lixo excluirá arquivos até que a utilização esteja no nível ou abaixo desta definição.

Dependendo do volume de tráfego de proxy esperado e do CacheGcInterval, utilize um valor pelo menos 20 a 40 % menor que o espaço disponível.

CacheGcInterval

Verifica a cache a cada <tempo> horas, e exclui arquivos se o espaço de utilização for maior que o definido em CacheSize. Note que <tempo> aceita um valor flutuante, você pode por exemplo utilizar CacheGcInterval 1.5 para verificar a cache a cada 90 minutos. (Se não for definido, não será realizada coleta de lixo e a cache crescerá indefinidamente.) Note também que quanto maior o valor de CacheGcInterval, mais espaço extra além do CacheSize configurado será necessário para a cache entre as coletas de lixo.

CacheMaxExpire

Documentos HTTP que podem ser armazenados em cache serão retidos por pelo menos <tempo> horas sem que seja verificado o servidor de origem. Assim, documentos podem estar no máximo <tempo> horas desatualizados. Esta restrição é cumprida mesmo se uma data de expiração for fornecida com o documento.

CacheLastModifiedFactor

Se o servidor HTTP de origem não fornecer uma data de expiração para o documento, estime uma utilizando a fórmula

  período-expiração = tempo-desde-última-modificação * <fator>
Por exemplo, se o documento foi modificado pela última vez há 10 horas, e o <fator> for 0.1, o período de expiração será definido para 10*0.1 = 1 hora.

Se o valor período-expiração for maior que o definido por CacheMaxExpire, o último tem a preferência.

CacheDirLevels

CacheDirLevels define o número de níveis de subdiretórios na cache. Dados em cache serão salvos esta quantidade de níveis de diretório abaixo de CacheRoot.

CacheDirLength

CacheDirLength define o número de caracteres nos nomes de subdiretórios de cache de proxy.

CacheDefaultExpire

Se o documento for buscado por um protocolo que não suporta tempo de expiração, utilize <tempo> horas como o tempo de expiração. CacheMaxExpire não substitui esta definição.

NoCache

A diretiva NoCache especifica uma lista de palavras, hosts e/ou domínios, separada por espaços. Documentos HTTP e FTP sem senha e com palavras correspondidas, hosts ou domínios não são armazenados em cache pelo servidor proxy. O módulo proxy também tentará determinar os endereços IP de itens da lista que podem ser nomes de host durante a inicialização, e armazená-los em cache para também corresponder aos testes. Exemplo:

  NoCache joes-garage.com some-host.co.uk bullwinkle.wotsamattau.edu
'bullwinkle.wotsamattau.edu' também pode ser correspondido se for feita referência pelo endereço IP.

Note que 'wotsamattau' também poderia ser suficiente para corresponder a 'wotsamattau.edu'.

Note também que

NoCache *
desativa o armazenamento em cache completamente.