Personalización del proceso del servidor

Este tema describe cómo utilizar las inclusiones de servidor para insertar información en los programas CGI programas y documentos HTML que se envíen al cliente. Asimismo se describe la personalización de las correlaciones de recursos y mensajes de error del servidor.

Inclusiones de servidor

Las inclusiones de servidor le permiten añadir información a los programas CGI y documentos HTML que el servidor envía al cliente al actuar como servidor de origen (es decir, no a objetos en memoria caché o que han pasado por el proxy). La fecha actual, el tamaño de un archivo y la fecha del último cambio de un archivo son ejemplos del tipo de información que se puede enviar al cliente. Este aprtado describe el formato de mandato de las inclusiones de servidor y explica cómo lograr que los mandatos include de servidor funcionen en los programas CGI y documentos HTML. Asimismo puede utilizar las inclusiones de servidor para personalizar las páginas de error.

Consideraciones para las inclusiones de servidor

Antes de utilizar las inclusiones de servidor en el servidor, tenga en cuenta los problemas de rendimiento, seguridad y riesgo:

Configuración de las inclusiones de servidor

Para habilitar las inclusiones de servidor, seleccione Configuración de servidor –> Configuración básica en los formularios de Configuración y Administración. Utilice este formulario para especificar cuál de los siguientes tipos de inclusiones de servidor son aceptables:

Utilice este formulario para especificar si desea realizar el proceso de inclusión de la parte servidor de los documentos de texto y HTML además de otros tipos de archivo.

Asimismo, asegúrese de que se reconozca la extensión de archivo que utilice para la inclusión. En los formularios de Configuración y Administración, seleccione Configuración de servidor –> Tipos MIME y codificación y utilice el formulario Tipos MIME. Tenga en cuenta que las extensiones shtml y htmls se reconocen por omisión.

Para configurar el servidor para las inclusiones de servidor editando las directivas del archivo de configuración de proxy, consulte los apartados de referencia de las siguientes directivas:

Formato de las inclusiones de servidor

Los mandatos include deben incluirse en el documento HTML o programa CGI como comentarios. Los mandatos tienen el siguiente formato:

<!--#directive tag=value ... --> 
o bien 
<!--#directive tag="value" ... -->  

Las comillas que encierran los valores son opcionales, pero son necesarias para anidar espacios.

Directivas de las inclusiones de servidor

Este apartado explica las directivas que el servidor acepta para las inclusiones de servidor. No se deben confundir estas directivas con las directivas del archivo de configuración de proxy, que aparecen documentadas en el Apéndice B. Directivas del archivo de configuración.

config: controlar proceso de archivos

Utilice esta directiva para controlar ciertos aspectos del proceso de archivos. Los distintivos válidos son cmntmsg, errmsg, sizefmt y timefmt.

cmntmsg
Utilice este distintivo para especificar un mensaje que precede al inicio de los comentarios añadidos por otras directivas. Para cualquier directiva que contenga texto entre una especificación de directiva y "-->", ese texto se trata como si fuera un comentario y se añade al archivo que el servidor envía al cliente.

Ejemplo:

<!--#config cmntmsg="[Esto es un comentario]" -->
<!-- #echo var="  " texto adicional -->

Resultado: <!--[Esto es un comentario] texto extra -->

Valor por omisión: [Lo siguiente era adicional en la directiva]

errmsg
Utilice este distintivo para especificar el mensaje que se envía al cliente si ocurre un error mientras se está procesando un archivo. El mensaje se registra en las anotaciones cronológicas de errores del servidor.

Ejemplo:

<!-- #config
errmsg="[Se ha producido un error]" -->

Valor por omisión: "[Se ha producido un error al procesar esta directiva]

sizefmt
Utilice este distintivo para especificar el formato en el que se visualiza el tamaño de archivo. En los siguientes ejemplos, bytes es el valor utilizado para mostrar el número de bytes, y abbrev para mostrar el número kilobytes o megabytes.

Ejemplo 1:

<!--#config sizefmt=bytes -->
<!--#fsize file=foo.html -->

Resultado: 1024

Ejemplo 2:

<!--#config sizefmt=abbrev -->
<!--#fsize file=foo.html -->

Resultado: 1K

Valor por omisión: "abbrev"

timefmt
Utilice este distintivo para especificar el formato utilizado para proporcionar las fechas.

Ejemplo:

<!--#config timefmt="%D %T" -->
<!--#flastmod file=foo.html -->

Resultado: "10/18/95 12:05:33"

Default: "%a, %d %b %Y %T %Z"

Los siguientes formatos strftime() son válidos con el distintivo timefmt:

Especificador Significado
%% Sustituir por %
%a Sustituir por el nombre abreviado del día de la semana
%A Sustituir por el nombre completo del día de la semana
%b Sustituir por el nombre abreviado del mes
%B Sustituir por el nombre completo del mes
%c Sustituir por la fecha y hora
%C Sustituir por el número de siglo (año dividido por 100 y truncado)
%d Sustituir por el día del mes (01-31)
%D Insertar la fecha como %m/%d/%y
%e Insertar el mes del año como un número decimal (01-12) (Bajo C POSIX sólo, es un campo de 2 caracteres, justificado por la derecha, rellenado con espacios en blanco)
%E[cCxyY] Si el formato fecha/hora alternativo no está disponible, los descriptores %E se correlacionan con sus equivalentes no ampliados (por ejemplo, %EC se correlaciona con %C)
%Ec Sustituir por la representación alternativa de la fecha y hora
%EC Sustituir por el nombre del año base (periodo) de la representación alternativa
%Ex Sustituir por la representación alternativa de la fecha
%EX Sustituir por la representación alternativa de la hora
%Ey Sustituir por el desplazamiento de %EC (año sólo) en la representación alternativa
%EY Sustituir por la representación alternativa completa del año
%h Sustituir por el nombre abreviado del mes (igual a %b)
%H Sustituir por la hora (reloj de 23 horas) como un número decimal (00-23)
%I Sustituir por la hora (reloj de 12 horas) como un número decimal (00-12)
%j Sustituir por el día del año (001-366)
%m Sustituir por el mes (01-12)
%M Sustituir por los minutos (00-59)
%n Sustituir por una nueva línea
%O[deHlmMSUwWy] Si el formato fecha/hora alternativo no está disponible, los descriptores %E se correlacionan con sus equivalentes no ampliados (por ejemplo, %Od se correlaciona con %d)
%Od Sustituir por el día del mes, utilizando los símbolos numéricos alternativos, rellenados según convenga con ceros delante si existe algún símbolo alternativo para el cero, de lo contrario deben utilizarse espacios delante
%Oe Sustituir por el día del mes, utilizando los símbolos numéricos alternativos, rellenados según convenga con espacios anteriores
%OH Sustituir por la hora (reloj de 24), utilizando los símbolos numéricos alternativos
%OI Sustituir por la hora (reloj de 12), utilizando los símbolos numéricos alternativos
%Om Sustituir por el mes, utilizando los símbolos numéricos alternativos
%OM Sustituir por los minutos, utilizando los símbolos numéricos alternativos
%OS Sustituir por los segundos, utilizando los símbolos numéricos alternativos
%OU Sustituir por el número de semana del año (el domingo como el primer día de la semana, normas correspondientes a %U) utilizando los símbolos numéricos alternativos
%Ow Sustituir por el día de la semana (Domingo=0), utilizando los símbolos numéricos alternativos
%OW Sustituir por el número de semana del año (el lunes como el primer día de la semana) utilizando los símbolos numéricos alternativos
%Oy Sustituir por el año (desplazamiento de %C) de la representación alternativa, utilizando los símbolos numéricos alternativos
%p Sustituir por el equivalente local de AM o PM
%r Sustituir por la serie equivalente a %I:%M:%S %p
%R Sustituir por la notación de 24 horas (%H:%M)
%S Sustituir por los segundos (00-61)
%t Sustituir por una pestaña
%T Sustituir por una serie equivalente a %H:%M:%S
%u Sustituir por el día de la semana como un número decimal (1-7), con 1 igual a lunes
%U Sustituir por el número de la semana del año (00-53), donde el domingo es el primer día de la semana
%V Sustituir por el número de la semana del año (01-53), donde el lunes es el primer día de la semana
%w Sustituir por el día de la semana (0-6), donde el domingo es 0
%W Sustituir por el número de la semana del año (00-53), donde el lunes es el primer día de la semana
%x Sustituir por la representación adecuada de la fecha
%X Sustituir por la representación adecuada de la hora
%y Sustituir por el número del año de dos dígitos dentro del siglo
%Y Sustituir con el número del año de cuatro dígitos
%Z Sustituir por el nombre del huso horario o dejar sin caracteres si se desconoce el huso horario

La configuración del sistema determina los años y nombres de mes completos y abreviados.

echo: visualizar valores de variable

Utilice esta directiva para visualizar el valor de las variables de entorno especificadas con el distintivo var. Si no se encuentra una variable, se visualizará (None). Asimismo, echo puede mostrar un valor establecido por las directivas set o global. Las siguientes variables de entorno pueden mostrarse:

DATE_GMT
La fecha y hora actuales en la hora media de Greenwich. El formato de esta variable se define mediante la directiva config timefmt.
DATE_LOCAL
La fecha actual y hora local. El formato de esta variable se define mediante la directiva config timefmt.
DOCUMENT_NAME
El nombre del documento superior. Si el HTML se ha generado mediante una CGI, esta variable contiene el nombre de la CGI.
DOCUMENT_URI
El URL completo solicitado por el cliente, sin la serie de consulta.
LAST_MODIFIED
La fecha y hora en que ha modificado el documento actual por última vez. El formato de esta variable se define utilizando la directiva config timefmt .
QUERY_STRING_UNESCAPED
La consulta de búsqueda enviada por el cliente. Ésta no está definida a menos que HTML se haya generado por una CGI.
SSI_DIR
La vía de acceso del archivo actual, relativa a SSI_ROOT. Si el archivo actual está en SSI_ROOT, este valor es "/".
SSI_FILE
El nombre de archivo del archivo actual.
SSI_INCLUDE
El valor utilizado en el mandato include que ha recuperado el archivo actual. Éste no está definido para el archivo superior.
SSI_PARENT
La vía de acceso y el nombre de archivo del archivo que contiene el mandato include que ha recuperado el archivo actual, relativo a SSI_ROOT.
SSI_ROOT
Las vías de acceso del archivo superior. Todas las peticiones de inclusiones deben estar en este directorio o un subdirectorio de este directorio.

Ejemplo:

<!--#echo var=SSI_DIR -->

exec: especificar programas CGI

Utilice esta directiva para incluir la salida de un programa CGI. La directiva exec descarta cualquier cabecera HTTP a las que da salida la CGI excepto las siguientes:

Content-type
Determina si se va a analizar el cuerpo de la salida de otras inclusiones
Content-encoding
Determina si se debe realizar la traducción de EBCDIC a ASCII
Last-modified
Sustituye el valor de cabecera Last-modified actual a menos que el valor actual sea posterior al valor especificado

cgi: especificar URL de programa CGI

Utilice esta directiva para especificar el URL de un programa CGI.

En este ejemplo, programa es el programa CGI que se desea ejecutar y info_vía_acceso y serie_consulta representan uno o más parámetros pasados al programa como variable de entorno:

<!--#exec
cgi="/cgi-bin/programa/info_vía_acceso?serie_consulta" -->

Este ejemplo muestra la utilización de variables:

<!--#exec cgi="&path;&cgiprog;&pathinfo;&querystring;" -->

flastmod: visualizar fecha y hora de la última modificación del documento

Utilice esta directiva para visualizar la fecha y hora más recientes en las que se modificó el documento. El formato de esta variable se define mediante la directiva config timefmt. Los distintivos file y virtual son válidos con esta directiva y sus significados se definen del siguiente modo.

Formatos de directiva:

<!--#flastmod file="/path/file" --> 
<!--#flastmod virtual="/path/file" -->
file
Utilice este distintivo para especificar el nombre de un archivo. Para flastmod, fsizey include, se asume que file es relativo a SSI_ROOT si está precedido por '/'. De lo contrario, es relativo a SSI_DIR. El archivo especificado debe existir en SSI_ROOT o en uno de sus descendientes. Por ejemplo:
<!--#flastmod file="/path/file" -->
virtual
Utilice este distintivo para especificar el URL de una vía de acceso virtual a un documento. Para flastmod, fsize y include, virtual siempre se pasa a través de las directivas de correlación del servidor. Por ejemplo:
<!--#flastmod virtual="/path/file" -->

Ejemplo:

<!--#flastmod file="foo.html" -->

Result: 12May96

fsize: visualizar tamaño de archivo

Utilice esta directiva para visualizar el tamaño del archivo especificado. La directiva config sizefmt define el formato de esta variable. Los distintivos file y virtual son válidos con esta directiva y sus significados son los mismos que se han definido anteriormente para la directiva flastmod.

Ejemplo:

<!--#fsize file="/path/file" -->
<!--#fsize virtual="/path/file" -->

Result: 1K

global: definir variables globales

Utilice esta directiva para definir las variables globales que se pueden repetirse posteriormente mediante este archivo o cualquier archivo incluido.

Ejemplo:

<!--#global var=VariableName value="SomeValue" -->

Por ejemplo, para hacer referencia a un documento padre */a través de los límites virtuales, es necesario que establezca una variable global DOCUMENT_URI. Además es necesario que haga referencia a la variable global del documento hijo. Este ejemplo muestra el código HTML que se necesita para insertar el documento padre:

<!--#global
var="PARENT_URI" value=&DOCUMENT_URI; -->

Este ejemplo muestra el código HTML que es necesario insertar en el documento hijo:

<!--#flastmod virtual=&PARENT_URI; -->

include: incluir un documento en la salida

Utilice esta directiva para incluir el texto de un documento de la salida. Los distintivos file y virtual son válidos con esta directiva y sus significados son los mismos que se han definido anteriormente para la directiva flastmod.

set: establecer variables que se van a repetir

Utilice esta directiva para establecer una variable que se pueda repetir posteriormente, pero sólo mediante este archivo.

Ejemplo:

 <!--#set var="Variable 2"
value="AnotherValue" -->

Al definir una directiva, puede repetir una serie en medio de value. Por ejemplo:

<!--#include
file="&filename;" -->

Variables: una directiva set en la parte servidor va seguida generalmente de una directiva echo, de tal modo que busca la variable establecida, informa acerca de dónde se encuentra la variable y continúa con la función. Puede contener varias referencias a variables. Las directivas set de la parte servidor también le permiten repetir una variable ya establecida. Si no se encuentra ninguna variable set, no se visualiza nada.

Cuando una directiva set de la parte servidor encuentra una referencia de variable dentro de una directiva de inclusión de servidor, intenta resolverla en la parte servidor. En la segunda línea del siguiente ejemplo, la variable &index; de la parte servidor se utiliza con la serie var para construir el nombre de variable var1. A continuación, se asigna a la variable &var1; un valor indicando un carácter de escape delante del & de &ecirc; de modo que no se reconozca como una variable. En su lugar, se utiliza como una serie para crear el valor fr&ecirc;d, o fred con un acento circunflejo encima de la e. La variable &ecirc; es una variable de parte del servidor.

<!--#set var="index" value="1" --> 
<!--#set var="var&index;" value="fr\&ecirc;d" --> 
<!--#echo var="var1" -->

Los caracteres que se pueden definir de este modo (llamados variables con escape) aparecen precedidos de una barra inclinada invertida \) e incluyen los siguientes:

Carácter Significado
\a Alerta (timbre)
\b Retroceso
\f Salto de página (nueva página)
\n Línea nueva
\r Retorno de carro
\t Tabulador horizontal
\v Tabulador vertical
\' Comillas simples
\" Comillas
\? Signo de interrogación
\\ Barra inclinada invertida
\- Guión
\. Punto
\& Ampersand

Personalización de los mensajes de error

Puede personalizar los mensajes de error que Caching Proxy devuelve y puede definir mensajes específicos para determinadas condiciones de error. En los formularios de Configuración y Administración, seleccione Configuración de servidor –> Personalización de mensajes de error. Utilice este formulario para seleccionar una condición de error y especificar un determinado archivo HTML para utilizarlo en esa condición.

Para personalizar los mensajes de error mediante la edición de directivas en el archivo de configuración de proxy, consulte el apartado de referencia de la directiva ErrorPage: especificar un mensaje personalizado para una determinada condición de error.

Redirección RTSP (Real Time Streaming Protocol)

Sólo se aplica a configuraciones de proxy de retorno.

WebSphere Application Server, Versión 8.0 introduce el soporte multimedia de modalidad continua en la forma del redirector RTSP. RTSP habilita Caching Proxy para que actúe como el primer punto de contacto con los reproductores multimedia y redirija las peticiones a un servidor proxy adecuado o a un servidor de contenido que proporcione el contenido de soporte solicitado.

RTSP (Real Time Streaming Protocol) aparece definido en RFC 2326. Es un protocolo estándar de Internet para controlar la corriente de datos. Aunque no incluye la tecnología para enviar corrientes, es lo bastante flexible para que pueda utilizarse para controlar las corrientes de datos que no están relacionados con la reproducción de vídeo o audio.

Acerca de la redirección RTSP

La característica de redirección RTSP permite que Caching Proxy redireccione las peticiones para cualquier sesión multimedia de modalidad continua controlada por RTSP. Éstas incluyen los siguientes tipos de soporte:

Cualquier reproductor que se pueda configurar para contactar con un servidor proxy en el puerto RTSP (generalmente 554) puede utilizar esta infraestructura de Caching Proxy para que el redirector RTSP maneje las peticiones.

El redirector RTSP no coloca en antememoria o pasa directamente por el proxy las representaciones multimedia. El redirector RTSP debe utilizarse junto con un servidor multimedia de modalidad continua de terceros para que proporcione una de las funciones o ambas. Caching Proxy con el redirector RTSP debe tener acceso de red a uno o más de los servidores proxy RTSP.

Limitación RTSP

Esta característica está sujeta a la siguiente limitación:

Actualmente, sólo se da soporte a las tecnologías RealNetworks. Éstas incluyen el servidor proxy RealProxy, el servidor de origen RealServer y el reproductor multimedia RealPlayer.

Mejora RTSP

Anteriormente, el redirector RTSP estaba sujeto a la limitación de que todas las peticiones al mismo servidor de origen de cualquier URL debían redirigirse al mismo sitio. La redirección basada en los nombres de archivo u otras partes del URL solicitado no era posible. Esta limitación ya no se aplica. Actualmente el redirector RTSP utiliza el URL completo de las peticiones recibidas junto con el valor de umbral (rtsp_proxy_threshold) establecido en el archivo de configuración de Caching Proxy para determinar si se debe redirigir la petición de cliente al servidor de origen o a un servidor proxy. Actualmente las peticiones al mismo servidor de origen se manejan individualmente.

Configuración de la redirección RTSP

Las siguientes directivas de configuración de archivos se utilizan para controlar la redirección RTSP. Los valores de estas directivas no se renuevan mediante un reinicio de servidor. El servidor debe detenerse completamente y reiniciarse antes de que los cambios de estas directivas entren en vigor.