Ayuda para IBM HTTP Server: Directivas de Proxy

Directivas de Proxy

 

ProxyRequests

Permite o evita que Apache funcione como un servidor proxy. Al establecer ProxyRequests en 'off' no se deshabilita el uso de la directiva ProxyPass.

ProxyRemote

Define proxis remotos a este proxy. <patrón> es, bien el nombre de un esquema URL para el que da soporte el servidor remoto, bien una URL parcial para la que hay que utilizar el servidor remoto, o '*' para indicar que todas las peticiones han de ponerse en contacto con el servidor. <servidor-remoto> es una URL parcial del servidor remoto. Sintaxis:
  <servidor-remoto> = <protocolo>://<nombreSistPral>[:puerto]
<protocolo> es el protocolo que ha de utilizarse para la comunicación con el servidor remoto; este módulo sólo tiene soporte para "http".

Ejemplo:

  ProxyRemote http://bienvenido.com/ http://mirror.com:8000
  ProxyRemote * http://sitiolisto.com
  ProxyRemote ftp http://ftpproxy.midominio.com:8080
En el último ejemplo, el proxy reenviará peticiones FTP, encapsuladas como cualquier otra petición de proxy HTTP, a otro proxy que las pueda manejar.

ProxyPass

Esta directiva permite que los servidores remotos estén direccionados en el espacio del servidor local; el servidor local no actúa como proxy en sentido convencional, pero se presenta como una duplicación del servidor remoto. <VíaAcceso> es el nombre de una vía de acceso virtual local; <url> es un URL parcial para el servidor remoto.

Supongamos que el servidor local tiene la dirección http://wibble.org/; así,

   ProxyPass         /mirror/foo/ http://foo.com/
producirá una petición local para que <http://wibble.org/mirror/foo/bar> se convierta internamente en una petición de proxy para <http://foo.com/bar>.

ProxyPassReverse

Esta directiva permite que Apache ajuste la URL en la cabecera Ubicación en respuestas de redirección HTTP. Por ejemplo, esto es fundamental cuando se utiliza Apache como proxy inverso, para evitar que se pase el proxy inverso, ya que HTTP redirecciona a servidores backend que están detrás del proxy inverso.

<VíaAcceso> es el nombre de una vía de acceso virtual local.
<url> es una URL parcial para el servidor remoto - se utiliza de la misma forma que para la directiva ProxyPass.

Ejemplo:
Supongamos que el servidor local tiene la dirección http://wibble.org/; así,

   ProxyPass         /mirror/foo/ http://foo.com/
   ProxyPassReverse  /mirror/foo/ http://foo.com/
no sólo producirá una petición local para que <http://wibble.org/mirror/foo/bar> se convierta internamente en una petición de proxy para <http://foo.com/bar>(la funcionalidad ProxyPass está aquí). También se ocupa de redirigir los envíos del servidor foo.com: cuando redirige http://foo.com/bar a http://foo.com/quux, Apache ajusta esto a http://wibble.org/mirror/foo/quux antes de hacer seguir la respuesta de reenvío HTTP al cliente.

Tenga en cuenta que esta directiva ProxyPassReverse puede utilizarse también junto con la característica de paso a través de proxy ("RewriteRule ... [P]") de mod_rewrite ya que no depende de una directiva ProxyPass correspondiente.

AllowCONNECT

La directiva AllowCONNECT especifica una lista de números de puerto a los que puede conectarse el método CONNECT del proxy. Los navegadores actuales utilizan este método cuando se solicita la conexión https y está activo el paso de proxy sobre http.
Por omisión, sólo el puerto https por omisión (443) y el puerto snews por omisión (563) están habilitados. Utilice la directiva AllowCONNECT para alterar temporalmente este valor por omisión y permitir conexiones sólo a los puertos listados.

ProxyBlock

La directiva ProxyBlock especifica una lista de palabras, sistemas principales y/o dominios separados por espacios. Las peticiones de documentos HTTP, HTTPS y FTP a sitios cuyos nombres contengan palabras, sistemas principales o dominios coincidentes son bloqueados por el servidor proxy. El módulo proxy también intentará determinar las direcciones IP de los elementos que puedan tener nombre de sistemas principales durante el arranque y los almacena en antememoria para comprobar también si hay coincidencia. Ejemplo:
  ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
'rocky.wotsamattau.edu' también podría coincidir si fuera referenciado por una dirección IP.

Tenga en cuenta que 'wotsamattau' sería suficiente para coincidir con 'wotsamattau.edu'.

Advierta igualmente que

ProxyBlock *
bloquea las conexiones a todos los sitios.

ProxyReceiveBufferSize

La directiva ProxyReceiveBufferSize especifica un tamaño de almacenamiento intermedio de red explícito para las conexiones HTTP y FTP salientes, para un rendimiento mejorado. Ha de ser mayor de 512 o establecerse en 0 para indicar que ha de utilizarse el tamaño de almacenamiento intermedio por omisión del sistema.

Ejemplo:

  ProxyReceiveBufferSize 2048

NoProxy

Esta directiva sólo es útil para los servidores proxy de Apache en intranets. La directiva NoProxy especifica una lista de subrredes, direcciones IP, sistemas principales y/o dominios, separados por espacios. Una petición a un sistema principal que coincida con una o más de éstas se atiende siempre directamente, sin reenviarla al servidor o servidores proxy ProxyRemote configurado/s.

Ejemplo:

  ProxyRemote  *  http://firewall.miempresa.com:81
  NoProxy         .miempresa.com 192.168.112.0/21
Los argumentos de la directiva NoProxy son los de la lista de tipos siguiente:
Dominio
Un Dominio es un nombre de dominio DNS calificado parcialmente, precedido de un punto. Representa una lista de sistemas principales que pertenecen de forma lógica al mismo dominio DNS o zona (p.e., los sufijos de los nombres de sistemas principales terminan todos en Dominio).
Ejemplos: .com .apache.org.
Para distinguir Dominios de NombreSistPrals (tanto sintáctica como semánticamente; un dominio DNS puede tener un registro DNS A, ¡además!), los Dominios van siempre con un punto delante.
Nota: Las comparaciones de nombre de dominio se hacen sin tener en cuenta las mayúscula y minúsculas y se supone siempre que los Dominios están en el raíz del árbol DNS, por lo que dos dominios .MiDominio.com y .midominio.com. (tenga en cuenta el punto final) se consideran iguales. Como la comparación de dominios no tiene que ver con una búsqueda de DNS, es mucho más eficiente que las comparaciones de subred.
SubRed
Una SubRed es una dirección de internet calificada parcialmente en forma numérica (cuarteto con puntos), seguida opcionalmente de una barra y la máscara de red, especificada como el número de bits significativos de la SubRed. Se utiliza para representar una subred de sistemas principales a los que se puede acceder sobre un interfaz de red común. En ausencia de la máscara de red explícita, se asume que la máscara viene especificada por dígitos finales omitidos (o con valor cero). (En este caso, la máscara de red sólo puede tener una anchura que sea múltiplo de 8 bit)
Ejemplos:
192.168 o 192.168.0.0
Subred 192.168.0.0 con una máscara de red implícita de 16 bit válidos (a veces utilizados en forma de máscara de red 255.255.0.0)
192.168.112.0/21
Subred 192.168.112.0/21 con una máscara de red de 21 bit válidos (también utilizada en la forma 255.255.248.0)
Un caso derivado es el de una SubRed con 32 bit válidos que es el equivalente a una DireccIP, mientras que una SubRed con cero bit válidos (p.e., 0.0.0.0/0) es lo mismo que la constante _Default_, que coincide con cualquier dirección IP.
DireccIP
Una DireccIP representa una dirección de internet completamente calificada en forma numérica (cuartetos con puntos). Normalmente, esta dirección representa un sistema principal, pero no es necesario que sea un nombre de dominio DNS conectado con la dirección.
Ejemplo: 192.168.123.7
Nota: Una DireccIP no es necesario que sea resuelta por el sistema DNS, por lo que puede producir un rendimiento de apache más efectivo.

Consulte también: Temas de DNS

NombreSistPral
Un NombreSistPral es un nombre de dominio DNS calificado al completo que puede resolverse en una o más DireccIP a través del servicio de nombres de dominio DNS. Representa un sistema principal lógico (en contra de los Dominios, ver anteriormente) y ha de poderse resolver al menos una de las DireccIP (o a menudo en una lista de sistemas principales con diferentes DireccIPs).
Ejemplos: prep.ai.mit.edu www.apache.org.
Nota: En muchas situaciones, es más eficaz especificar una DireccIP en vez de un NombreSistPral ya que se puede evitar una búsqueda de DNS. La resolución de nombres en Apache puede llevar mucho tiempo cuando la conexión al servidor de nombres utiliza un enlace PPP lento.
Nota: Las comparaciones de Sistemas principales se hacen independientemente de mayúsculas y minúsculas y se supone siempre que los Sistemas principales están en el raíz del árbol DNS, por lo que dos sistemas principales WWW.MiDominio.com y www.midominio.com. (tenga en cuenta el punto final) se consideran iguales.

Consultar también: Temas DNS

ProxyDomain

Esta directiva sólo es útil para los servidores proxy de Apache en intranets. La directiva ProxyDomain especifica el dominio por omisión al que pertenecerá el servidor proxy apache. Si se encuentra una petición a un sistema principal sin un nombre de dominio, se genera una respuesta de redireccionamiento al mismo sistema principal con el Dominio configurado añadido.

Ejemplo:

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

ProxyVia

Esta directiva controla el uso de la cabecera Via: HTTP por el proxy. El uso que se pretende es que controle el flujo de peticiones de proxy a lo largo de una cadena de servidores proxy. Consulte RFC2068 (HTTP/1.1) para ver una explicación de las líneas de cabecera Via:.

CacheForceCompletion

Si se cancela una transferencia http que se está cargando en antememoria, el módulo proxy terminará de cargarla si se ha transferido más del porcentaje especificado.

Es un porcentaje, y debe ser un número entre 1 y 100, o 0 para utilizar el valor por omisión. 100 hará que un documento pase a antememoria sólo si se permitió la transferencia completa. Se recomienda un número entre 60 y 90.

CacheRoot

Establece el nombre del directorio que contendrá los archivos de antememoria; el servidor httpd ha de tener permiso de grabación. (Consulte la directiva User).
Al establecer CacheRoot se habilita el uso de la antememoria para el proxy; sin definir un CacheRoot, la funcionalidad del proxy estará disponible si ProxyRequests se establece en On, pero no se tendrá disponible ninguna antememoria.

CacheSize

Establece el espacio en disco que utilizará la antememoria, en KB (unidades de 1024-byte). Aunque su uso puede crecer por encima de este valor, la acumulación de desecho suprimirá archivos hasta que el uso esté por debajo de este valor.

Según el volumen de tráfico en el proxy que se espere y el valor de CacheGcInterval, es recomendable utilizar un valor que esté entre un 20 y un 40 % del espacio disponible.

CacheGcInterval

Comprueba la antememoria cada <tiempo> horas, y suprime archivos si el uso del espacio es mayor que el establecido en CacheSize. Tenga en cuenta que <tiempo> acepta un valor de coma flotante así que, por ejemplo, se puede utilizar CacheGcInterval 1.5 para comprobar la antememoria cada 90 minutos.(Si no se establece, no se producirá acumulación de desechos, y la antememoria crecerá indefinidamente.) Tenga también en cuenta que cuanto mayor sea CacheGcInterval, mayor será el espacio extra por encima del CacheSize configurado que será necesario para la antememoria entre las recogidas de desechos.

CacheMaxExpire

Los documentos HTTP que se incorporen a la antememoria se mantienen <tiempo> horas sin comprobar el servidor de origen. Por consiguiente, los documentos pueden llevar <tiempo> horas caducados. Esta restricción se impone incluso si se ha proporcionado una fecha de caducidad con el documento.

CacheLastModifiedFactor

Si el servidor HTTP de origen no ha proporcionado una fecha de caducidad para el documento, se estima una utilizando la fórmula

  periodo-caducidad = tiempo-desde-última-modificación * <factor>
Por ejemplo, si el documento se modificó por última vez hace 10 horas, y <factor> es 0.1, el periodo de caducidad se establecerá en 10 x 0.1 = 1 hora.

Si el periodo de caducidad fuera mayor que el establecido en CacheMaxExpire, prevalece el más tardío.

CacheDirLevels

CacheDirLevels establece el número de niveles de subdirectorios en la antememoria. Los datos en antememoria se guardarán esta cantidad de niveles de directorios bajo CacheRoot.

CacheDirLength

CacheDirLength establece el número de caracteres de los nombres de subdirectorios de la antememoria del proxy.

CacheDefaultExpire

Si se va a buscar el documento por medio de un protocolo que no tiene soporte para horas de caducidad, se utilizarán <tiempo> horas como tiempo de caducidad. CacheMaxExpire no prevalece sobre este valor.

NoCache

La directiva NoCache especifica una lista de palabras, sistemas principales y/o dominios separados por espacios. El servidor proxy no almacena en antememoria los documentos HTTP ni FTP sin contraseña de dominios, sistemas principales o palabras que coincidan. El módulo proxy también intentará determinar las direcciones IP de los elementos que puedan tener nombre de sistemas principales durante el arranque y los almacena en antememoria para comprobar también si hay coincidencia. Ejemplo:

  NoCache joes-garage.com some-host.co.uk bullwinkle.wotsamattau.edu
'bullwinkle.wotsamattau.edu' también podría coincidir si fuera referenciado por una dirección IP.

Tenga en cuenta que 'wotsamattau' sería suficiente para coincidir con 'wotsamattau.edu'.

Advierta igualmente que

NoCache *
deshabilita por completo la antememoria.