Ayuda para IBM HTTP Server: Directivas FastCGI

Directivas FastCGI

FastCgiAccessChecker

La directiva FastCgiAccessChecker se utiliza para definir una aplicación FastCGI como un validador de acceso por directorios. La fase Acceso Apache precede a la autentificación del usuario y por ello la decisión de permitir o no el acceso al recurso solicitado se basa en las cabeceras HTTP sometidas con la petición. Los autorizadores basados en FastCGI son útiles en principio cuando hay un componente dinámico para la decisión de validación de acceso, como puede ser una hora del día o si un dominio está al corriente.

Si el nombre de archivo de la aplicación FastCGI no tiene la correspondiente definición de servidor externa ni estática, se arranca como aplicación FastCGI dinámica. Si el nombre de archivo no comienza por barra (/), se entiende que corresponde al ServerRoot.

FastCgiAccessChecker se utiliza en contenedores de Directorios o Ubicaciones.

<Directory htdocs/protected>
FastCgiAccessChecker fcgi-bin/access-checker
</Directory>

mod_fastcgi envía casi todas las variables de entorno estándar que normalmente están disponibles para los manejadores de peticiones de CGI/FastCGI. Todas las cabeceras devueltas por una aplicación de comprobación de acceso FastCGI en respuestas satisfactorias (estado: 200) se pasan a subprocesos (llamadas a CGI/FastCGI) como variables de entorno. Todas las cabeceras devueltas en respuestas no satisfactorias se pasan al cliente. El funcionamiento conforme a la especificación FastCGI puede obtenerse utilizando la opción "-compat".

mod_fastcgi establece la variable de entorno "FCGI_APACHE_ROLE" en "ACCESS_CHECKER" para indicar qué fase de autorizador (específica de Apache) se está realizando.

Aún no hay soporte para las respuestas erróneas personalizadas de las aplicaciones de autorización de FastCGI. Consule la directiva ErrorDocument para buscar información (una aplicación FastCGI puede servir el documento).

FastCgiAccessCheckerAuthoritative

Asignar Off (desactivado) explícitamente a la directiva FastCgiAccessCheckerAuthoritative, permite que la comprobación de acceso se pase a módulos de nivel inferior (según se defina en los archivos modules.c y de configuración) si la aplicación FastCGI no tiene éxito al permitir el acceso.

Por omisión, el control no se supera y una comprobación de acceso no superada dará como resultado una respuesta Forbidden. Hay que tener mucho cuidado a la hora de deshabilitar el valor por omisión.

FastCgiAuthenticator

La directiva FastCgiAuthenticator se utiliza para definir una aplicación FastCGI como un autentificador por directorio. Los autentificadores comprueban que el peticionario es quien dice ser, comparando el nombre de usuario y contraseña proporcionados con la lista o base de datos de los usuarios y contraseñas conocidas. Los autentificadores basados en FastCGI son útiles en principio cuando la base de datos del usuario está mantenida en un programa independiente existente o reside en una máquina que no sea el servidor web.

Si el nombre de archivo de la aplicación FastCGI no tiene la correspondiente definición de servidor externa ni estática, se arranca como aplicación FastCGI dinámica. Si el nombre de archivo no comienza por barra (/), se entiende que corresponde al ServerRoot.

FastCgiAuthenticator se utiliza en contenedores de Directorios o Ubicaciones y deben incluir una directiva AuthType y AuthName. Sólo hay soporte para el tipo de autentificación de usuario Basic. Para que funcione correctamente ha de ir acompañada por una solicitud o una directiva FastCgiAuthorizer.

<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
FastCgiAuthenticator fcgi-bin/authenticator
require valid-user
</Directory>

mod_fastcgi envía casi todas las variables de entorno estándar que normalmente están disponibles para los manejadores de peticiones CGI/FastCGI. Todas las cabeceras devueltas por una aplicación de autentificación FastCGI en respuestas satisfactorias (estado: 200) se pasan a subprocesos (llamadas a CGI/FastCGI) como variables de entorno. Todas las cabeceras devueltas en respuestas no satisfactorias se pasan al cliente. El comportamiento que sigue la especificación FastCGI se puede obtener utilizando la opción "-compat".

Mod_fastcgi establece la variable de entorno "FCGI_APACHE_ROLE" en "AUTHENTICATOR" para indicar la fase de autorización (específica de Apache) que se está realizando.

Aún no hay soporte para las respuestas erróneas personalizadas de las aplicaciones de autorización de FastCGI. Consulte la directiva ErrorDocument para buscar información (una aplicación FastCGI puede servir el documento).

FastCgiAuthenticatorAuthoritative

Asignar Off (desactivada) explícitamente a la directiva FastCgiAuthenticatorAuthoritative permite pasar la autentificación a módulos de nivel inferior (según esté definido en los archivos de Configuración y modules.c) si la aplicación FastCGI no autentifica al usuario.

Se suele utilizar junto con un AuthUserFile bien protegido que tenga pocos usuarios (relacionados con el administrador). 

Por omisión, el control no se supera y a un usuario desconocido se le responderá Authorization Required.  Hay que tener mucho cuidado al deshabilitar el valor por omisión.

FastCgiAuthorizer

La directiva FastCgiAuthorizer se utiliza para definir una aplicación FastCGI como autorizador por directorio.   Los autorizadores validan si un usuario autentificado tiene permiso para acceder al recurso solicitado.   Los autorizadores basados en FastCGI son útiles fundamentalmente cuando hay un componente dinámico para la decisión de autorización como una hora del día o si el usuario está al corriente de pago o no. 

Si el nombre de archivo de la aplicación FastCGI no tiene una definición de servidor externa o estática correspondiente, se arranca como una aplicación FastCGI dinámica.  Si el nombre de archivo no comienza por barra (/), se entiende que corresponde al ServerRoot.

FastCgiAuthorizer se utiliza en contenedores Directorio o Ubicación y deben incluir una directiva AuthType y AuthName. Ha de ir acompañado de una directiva de autentificación como FastCgiAuthenticator, AuthUserFile, AuthDBUserFile o AuthDBMUserFile para que funcione adecuadamente.

.

<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
AuthDBMUserFile conf/authentication-database
FastCgiAuthorizer fcgi-bin/authorizer
</Directory>

mod_fastcgi envía casi todas las variables de entorno estándar normalmente disponibles a manejadores de peticiones CGI/FastCGI.  Todas las cabeceras devueltas por una aplicación de autentificación FastCGI en respuestas satisfactorias (estado: 200) se pasan a subprocesos (llamadas a CGI/FastCGI) como variables de entorno.  Todas las cabeceras devueltas en respuestas no satisfactorias se pasan al cliente.  El comportamiento de la especificación FastCGI se puede obtener utilizando la opción "-compat".

Mod_fastcgi establece la variable de entorno "FCGI_APACHE_ROLE" en "AUTHORIZER" para indicar la fase de autorizador (concreta de Apache) que se está realizando.

Las respuestas de error personalizadas de las aplicaciones del autorizador FastCGI.no están soportadas.  Consulte la directiva ErrorDocument para buscar información (una aplicación FastCGI puede servir el documento).

FastCgiAuthorizerAuthoritative

Asignar Off (desactivada) explícitamente a la directiva FastCgiAuthenticatorAuthoritative permite pasar la autentificación a módulos de nivel inferior (según esté definido en los archivos de Configuración y modules.c) si la aplicación FastCGI no autentifica al usuario.

Se suele utilizar junto con un AuthUserFile bien protegido que tenga pocos usuarios (relacionados con el administrador). 

Por omisión, el control no se supera y a un usuario desconocido se le responderá Authorization Required.  Hay que tener mucho cuidado al deshabilitar el valor por omisión.

FastCgiConfig

La directiva FastCgiConfig define los parámetros por omisión de todas las aplicaciones FastCGI dinámicas. Esta directiva no afecta de ninguna manera a las aplicaciones externas o estáticas.

Las aplicaciones dinámicas no se arrancan al iniciar el servidor, sino que hay que solicitarlas. Si la demanda es fuerte, se arrancan instancias adicionales de la aplicación. A medida que disminuye la demanda, las instancias de aplicaciones se van cerrando. Muchas de las opciones controlan este proceso.

Opción puede ser alguna de las siguientes (indistintamente en may/min):

appConnTimeout n (0 segundos)
Segundos que hay que esperar para que se complete la conexión a la aplicación FastCGI o 0 para indicar que ha de utilizarse un connect() de bloqueo.  Si transcurre el tiempo indicado, se producirá un   SERVER_ERROR.  Para valores distintos de cero, es el tiempo utilizado en un select() para escribir en el descriptor de archivo devuelto por la función connect() no de bloqueo.  Las funciones connect() que no son de bloqueo son problemáticas en algunas plataformas.  Consulte también -idle-timeout, que genera resultados parecidos pero de una forma más transportable.
idle-timeout n (30 segundos)
Segundos de inactividad permitidos de una aplicación FastCGI antes de cancelar la petición y de registrar el suceso (en el error LogLevel).  El tiempo de inactividad se aplica sólo mientras se mantiene una conexión con la aplicación FastCGI.  Si una petición se pone en cola de una aplicación, pero la aplicación no responde (escribiendo ni desechando) en este periodo, la petición se cancelará.  Si se completa la comunicación con la aplicación pero no con el cliente (la respuesta va a un almacenamiento intermedio), no se aplica el tiempo de espera.
autoUpdate none
Esta opción hace que mod_fastcgi compruebe la antigüedad de la aplicación en el disco antes de procesar cada petición.  Si la aplicación es más reciente, se notifica al gestor del proceso y se cierran todas las instancias en ejecución de la aplicación.  En general, es preferible que este tipo de funcionalidad esté incorporado en la aplicación (p.e. cada 100 peticiones, comprueba si hay una versión más reciente en el disco y, si la hay, la cierra).   Eventualmente puede haber algún problema (error) cuando se utiliza esta opción con -restart.
gainValue n (0,5)
Valor de coma flotante, comprendido entre 0 y 1, que se utiliza como exponente en los cálculos del factor de carga de tiempo de conexión exponencialmente decreciente de las aplicaciones FastCGI dinámicas que se estén ejecutando en ese momento.  Los valores antiguos se escalan mediante (1 - gainValue), asignándoles una ponderación menor en comparación con el valor actual, que se escala según gainValue.
initial-env name[=valor] none
Pareja nombre-valor que se pasa en el entorno inicial cuando se generan instancias de la aplicación.  Para pasar una variable procedente del entorno Apache, no incluya "=" (si la variable no está realmente en el entorno, se definirá sin valor alguno).  Para definir una variable sin valor concreto, incluya "=" pero sin poner valor alguno.  Esta opción se puede utilizar repetidas veces.
init-start-delay n (1 segundo)
Número mínimo de segundos entre la generación de instancias de esta aplicación.   Este retardo disminuye la demanda que haya en el sistema al inicializar el servidor.
killInterval n (300 segundos)
killInterval determina la frecuencia con que se implanta la política de cancelación de instancias de aplicaciones dinámicas en el gestor de proceso.  Un número bajo indica una política agresiva, y un número alto, una política menos agresiva.
listen-queue-depth n (100)
Longitud de la cola de listen() (también denominada registro de peticiones) compartida por todas las instancias de esta aplicación.  Una cola de escucha (listen) más larga permite al servidor hacer frente a fluctuaciones de carga transitorias sin tener que rechazar peticiones; no aumenta la capacidad de proceso.   La adición de más instancias de la aplicación puede aumentar el rendimiento o la capacidad de proceso, dependiendo de la aplicación y del sistema principal.
maxClassProcesses n (10)
Número máximo de instancias de aplicación FastCGI dinámica que se permite ejecutar para cada aplicación FastCGI.
maxProcesses n (50)
Número máximo total de instancias de aplicación FastCGI dinámica que se permite ejecutar en cualquier momento.
minProcesses n (5)
Número mínimo de instancias de aplicación FastCGI dinámica que se permite ejecutar cada vez sin que sean canceladas por el gestor de procesos (por falta de demanda).
multiThreshhold n (50)
Entero entre 0 y 100 utilizado para determinar si ha de terminarse cualquier instancia de aplicación FastCGI.  Si la aplicación tiene más de una instancia actualmente en ejecución, este atributo se utilizará para decidir si ha de terminar alguna de ellas.  Si sólo queda una instancia, se utilizará singleThreshhold en su lugar.
pass-header header none
Nombre de cabecera de petición HTTP que se va a pasar en el entorno de solicitud.  Esta opción hace que esté disponible el contenido de las cabeceras que normalmente no lo está (p.ej. Autorización) para un entorno CGI.
priority n (0)
Prioridad del proceso que se asigna a las instancias de aplicación (utilizando setpriority()).
processSlack n (5 segundos)
Si la suma de todas las aplicaciones FastCGI dinámicas en ejecución sobrepasa maxProcesses - processSlack, el gestor de procesos invoca la política de cancelación.  Esto se hace para aumentar el rendimiento en cargas mayores, cancelando algunas de las   instancias de aplicación menos activas antes de alcanzar el valor de maxProcesses.
restart none
Esta opción hace que el gestor de procesos rearranque aplicaciones dinámicas en situación de error (de forma parecida a aplicaciones estáticas).
restart-delay n (5 segundos)
Segundos mínimos que transcurren entre la nueva generación de instancias erróneas de esta aplicación   Este retardo evita que una aplicación interrumpida consuma demasiados recursos del sistema.
singleThreshhold n (0)
Valor entero entre 0 y 100 que se utiliza para determinar si la última instancia de una aplicación FastCGI puede finalizarse.  Si el factor de carga calculado del gestor de procesos para la aplicación es menor que el umbral especificado, se finaliza la última instancia.   Para hacer que sus archivos ejecutables funcionen en modalidad "idle" (desocupado) durante un periodo largo de tiempo, tendría que especificar un valor cercano a 1. No obstante, si la memoria o el tiempo de CPU son de vital importancia, sería más aplicable un valor cercano a 100.  Un valor de 0 evitaría que se finalizara la última instancia de una aplicación; es el valor por omisión, y no se recomienda modificarlo (especialmente si está establecido -appConnTimeout).
startDelay n (3 segundos)
Segundos que el servidor web espera mientras se intenta conectar a una aplicación FastCGI dinámica.  Si transcurre el intervalo, el gestor de proceso recibe notificación con la intención de que arranque otra instancia de la aplicación.  Para que sea efectivo, startDelay ha de ser menor que appConnTimeout.
updateInterval n  (300 segundos)
UpdateInterval establece la frecuencia con que se realizan análisis estadísticos para determinar el destino de las aplicaciones FastCGI dinámicas.

FastCgiExternalServer

appConnTimeout n (0 segundos)
Segundos que hay que esperar para que se complete la conexión a la aplicación FastCGI o 0 para indicar que ha de utilizarse un connect() de bloqueo.  Si transcurre el tiempo indicado, se producirá un   SERVER_ERROR.  Para valores distintos de cero, es el tiempo utilizado en un select() para escribir en el descriptor de archivo devuelto por la función connect() no de bloqueo.  Las funciones connect() que no son de bloqueo son problemáticas en algunas plataformas.  Consulte también -idle-timeout, que genera resultados parecidos pero de una forma más transportable.
idle-timeout n (30 segundos)
Segundos de inactividad permitidos de una aplicación FastCGI antes de cancelar la petición y de registrar el suceso (en el error LogLevel).  El tiempo de inactividad se aplica sólo mientras se mantiene una conexión con la aplicación FastCGI.  Si una petición se pone en cola de una aplicación, pero la aplicación no responde (escribiendo ni desechando) en este periodo, la petición se cancelará.  Si se completa la comunicación con la aplicación pero no con el cliente (la respuesta va a un almacenamiento intermedio), no se aplica el tiempo de espera.
flush none
Provoca que se escriba en el cliente tal como se reciben datos de la aplicación.  Por omisión, mod_fastcgi envía datos a almacenamiento intermedio para liberar la aplicación tan rápido como sea posible.
host nombreSistPral:puerto none
Nombre de sistema principal o dirección IP y número de puerto TCP (1-65535) que utiliza la aplicación para la comunicación con el servidor web. Las opciones -socket y -host son mutuamente excluyentes.
Pass-header cabecera none
Nombre de cabecera de petición HTTP que se va a pasar en el entorno de solicitud.  Esta opción hace que esté disponible el contenido de las cabeceras que normalmente no lo está (p.ej. Autorización) para un entorno CGI.
socket nombrearchivo none
UNIX: Nombre de archivo del socket de dominio UNIX que utiliza la aplicación para la comunicación con el servidor web.  El nombre de archivo corresponde al directorio FastCgiIpcDir.  Las opciones -socket y -port son mutuamente excluyentes.
Windows NT:  Nombre del conducto denominado que utiliza la aplicación para la comunicación con el servidor web. El nombre corresponde al directorio FastCgiIpcDir.  Las opciones -socket y -port son mutuamente excluyentes.

FastCgiIpcDir

UNIX: La directiva FastCgiIpcDir especifica directory como el lugar en el que almacenar (y buscar, en el caso de aplicaciones FastCGI externas) los archivos socket de UNIX utilizados para la comunicación entre las aplicaciones y el servidor web. Si el directorio no comienza por barra (/), se entiende que corresponde a ServerRoot. Si el directorio no existe, se intentará crear con los permisos correspondientes. No especifique un directorio que no esté en un sistema de archivos local. Si utiliza el directorio por omisión (u otro dentro de /tmp), mod_fastcgi dejará de funcionar si el sistema elimina periódicamente los archivos de /tmp.

Windows NT: La directiva FastCgiIpcDir especifica name como raíz para los conductos denominados utilizados en la comunicación entre la aplicación y el servidor web. naame debe tener el formato \\.\pipe\pipename. La parte pipename puede contener cualquier carácter salvo la barra invertida.

La directiva FastCgiIpcDir debe predecer a cualquier directiva FastCgiServer o FastCgiExternalServer (que utilizan sockets UNIX). El servidor web debe poder leer, escribir y ejecutar (hacer búsquedas) en el directorio, porque de lo contrario nadie podría acceder al mismo.

FastCgiServer

La directiva FastCgiServer define nombrearchivo como una aplicación FastCGI estática. Si el nombre de archivo no comienza por barra (/), se entiende que es relativo a ServerRoot.

Por omisión, el Gestor de procesos arrancará una instancia de la aplicación con la configuración por omisión especificada (entre paréntesis) más abajo. Si una instancia de aplicación estática desapareciera por cualquier causa, mod_fastcgi generaría otra para sustituirla y anotaría el suceso (en el aviso LogLevel).

Opción puede ser alguna de las siguientes (indistintamente en may/min):

appConnTimeoutn (0 segundos)
Segundos que hay que esperar para que se complete la conexión a la aplicación FastCGI o 0 para indicar que ha de utilizarse un connect() de bloqueo.  Si transcurre el tiempo indicado, se producirá un   SERVER_ERROR.  Para valores distintos de cero, es el tiempo utilizado en un select() para escribir en el descriptor de archivo devuelto por la función connect() no de bloqueo.  Las funciones connect() que no son de bloqueo son problemáticas en algunas plataformas.  Consulte también -idle-timeout, que genera resultados parecidos pero de una forma más transportable.
idle-timeout n (30 segundos)
Segundos de inactividad permitidos de una aplicación FastCGI antes de cancelar la petición y de registrar el suceso (en el error LogLevel).  El tiempo de inactividad se aplica sólo mientras se mantiene una conexión con la aplicación FastCGI.  Si una petición se pone en cola de una aplicación, pero la aplicación no responde (escribiendo ni desechando) en este periodo, la petición se cancelará.  Si se completa la comunicación con la aplicación pero no con el cliente (la respuesta va a un almacenamiento intermedio), no se aplica el tiempo de espera.
initial-env name[=valor] none] none
Pareja nombre-valor que se pasa al entorno   inicial de la aplicación FastCGI.  Para pasar una variable desde el entorno Apache, no incluya "=" (si la variable no está en el entorno, se definirá sin valor alguno).  Para definir una variable sin valor concreto, incluya "=" pero sin poner valor alguno.  Esta opción se puede utilizar repetidas veces.
init-start-delay n(1 segundo)
Número mínimo de segundos entre la generación de instancias de esta aplicación.   Este retardo disminuye la demanda que haya en el sistema al inicializar el servidor.
Flush none
Provoca que se escriba en el cliente tal como se reciben datos de la aplicación.  Por omisión, mod_fastcgi envía datos a almacenamiento intermedio para liberar la aplicación tan rápido como sea posible.
Listen-queue-depth n (100)
Longitud de la cola de listen() (también denominada registro de peticiones) compartida por todas las instancias de esta aplicación.  Una cola de escucha (listen) más larga permite al servidor hacer frente a fluctuaciones de carga transitorias sin tener que rechazar peticiones; no aumenta la capacidad de proceso.   La adición de más instancias de la aplicación puede aumentar el rendimiento o la capacidad de proceso, dependiendo de la aplicación y del sistema principal.
Pass-header cabecera none
Nombre de cabecera de petición HTTP que se va a pasar en el entorno de solicitud.  Esta opción hace que esté disponible el contenido de las cabeceras que normalmente no lo está (p.ej. Autorización) para un entorno CGI.
processes n (1)
Número de instancias de la aplicación que han de generarse al iniciarse el servidor.
Priority n (0)
Prioridad del proceso que se asigna a las instancias de aplicación (utilizando setpriority()).
port n none
Número de puerto TCP (1-65535) que utilizará la aplicación para la comunicación con el servidor web.  Esta opción hace que se pueda acceder a la aplicación desde otras máquinas de la red (así como desde esta misma).  Las opciones -socket y -port son mutuamente excluyentes.
Restart-delay n (5 segundos)
Segundos mínimos que transcurren entre la nueva generación de instancias erróneas de esta aplicación   Este retardo evita que una aplicación interrumpida consuma demasiados recursos del sistema.
Socket nombrearchivo (gen'd)
UNIX: Nombre de archivo del socket de dominio de UNIX que utilizará la aplicación para la comunicación con el servidor web.  El módulo crea el socket en el directorio especificado por FastCgiIpcDir.  Esta opción hace que otras aplicaciones puedan acceder a la aplicación (p.e. cgi-fcgi) en la misma máquina o a través de una definición de aplicación FastCGI externa (FastCgiExternalServer).  Si no se proporcionan ni la opción -socket ni -port, el módulo genera un nombre de archivo socket de dominio de UNIX.  Las opciones -socket y -port son mutuamente excluyentes.
Windows NT: Nombre del conducto denominado que utilizará la aplicación en la comunicación con el servidor web.  El módulo crea el conducto denominado fuera de la raíz de conducto denominado especificado por FastCgiIpcDir. . Esta opción hace que otras aplicaciones puedan acceder a la aplicación (p.e. cgi-fcgi) en la misma máquina o a través de una definición de aplicación FastCGI externa (FastCgiExternalServer).  Si no se proporcionan las opciones -socket ni -port, el módulo genera un nombre para el conducto denominado.  Las opciones -socket y -port son mutuamente excluyentes.

 

FastCgiSuexec

La directiva FastCgiSuexec se utiliza para habilitar soporte para un suexec-wrapper.  FastCgiSuexec necesita que suexec esté habilitado en Apache (para CGI).  Para utilizar el mismo suexec-wrapper que utiliza Apache, establezca FastCgiSuexec en On.  Para utilizar un suexec-wrapper distinto, especifique el nombre de archivo del suexec-wrapper.  Si el nombre de archivo no comienza por barra (/) se supone que es relativo al directorio ServerRoot.

Cuando FastCgiSuexec está habilitado, la ubicación de las definiciones de aplicaciones FastCGI externas o estáticas es importante.  Heredan el grupo y usuario de las directivas User y Group del servidor virtual en las que fueron definidas.  Las directivas User y Group deben preceder a las definiciones de aplicación FastCGI.   Hay que tener en cuenta que esto no limita la aplicación FastCGI al servidor virtual en el que fue definida. A la aplicación se le permite dar servicio a las peticiones desde cualquier servidor virtual con el mismo grupo y usuario.  Si se recibe una petición para una aplicación FastCGI sin que haya una definición existente coincidente en ejecución con el usuario y grupo correctos, se arranca una instancia de la aplicación con el grupo y usuario correctos.   Esto puede desembocar en múltiples copias de la misma aplicación ejecutándose con distinto usuario/grupo.  Si supusiera un problema, anule el acceso de navegación a la aplicación desde otros servidores virtuales o configure los servidores virtuales con el mismo usuario y grupo.

Consulte la documentación de Apache para obtener más información sobre suexec (asegúrese de comprender totalmente las implicaciones en cuestiones de seguridad).

Información relacionada