SSI#

El módulo es un filtro que procesa comandos SSI (Server Side Includes) en las respuestas que lo atraviesan.

Ejemplo de Configuración#

location / {
    ssi on;
#    ...
}

Directivas#

ssi#

Sintaxis

ssi on | off;

Predeterminado

ssi off;

Contexto

http, server, location, if in location

Habilita o deshabilita el procesamiento de comandos SSI en las respuestas.

ssi_last_modified#

Sintaxis

ssi_last_modified on | off;

Predeterminado

ssi_last_modified off;

Contexto

http, server, location

Permite conservar el campo de cabecera Last-Modified de la respuesta original durante el procesamiento SSI para facilitar la caché de respuestas.

Por defecto, este campo se elimina ya que los contenidos de la respuesta se modifican durante el procesamiento y pueden contener elementos generados dinámicamente o partes que cambian independientemente de la respuesta original.

ssi_min_file_chunk#

Sintaxis

ssi_min_file_chunk size;

Predeterminado

ssi_min_file_chunk 1k;

Contexto

http, server, location

Establece el tamaño mínimo para las partes de una respuesta almacenadas en disco, a partir del cual tiene sentido enviarlas usando sendfile.

ssi_silent_errors#

Sintaxis

ssi_silent_errors on | off;

Predeterminado

ssi_silent_errors off;

Contexto

http, server, location

Si se habilita, suprime la salida de la cadena "[an error occurred while processing the directive]" en caso de error durante el procesamiento SSI.

ssi_types#

Sintaxis

ssi_types mime-type ...;

Predeterminado

ssi_types text/html;

Contexto

http, server, location

Habilita el procesamiento de comandos SSI en respuestas con los tipos MIME especificados además de text/html. El valor especial "*" coincide con cualquier tipo MIME.

ssi_value_length#

Sintaxis

ssi_value_length length;

Predeterminado

ssi_value_length 256;

Contexto

http, server, location

Establece la longitud máxima de los valores de parámetros en los comandos SSI.

Comandos SSI#

Los comandos SSI tienen el siguiente formato genérico:

<!--# command parameter1=value1 parameter2=value2 ... -->

Los siguientes comandos están soportados:

block#

Define un bloque que puede usarse como sustituto en el comando include. El bloque puede contener otros comandos SSI. El comando tiene el siguiente parámetro:

name#

nombre del bloque.

Ejemplo:

<!--# block name="one" -->
stub
<!--# endblock -->

config#

Configura algunos parámetros usados durante el procesamiento SSI, a saber:

errmsg#

una cadena que se muestra si ocurre un error durante el procesamiento SSI. Por defecto, se muestra la siguiente cadena:

`[an error occurred while processing the directive]`

timefmt#

una cadena de formato pasada a la función strftime() utilizada para mostrar fecha y hora. Por defecto, se utiliza el siguiente formato:

`"%A, %d-%b-%Y %H:%M:%S %Z"`

El formato "%s" es adecuado para mostrar el tiempo en segundos.

echo#

Muestra el valor de una variable. El comando tiene los siguientes parámetros:

var#

nombre de la variable.

encoding#

el método de codificación. Valores posibles: none, url y entity. Por defecto se usa entity.

default#

un parámetro no estándar que establece una cadena a mostrar si una variable no está definida. Por defecto, se muestra (none).

El comando

<!--# echo var="name" default="no" -->

equivale a la siguiente secuencia de comandos:

<!--# if expr="$name" --><!--# echo var="name" --><!--#
     else -->no<!--# endif -->

if#

Realiza una inclusión condicional. Se admiten los siguientes comandos:

<!--# if expr="..." -->
...
<!--# elif expr="..." -->
...
<!--# else -->
...
<!--# endif -->

Actualmente solo se admite un nivel de anidamiento. El comando tiene el siguiente parámetro:

expr#

expresión. Una expresión puede ser:

  • comprobación de existencia de variable:

<!--# if expr="$name" -->
  • comparación de una variable con un texto:

<!--# if expr="$name = text" -->
<!--# if expr="$name != text" -->
  • comparación de una variable con una expresión regular:

<!--# if expr="$name = /text/" -->
<!--# if expr="$name != /text/" -->

Si un text contiene variables, sus valores se sustituyen. Una expresión regular puede contener capturas posicionales y con nombre que luego pueden usarse a través de variables, por ejemplo:

<!--# if expr="$name = /(.+)@(?P<domain>.+)/" -->
  <!--# echo var="1" -->
  <!--# echo var="domain" -->
<!--# endif -->

include#

Incluye el resultado de otra petición en una respuesta. El comando tiene los siguientes parámetros:

file#

especifica un archivo incluido, por ejemplo:

<!--# include file="footer.html" -->

virtual#

especifica una petición incluida, por ejemplo:

<!--# include virtual="/remote/body.php?argument=value" -->

Varias peticiones especificadas en una página y procesadas por servidores proxied o FastCGI/uwsgi/SCGI/gRPC se ejecutan en paralelo. Si se desea un procesamiento secuencial, debe usarse el parámetro wait.

stub#

parámetro no estándar que nombra el bloque cuyo contenido se mostrará si la petición incluida resulta en un cuerpo vacío o si ocurre un error durante el procesamiento, por ejemplo:

<!--# block name="one" -->&nbsp;<!--# endblock -->
<!--# include virtual="/remote/body.php?argument=value" stub="one" -->

El contenido del bloque de reemplazo se procesa en el contexto de la petición incluida.

wait#

parámetro no estándar que indica esperar a que una petición se complete totalmente antes de continuar con el procesamiento SSI, por ejemplo:

<!--# include virtual="/remote/body.php?argument=value" wait="yes" -->

set#

parámetro no estándar que indica escribir un resultado exitoso del procesamiento de la petición en la variable especificada, por ejemplo:

<!--# include virtual="/remote/body.php?argument=value" set="one" -->

El tamaño máximo de la respuesta se establece con la directiva subrequest_output_buffer_size:

location /remote/ {
    subrequest_output_buffer_size 64k;
#    ...
}

set#

Establece el valor de una variable. El comando tiene los siguientes parámetros:

var#

nombre de la variable.

value#

valor de la variable. Si un valor asignado contiene variables, sus valores se sustituyen.

Variables Integradas#

$date_local#

hora actual en la zona horaria local. El formato se establece con el comando config con el parámetro timefmt.

$date_gmt#

hora actual en GMT. El formato se establece con el comando config con el parámetro timefmt.