SCGI#

Permite pasar solicitudes a un servidor SCGI.

Ejemplo de configuración#

location / {
    include   scgi_params;
    scgi_pass localhost:9000;
}

Directivas#

scgi_bind#

Sintaxis

scgi_bind address [transparent] | off;

Predeterminado

Contexto

http, server, location

Hace que las conexiones salientes a un servidor SCGI se originen desde la dirección IP local especificada con un puerto opcional. El valor del parámetro puede contener variables. El valor especial off cancela el efecto de la directiva scgi_bind heredada del nivel de configuración anterior, lo que permite al sistema asignar automáticamente la dirección IP local y el puerto.

El parámetro transparent permite que las conexiones salientes a un servidor SCGI se originen desde una dirección IP no local, por ejemplo, desde una dirección IP real de un cliente:

scgi_bind $remote_addr transparent;

Para que este parámetro funcione, normalmente es necesario ejecutar los procesos de trabajo de Angie con privilegios de superusuario. En Linux no es necesario, ya que si se especifica el parámetro transparent, los procesos de trabajo heredan la capacidad CAP_NET_RAW del proceso maestro.

Nota

Es necesario configurar la tabla de enrutamiento del kernel para interceptar el tráfico de red desde el servidor SCGI.

scgi_buffer_size#

Sintaxis

scgi_buffer_size size;

Predeterminado

scgi_buffer_size 4k|8k;

Contexto

http, server, location

Establece el tamaño del búfer utilizado para leer la primera parte de la respuesta recibida del servidor SCGI. Esta parte generalmente contiene una pequeña cabecera de respuesta. Por defecto, el tamaño del búfer es igual a una página de memoria. Esto es 4K u 8K, dependiendo de la plataforma. Sin embargo, puede hacerse más pequeño.

scgi_buffering#

Sintaxis

scgi_buffering on | off;

Predeterminado

scgi_buffering on;

Contexto

http, server, location

Habilita o deshabilita el almacenamiento en búfer de las respuestas del servidor SCGI.

on

Angie recibe una respuesta del servidor SCGI tan pronto como sea posible, guardándola en los búferes establecidos por las directivas scgi_buffer_size y scgi_buffers. Si toda la respuesta no cabe en memoria, una parte de ella puede guardarse en un archivo temporal en el disco. La escritura en archivos temporales está controlada por las directivas scgi_max_temp_file_size y scgi_temp_file_write_size.

off

La respuesta se pasa al cliente de forma sincrónica, inmediatamente a medida que se recibe. Angie no intentará leer toda la respuesta del servidor SCGI. El tamaño máximo de los datos que Angie puede recibir del servidor a la vez está establecido por la directiva scgi_buffer_size.

El almacenamiento en búfer también puede habilitarse o deshabilitarse pasando "yes" o "no" en el campo de cabecera de respuesta X-Accel-Buffering. Esta capacidad puede deshabilitarse usando la directiva scgi_ignore_headers.

scgi_buffers#

Sintaxis

scgi_buffers number size;

Predeterminado

scgi_buffers 8 4k | 8k;

Contexto

http, server, location

Establece el número y tamaño de los búferes utilizados para leer una respuesta del servidor SCGI, para una sola conexión.

Por defecto, el tamaño del búfer es igual a una página de memoria. Esto es 4K u 8K, dependiendo de la plataforma.

scgi_busy_buffers_size#

Sintaxis

scgi_busy_buffers_size size;

Predeterminado

scgi_busy_buffers_size 8k | 16k;

Contexto

http, server, location

Cuando el almacenamiento en búfer de respuestas del servidor SCGI está habilitado, limita el tamaño total de búferes que pueden estar ocupados enviando una respuesta al cliente mientras la respuesta aún no se ha leído completamente. Mientras tanto, el resto de los búferes pueden usarse para leer la respuesta y, si es necesario, almacenar parte de la respuesta en un archivo temporal.

Por defecto, el tamaño está limitado por el tamaño de dos búferes establecidos por las directivas scgi_buffer_size y scgi_buffers.

scgi_cache#

Sintaxis

scgi_cache zone | off;

Predeterminado

scgi_cache off;

Contexto

http, server, location

Define una zona de memoria compartida utilizada para el almacenamiento en caché. La misma zona puede usarse en varios lugares. El valor del parámetro puede contener variables.

off

deshabilita el almacenamiento en caché heredado del nivel de configuración anterior.

scgi_cache_background_update#

Sintaxis

scgi_cache_background_update on | off;

Predeterminado

scgi_cache_background_update off;

Contexto

http, server, location

Permite iniciar una subpetición en segundo plano para actualizar un elemento de caché expirado, mientras se devuelve una respuesta en caché obsoleta al cliente.

Advertencia

Tenga en cuenta que es necesario permitir el uso de una respuesta en caché obsoleta cuando se está actualizando.

scgi_cache_bypass#

Sintaxis

scgi_cache_bypass ...;

Predeterminado

Contexto

http, server, location

Define condiciones bajo las cuales la respuesta no se tomará de la caché. Si al menos un valor de los parámetros de cadena no está vacío y no es igual a "0", entonces la respuesta no se tomará de la caché:

scgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
scgi_cache_bypass $http_pragma    $http_authorization;

Puede usarse junto con la directiva scgi_no_cache.

scgi_cache_key#

Sintaxis

scgi_cache_key string;

Predeterminado

Contexto

http, server, location

Define una clave para el almacenamiento en caché, por ejemplo

scgi_cache_key localhost:9000$request_uri;

scgi_cache_lock#

Sintaxis

scgi_cache_lock on | off;

Predeterminado

scgi_cache_lock off;

Contexto

http, server, location

Cuando está habilitado, solo se permitirá que una petición a la vez llene un nuevo elemento de caché identificado según la directiva scgi_cache_key pasando una petición a un servidor SCGI. Otras peticiones del mismo elemento de caché esperarán a que aparezca una respuesta en la caché o a que se libere el bloqueo de caché para este elemento, hasta el tiempo establecido por la directiva scgi_cache_lock_timeout.

scgi_cache_lock_age#

Sintaxis

scgi_cache_lock_age time;

Predeterminado

scgi_cache_lock_age 5s;

Contexto

http, server, location

Si la última petición pasada al servidor SCGI para llenar un nuevo elemento de caché no se ha completado durante el tiempo especificado, se puede pasar una petición más al servidor SCGI.

scgi_cache_lock_timeout#

Sintaxis

scgi_cache_lock_timeout time;

Predeterminado

scgi_cache_lock_timeout 5s;

Contexto

http, server, location

Sets a timeout for scgi_cache_lock. When the time expires, the request will be passed to the SCGI server, however, the response will not be cached.

scgi_cache_max_range_offset#

Sintaxis

scgi_cache_max_range_offset number;

Predeterminado

Contexto

http, server, location

Establece un desplazamiento en bytes para las solicitudes de rango de bytes. Si el rango está fuera del desplazamiento, la solicitud de rango se pasará al servidor SCGI y la respuesta no se almacenará en caché.

scgi_cache_methods#

Sintaxis

scgi_cache_methods GET | HEAD | POST ...;

Predeterminado

scgi_cache_methods GET HEAD;

Contexto

http, server, location

Si el método de solicitud del cliente está listado en esta directiva, entonces la respuesta se almacenará en caché. Los métodos "GET" y "HEAD" siempre se agregan a la lista, aunque se recomienda especificarlos explícitamente. Véase también la directiva scgi_no_cache.

scgi_cache_min_uses#

Sintaxis

scgi_cache_min_uses number;

Predeterminado

scgi_cache_min_uses 1;

Contexto

http, server, location

Establece el número de solicitudes después del cual la respuesta se almacenará en caché.

scgi_cache_path#

Sintaxis

scgi_cache_path path [levels=levels] [use_temp_path=on | off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time];

Predeterminado

Contexto

http

Establece la ruta y otros parámetros de una caché. Los datos de la caché se almacenan en archivos. El nombre del archivo en una caché es el resultado de aplicar la función MD5 a la clave de caché.

El parámetro levels define niveles de jerarquía de una caché: de 1 a 3, cada nivel acepta valores 1 o 2. Por ejemplo, en la siguiente configuración:

scgi_cache_path /data/angie/cache levels=1:2 keys_zone=one:10m;

los nombres de archivo en una caché se verán así:

/data/angie/cache/c/29/b7f54b2df7773722d382f4809d65029c

Una respuesta almacenada en caché se escribe primero en un archivo temporal, y luego el archivo se renombra. Los archivos temporales y la caché pueden ubicarse en diferentes sistemas de archivos. Sin embargo, tenga en cuenta que en este caso un archivo se copia a través de dos sistemas de archivos en lugar de realizar la operación económica de renombrado. Por lo tanto, se recomienda que para cualquier ubicación dada tanto la caché como el directorio que contiene los archivos temporales se ubiquen en el mismo sistema de archivos.

El directorio para archivos temporales se establece según el parámetro use_temp_path.

on

Si este parámetro se omite o se establece en el valor on, se utilizará el directorio establecido por la directiva scgi_temp_path para la ubicación dada.

off

Los archivos temporales se colocarán directamente en el directorio de caché.

Además, todas las claves activas y la información sobre los datos se almacenan en una zona de memoria compartida, cuyo nombre y tamaño se configuran mediante el parámetro keys_zone. Una zona de un megabyte puede almacenar aproximadamente 8 mil claves.

Los datos en caché que no se acceden durante el tiempo especificado por el parámetro inactive se eliminan de la caché independientemente de su frescura.

Por defecto, inactive se establece en 10 minutos.

Un proceso especial de administrador de caché supervisa el tamaño máximo de la caché y la cantidad mínima de espacio libre en el sistema de archivos con caché y, cuando se excede el tamaño o no hay suficiente espacio libre, elimina los datos menos utilizados recientemente. Los datos se eliminan en iteraciones.

max_size

tamaño máximo de la caché

min_free

cantidad mínima de espacio libre en el sistema de archivos con caché

manager_files

limita el número de elementos a eliminar durante una iteración

Por defecto, 100

manager_threshold

limita la duración de una iteración

Por defecto, 200 milisegundos

manager_sleep

configura una pausa entre iteraciones

Por defecto, 50 milisegundos

Un minuto después de que Angie se inicia, se activa el proceso especial de cargador de caché. Carga en la zona de caché la información sobre los datos previamente almacenados en el sistema de archivos. La carga también se realiza en iteraciones.

loader_files

limita el número de elementos a cargar durante una iteración

Por defecto, 100

loader_threshold

limita la duración de una iteración

Por defecto, 200 milisegundos

loader_sleep

configura una pausa entre iteraciones

Por defecto, 50 milisegundos

scgi_cache_revalidate#

Sintaxis

scgi_cache_revalidate on | off;

Predeterminado

scgi_cache_revalidate off;

Contexto

http, server, location

Habilita la revalidación de elementos de caché expirados utilizando solicitudes condicionales con los campos de cabecera If-Modified-Since y If-None-Match.

scgi_cache_use_stale#

Sintaxis

scgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | http_429 | off ...;

Predeterminado

scgi_cache_use_stale off;

Contexto

http, server, location

Determina en qué casos se puede utilizar una respuesta en caché obsoleta. Los parámetros de la directiva coinciden con los parámetros de la directiva scgi_next_upstream.

error

permite usar una respuesta en caché obsoleta si no se puede seleccionar un servidor SCGI para procesar una solicitud.

updating

parámetro adicional, permite usar una respuesta en caché obsoleta si actualmente se está actualizando. Esto permite minimizar el número de accesos a los servidores SCGI al actualizar datos en caché.

El uso de una respuesta en caché obsoleta también puede habilitarse directamente en la cabecera de respuesta durante un número específico de segundos después de que la respuesta se volvió obsoleta:

  • La extensión stale-while-revalidate del campo de cabecera Cache-Control permite usar una respuesta en caché obsoleta si actualmente se está actualizando.

  • La extensión stale-if-error del campo de cabecera Cache-Control permite usar una respuesta en caché obsoleta en caso de error.

Nota

Esto tiene menor prioridad que el uso de los parámetros de la directiva.

Para minimizar el número de accesos a los servidores SCGI al poblar un nuevo elemento de caché, se puede usar la directiva scgi_cache_lock.

scgi_cache_valid#

Sintaxis

scgi_cache_valid [code ...] time;

Predeterminado

Contexto

http, server, location

Establece el tiempo de almacenamiento en caché para diferentes códigos de respuesta. Por ejemplo, las siguientes directivas

scgi_cache_valid 200 302 10m;
scgi_cache_valid 404      1m;

establecen 10 minutos de almacenamiento en caché para respuestas con códigos 200 y 302 y 1 minuto para respuestas con código 404.

Si solo se especifica el tiempo de almacenamiento en caché

scgi_cache_valid 5m;

entonces solo se almacenan en caché las respuestas 200, 301 y 302.

Además, se puede especificar el parámetro any para almacenar en caché cualquier respuesta:

scgi_cache_valid 200 302 10m;
scgi_cache_valid 301      1h;
scgi_cache_valid any      1m;

Nota

Los parámetros de almacenamiento en caché también se pueden establecer directamente en la cabecera de respuesta. Esto tiene mayor prioridad que el establecimiento del tiempo de almacenamiento en caché mediante la directiva.

  • El campo de cabecera X-Accel-Expires establece el tiempo de almacenamiento en caché de una respuesta en segundos. El valor cero deshabilita el almacenamiento en caché para una respuesta. Si el valor comienza con el prefijo @, establece un tiempo absoluto en segundos desde la Época, hasta el cual la respuesta puede ser almacenada en caché.

  • Si la cabecera no incluye el campo X-Accel-Expires, los parámetros de almacenamiento en caché pueden establecerse en los campos de cabecera Expires o Cache-Control.

  • Si la cabecera incluye el campo Set-Cookie, dicha respuesta no se almacenará en caché.

  • Si la cabecera incluye el campo Vary con el valor especial "*", dicha respuesta no se almacenará en caché. Si la cabecera incluye el campo Vary con otro valor, dicha respuesta se almacenará en caché teniendo en cuenta los campos de cabecera de solicitud correspondientes.

El procesamiento de uno o más de estos campos de cabecera de respuesta puede deshabilitarse mediante la directiva scgi_ignore_headers.

scgi_connect_timeout#

Sintaxis

scgi_connect_timeout time;

Predeterminado

scgi_connect_timeout 60s;

Contexto

http, server, location

Define un tiempo de espera para establecer una conexión con un servidor SCGI. Debe tenerse en cuenta que este tiempo de espera normalmente no puede exceder los 75 segundos.

scgi_connection_drop#

Sintaxis

scgi_connection_drop time | on | off;

Predeterminado

scgi_connection_drop off;

Contexto

http, server, location

Habilita la terminación de todas las conexiones al servidor proxy después de que haya sido eliminado del grupo o marcado como permanentemente no disponible por un proceso reresolve o el comando API DELETE.

Una conexión se termina cuando se procesa el siguiente evento de lectura o escritura para el cliente o el servidor proxy.

Establecer time habilita un tiempo de espera para la terminación de la conexión; con on establecido, las conexiones se descartan inmediatamente.

scgi_force_ranges#

Sintaxis

scgi_force_ranges on | off;

Predeterminado

scgi_force_ranges off;

Contexto

http, server, location

Habilita el soporte de rangos de bytes para respuestas almacenadas en caché y no almacenadas en caché del servidor SCGI, independientemente del campo Accept-Ranges en estas respuestas.

scgi_hide_header#

Sintaxis

scgi_hide_header field;

Predeterminado

Contexto

http, server, location

Por defecto, Angie no pasa los campos de cabecera Status y X-Accel-... de la respuesta de un servidor SCGI a un cliente. La directiva scgi_hide_header establece campos adicionales que no se pasarán. Si, por el contrario, se debe permitir el paso de campos, se puede usar la directiva scgi_pass_header.

scgi_ignore_client_abort#

Sintaxis

scgi_ignore_client_abort on | off;

Predeterminado

scgi_ignore_client_abort off;

Contexto

http, server, location

Determina si la conexión con un servidor SCGI debe cerrarse cuando un cliente cierra la conexión sin esperar una respuesta.

scgi_ignore_headers#

Sintaxis

scgi_ignore_headers field ...;

Predeterminado

Contexto

http, server, location

Desactiva el procesamiento de ciertos campos de cabecera de respuesta del servidor SCGI. Los siguientes campos pueden ser ignorados: X-Accel-Redirect, X-Accel-Expires, X-Accel-Limit-Rate, X-Accel-Buffering, X-Accel-Charset, Expires, Cache-Control, Set-Cookie, y Vary.

Si no se desactivan, el procesamiento de estos campos de cabecera tiene el siguiente efecto:

scgi_intercept_errors#

Sintaxis

scgi_intercept_errors on | off;

Predeterminado

scgi_intercept_errors off;

Contexto

http, server, location

Determina si las respuestas del servidor SCGI con códigos mayores o iguales a 300 deben pasarse al cliente o ser interceptadas y redirigidas a Angie para su procesamiento con la directiva error_page.

scgi_limit_rate#

Sintaxis

scgi_limit_rate rate;

Predeterminado

scgi_limit_rate 0;

Contexto

http, server, location

Limita la velocidad de lectura de la respuesta desde el servidor SCGI. La velocidad se especifica en bytes por segundo y puede contener variables.

0

desactiva la limitación de velocidad

Nota

El límite se establece por solicitud, por lo que si Angie abre simultáneamente dos conexiones al servidor SCGI, la velocidad general será el doble del límite especificado. La limitación funciona solo si el almacenamiento en búfer de respuestas del servidor SCGI está habilitado.

scgi_max_temp_file_size#

Sintaxis

scgi_max_temp_file_size size;

Predeterminado

scgi_max_temp_file_size 1024m;

Contexto

http, server, location

Cuando el almacenamiento en búfer de respuestas del servidor SCGI está habilitado, y la respuesta completa no cabe en los búferes establecidos por las directivas scgi_buffer_size y scgi_buffers, una parte de la respuesta puede guardarse en un archivo temporal. Esta directiva establece el tamaño máximo del archivo temporal. El tamaño de los datos escritos en el archivo temporal a la vez se establece mediante la directiva scgi_temp_file_write_size.

0

desactiva el almacenamiento en búfer de respuestas a archivos temporales

Nota

Esta restricción no se aplica a las respuestas que serán almacenadas en caché o guardadas en disco.

scgi_next_upstream#

Sintaxis

scgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off ...;

Predeterminado

scgi_next_upstream error timeout;

Contexto

http, server, location

Especifica en qué casos una solicitud debe pasarse al siguiente servidor:

error

se produjo un error al establecer una conexión con el servidor, al pasarle una solicitud o al leer la cabecera de respuesta;

timeout

se ha producido un tiempo de espera al establecer una conexión con el servidor, al pasarle una solicitud o al leer la cabecera de respuesta;

invalid_header

un servidor devolvió una respuesta vacía o no válida;

http_500

un servidor devolvió una respuesta con el código 500;

http_503

un servidor devolvió una respuesta con el código 503;

http_403

un servidor devolvió una respuesta con el código 403;

http_404

un servidor devolvió una respuesta con el código 404;

http_429

un servidor devolvió una respuesta con el código 429;

non_idempotent

normalmente, las solicitudes con un método no idempotente (POST, LOCK, PATCH) no se pasan al siguiente servidor si ya se ha enviado una solicitud a un servidor upstream; habilitar esta opción permite explícitamente reintentar tales solicitudes;

off

desactiva el paso de una solicitud al siguiente servidor.

Nota

Se debe tener en cuenta que pasar una solicitud al siguiente servidor solo es posible si aún no se ha enviado nada al cliente. Es decir, si se produce un error o tiempo de espera en medio de la transferencia de una respuesta, es imposible solucionarlo.

La directiva también define lo que se considera un intento fallido de comunicación con un servidor.

error

timeout

invalid_header

siempre se consideran intentos fallidos, incluso si no se especifican en la directiva

http_500

http_503

http_429

se consideran intentos fallidos solo si se especifican en la directiva

http_403

http_404

nunca se consideran intentos fallidos

El paso de una solicitud al siguiente servidor puede estar limitado por el número de intentos y por el tiempo.

scgi_next_upstream_timeout#

Sintaxis

scgi_next_upstream_timeout time;

Predeterminado

scgi_next_upstream_timeout 0;

Contexto

http, server, location

Limita el tiempo durante el cual una solicitud puede pasarse al siguiente servidor.

0

desactiva esta limitación

scgi_next_upstream_tries#

Sintaxis

scgi_next_upstream_tries number;

Predeterminado

scgi_next_upstream_tries 0;

Contexto

http, server, location

Limita el número de intentos posibles para pasar una solicitud al siguiente servidor.

0

desactiva esta limitación

scgi_no_cache#

Sintaxis

scgi_no_cache string ...;

Predeterminado

Contexto

http, server, location

Define las condiciones bajo las cuales la respuesta no se guardará en la caché. Si al menos un valor de los parámetros de cadena no está vacío y no es igual a "0", la respuesta no se guardará:

scgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
scgi_no_cache $http_pragma    $http_authorization;

Se puede usar junto con la directiva scgi_cache_bypass.

scgi_param#

Sintaxis

scgi_param parameter value [if_not_empty];

Predeterminado

Contexto

http, server, location

Establece un parámetro que debe pasarse al servidor SCGI. El valor puede contener texto, variables y su combinación. Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas scgi_param definidas en el nivel actual.

Las variables de entorno CGI estándar deben proporcionarse como cabeceras SCGI, consulte el archivo scgi_params proporcionado en la distribución:

location / {
    include scgi_params;
#    ...
}

Si la directiva se especifica con if_not_empty, dicho parámetro se pasará al servidor solo si su valor no está vacío:

scgi_param HTTPS $https if_not_empty;

scgi_pass#

Sintaxis

scgi_pass uri;

Predeterminado

Contexto

location, if in location

Establece la dirección de un servidor SCGI. La dirección puede especificarse como un nombre de dominio o dirección IP, y un puerto opcional:

scgi_pass localhost:9000;

o como una ruta de socket de dominio UNIX:

scgi_pass unix:/tmp/scgi.socket;

Si un nombre de dominio se resuelve a varias direcciones, todas se usarán de forma rotativa. Además, una dirección puede especificarse como un grupo de servidores.

El valor del parámetro puede contener variables. En este caso, si una dirección se especifica como un nombre de dominio, el nombre se busca entre los grupos de servidores descritos, y, si no se encuentra, se determina usando un resolver.

scgi_pass_header#

Sintaxis

scgi_pass_header field ...;

Predeterminado

Contexto

http, server, location

Permite pasar campos de cabecera deshabilitados de otra manera desde un servidor SCGI a un cliente.

scgi_pass_request_body#

Sintaxis

scgi_pass_request_body on | off;

Predeterminado

scgi_pass_request_body on;

Contexto

http, server, location

Indica si el cuerpo de la solicitud original se pasa al servidor SCGI. Véase también la directiva scgi_pass_request_headers.

scgi_pass_request_headers#

Sintaxis

scgi_pass_request_headers on | off;

Predeterminado

scgi_pass_request_headers on;

Contexto

http, server, location

Indica si los campos de cabecera de la solicitud original se pasan al servidor SCGI. Véase también la directiva scgi_pass_request_body.

scgi_read_timeout#

Sintaxis

scgi_read_timeout time;

Predeterminado

scgi_read_timeout 60s;

Contexto

http, server, location

Define un tiempo de espera para leer una respuesta del servidor SCGI. El tiempo de espera se establece solo entre dos operaciones de lectura sucesivas, no para la transmisión de toda la respuesta. Si el servidor SCGI no transmite nada dentro de este tiempo, la conexión se cierra.

scgi_request_buffering#

Sintaxis

scgi_request_buffering on | off;

Predeterminado

scgi_request_buffering on;

Contexto

http, server, location

Habilita o deshabilita el almacenamiento en búfer del cuerpo de la solicitud del cliente.

on

todo el cuerpo de la solicitud se lee del cliente antes de enviar la solicitud a un servidor SCGI.

off

el cuerpo de la solicitud se envía al servidor SCGI inmediatamente cuando se recibe. En este caso, la solicitud no puede pasarse al siguiente servidor si Angie ya comenzó a enviar el cuerpo de la solicitud.

Cuando se usa la codificación de transferencia fragmentada HTTP/1.1 para enviar el cuerpo de la solicitud original, el cuerpo de la solicitud se almacenará en búfer independientemente del valor de la directiva.

scgi_send_timeout#

Sintaxis

scgi_send_timeout time;

Predeterminado

scgi_send_timeout 60s;

Contexto

http, server, location

Establece un tiempo de espera para transmitir una solicitud al servidor SCGI. El tiempo de espera se establece solo entre dos operaciones de escritura sucesivas, no para la transmisión de toda la solicitud. Si el servidor SCGI no recibe nada dentro de este tiempo, la conexión se cierra.

scgi_socket_keepalive#

Sintaxis

scgi_socket_keepalive on | off;

Predeterminado

scgi_socket_keepalive off;

Contexto

http, server, location

Configura el comportamiento "TCP keepalive" para conexiones salientes a un servidor SCGI.

off

Por defecto, la configuración del sistema operativo está en efecto para el socket.

on

La opción de socket SO_KEEPALIVE se activa para el socket.

scgi_store#

Sintaxis

scgi_store on | off | string;

Predeterminado

scgi_store off;

Contexto

http, server, location

Habilita el guardado de archivos en un disco.

on

guarda archivos con rutas correspondientes a las directivas alias o root

off

deshabilita el guardado de archivos

El nombre del archivo puede establecerse explícitamente usando la string con variables:

scgi_store /data/www$original_uri;

La hora de modificación de los archivos se establece según el campo de cabecera de respuesta Last-Modified recibido. La respuesta se escribe primero en un archivo temporal, y luego el archivo se renombra. Los archivos temporales y el almacenamiento persistente pueden colocarse en diferentes sistemas de archivos. Sin embargo, tenga en cuenta que en este caso un archivo se copia a través de dos sistemas de archivos en lugar de la económica operación de renombrado. Por lo tanto, se recomienda que para cualquier ubicación dada, tanto los archivos guardados como el directorio que contiene archivos temporales, establecido por la directiva scgi_temp_path, se coloquen en el mismo sistema de archivos.

Esta directiva puede usarse para crear copias locales de archivos estáticos inmutables, por ejemplo:

location /images/ {
    root              /data/www;
    error_page        404 = /fetch$uri;
}

location /fetch/ {
    internal;

    scgi_pass         backend:9000;
    ...

    scgi_store        on;
    scgi_store_access user:rw group:rw all:r;
    scgi_temp_path    /data/temp;

    alias             /data/www/;
}

scgi_store_access#

Sintaxis

scgi_store_access users:permissions ...;

Predeterminado

scgi_store_access user:rw;

Contexto

http, server, location

Establece permisos de acceso para archivos y directorios recién creados, por ejemplo:

scgi_store_access user:rw group:rw all:r;

Si se especifican permisos de acceso para group o all, los permisos de usuario pueden omitirse:

scgi_store_access group:rw all:r;

scgi_temp_file_write_size#

Sintaxis

scgi_temp_file_write_size size;

Predeterminado

scgi_temp_file_write_size 8k|16k;

Contexto

http, server, location

Limita el tamaño de los datos escritos en un archivo temporal a la vez, cuando el almacenamiento en búfer de respuestas del servidor SCGI a archivos temporales está habilitado. Por defecto, el tamaño está limitado por dos búferes establecidos por las directivas scgi_buffer_size y scgi_buffers. El tamaño máximo de un archivo temporal se establece por la directiva scgi_max_temp_file_size.

scgi_temp_path#

Sintaxis

scgi_temp_path path [level1 [level2 [level3]]]`;

Predeterminado

scgi_temp_path scgi_temp; (la ruta depende de la --http-scgi-temp-path opción de compilación)

Contexto

http, server, location

Define un directorio para almacenar archivos temporales con datos recibidos de servidores SCGI. Se puede utilizar una jerarquía de subdirectorios de hasta tres niveles debajo del directorio especificado. Por ejemplo, en la siguiente configuración

scgi_temp_path /spool/angie/scgi_temp 1 2;

un archivo temporal podría verse así:

/spool/angie/scgi_temp/7/45/00000123457

Véase también el parámetro use_temp_path de la directiva scgi_cache_path.