Módulo HTTP#
El módulo HTTP principal implementa la funcionalidad básica de un servidor HTTP: esto incluye la definición de bloques de servidor, la configuración de ubicaciones para el enrutamiento de solicitudes, la entrega de archivos estáticos y el control de acceso, la configuración de redirecciones, el soporte de conexiones keep-alive y la gestión de cabeceras de solicitud y respuesta.
Los demás módulos de esta sección amplían esta funcionalidad, permitiendo configurar y optimizar de forma flexible el servidor HTTP para distintos escenarios y requisitos.
Cuando se compila desde el código fuente, el servidor
HTTP y sus módulos se compilan por defecto; pueden deshabilitarse por
completo con la opción de compilación
--without-http.
En paquetes e imágenes de nuestros repositorios,
el servidor HTTP está incluido en la compilación. Predeterminado http, server, location Si está deshabilitada, las redirecciones emitidas por Angie serán relativas. Véase también las directivas server_name_in_redirect y port_in_redirect. Activa o desactiva el uso de operaciones de E/S de archivos asíncronas (AIO) en FreeBSD y Linux: En FreeBSD, AIO puede usarse a partir de FreeBSD 4.3. Antes de FreeBSD 11.0,
AIO podía enlazarse estáticamente en el núcleo: o cargarse dinámicamente como un módulo del núcleo: En Linux, AIO puede usarse desde la versión 2.6.22 del núcleo. Además, es necesario habilitar directio, de lo contrario la lectura será bloqueante: En Linux, directio solo puede usarse para leer bloques alineados en
fronteras de 512 bytes (o 4K en XFS). El final de un archivo no alineado se lee
en modo bloqueante. Lo mismo se aplica a las solicitudes de rango de bytes y a
las solicitudes FLV que no empiezan desde el inicio del archivo: la lectura de
datos no alineados al principio y al final de un archivo será bloqueante. Cuando AIO y sendfile están habilitados simultáneamente en Linux, AIO se
usa para los archivos cuyo tamaño es mayor o igual al especificado en la
directiva directio, mientras que sendfile se usa para archivos más
pequeños o cuando directio está deshabilitado: Finalmente, los archivos pueden leerse y enviarse usando
multihilo, sin bloquear un proceso worker: Las operaciones de lectura y envío de archivos se delegan a los hilos del
pool especificado. Si se omite el nombre del pool, se usa
el pool llamado "default". El nombre del pool también puede definirse mediante
variables: Usar Actualmente, el multihilo solo es compatible con los métodos epoll, kqueue y eventport. El envío
multihilo de archivos solo está soportado en Linux. Véase también la directiva sendfile. Si aio está habilitado, especifica si se utiliza para la escritura de archivos. Actualmente, esto solo funciona cuando se usa Define un reemplazo para la ubicación especificada. Por ejemplo, con la siguiente configuración: al solicitar El valor path puede contener variables, excepto $document_root y $realpath_root. Si Cuando la ubicación coincide con la última parte del valor de la directiva: es mejor usar la directiva root en su lugar: Advertencia Con Retrasa el procesamiento de las solicitudes no autorizadas con el código de respuesta 401 para prevenir ataques de temporización cuando el acceso está limitado por contraseña o por el resultado de una subsolicitud. Predeterminado http, server, location Controla el comportamiento de la redirección cuando
una ubicación con prefijo termina en una barra inclinada: Aquí, una solicitud a El valor Predeterminado http, server, location Permite desactivar la codificación de transferencia fragmentada (chunked) en HTTP/1.1. Puede resultar útil cuando se utiliza software que no admite esta codificación a pesar de ser un requisito del estándar. Added in version 1.10.0. Crea un contexto especial El contexto El contexto enviar solicitudes a la autoridad de certificación en el módulo
ACME mediante la ubicación predefinida solicitudes a la API de Docker en el módulo Docker mediante las
ubicaciones predefinidas sondas de salud de servidores proxificados mediante upstream_probe (PRO); modo sticky learn con El soporte para múltiples bloques Las directivas especificadas en cada bloque Ejemplo de uso de múltiples bloques Nota Aquí se permiten las mismas directivas que en bloques Las directivas que operan en otras
etapas de procesamiento de la solicitud
(como limit_req, auth_request,
try_files, filtros de imagen, XSLT, etc.)
no funcionan aquí. Predeterminado http, server, location Define el tamaño del búfer para leer el cuerpo de la solicitud del cliente. Si el cuerpo de la solicitud es mayor que el búfer, el cuerpo completo o solo una parte se escribe en un archivo temporal. Por defecto, el tamaño del búfer equivale a dos páginas de memoria. En x86, otras plataformas de 32 bits y x86-64, esto es 8K. En otras plataformas de 64 bits, normalmente es 16K. Predeterminado http, server, location Determina si se guarda el cuerpo completo de la solicitud del cliente en un archivo. Esta directiva puede usarse durante la depuración, o cuando se utiliza la variable $request_body_file o el método $r->request_body_file del módulo Perl. los archivos temporales no se eliminan después de procesar la solicitud permite eliminar los archivos temporales tras procesar la solicitud Predeterminado http, server, location Determina si se guarda el cuerpo completo de la solicitud del cliente en un solo búfer. La directiva se recomienda cuando se usa la variable $request_body para reducir el número de operaciones de copia implicadas. Predeterminado http, server, location Define un directorio para almacenar archivos temporales con cuerpos de solicitudes de clientes. Se puede usar hasta una jerarquía de subdirectorios de tres niveles bajo el directorio especificado. Por ejemplo, en la siguiente configuración la ruta de un archivo temporal podría ser: Predeterminado http, server, location Define un tiempo de espera para leer el cuerpo de la solicitud del cliente. El tiempo de espera se establece solo entre dos operaciones de lectura sucesivas, no para la transmisión completa del cuerpo de la solicitud. Si un cliente no transmite nada dentro de este tiempo, la solicitud finaliza con el error 408 (Request Time-out). Predeterminado http, server Define el tamaño del búfer para leer la cabecera de la solicitud del cliente. Para la mayoría de las solicitudes, un búfer de 1K es suficiente. Sin embargo, si la solicitud incluye cookies largas o proviene de un cliente WAP, podría no caber en 1K. Si la línea de solicitud o un campo de cabecera no caben en este búfer, se asignan búferes más grandes, configurados mediante la directiva large_client_header_buffers. Si la directiva se especifica en el nivel server, puede usarse el valor del servidor por defecto. Véase la sección Selección de servidor virtual para más detalles. Define un tiempo de espera para leer la cabecera de la solicitud del cliente. Si un cliente no transmite la cabecera completa dentro de este tiempo, la solicitud finaliza con el error 408 (Request Time-out). Predeterminado http, server, location Define el tamaño máximo permitido para el cuerpo de la solicitud del cliente. Si el tamaño en una solicitud excede el valor configurado, se devuelve al cliente el error 413 (Request Entity Too Large). Ten en cuenta que los navegadores no pueden mostrar correctamente este error. desactiva la comprobación del tamaño del cuerpo de la solicitud del cliente Predeterminado http, server Permite ajustar con precisión las asignaciones de memoria por conexión. Esta directiva tiene un impacto mínimo en el rendimiento y generalmente no debería usarse. Por defecto: en plataformas de 32 bits en plataformas de 64 bits Define el tipo MIME predeterminado de una respuesta. El mapeo de extensiones de nombre de archivo a tipos MIME puede establecerse con la directiva types. Habilita el uso de la bandera o cuando se usa aio en Linux. Predeterminado http, server, location Define la alineación para directio. En la mayoría de los casos, una alineación de 512 bytes es suficiente. Sin embargo, al usar XFS en Linux, debe aumentarse a 4K. Predeterminado http, server, location Determina cómo deben tratarse los enlaces simbólicos al abrir archivos: Se permiten enlaces simbólicos en la ruta y no se comprueban. Este es el comportamiento predeterminado. Si algún componente de la ruta es un enlace simbólico, se deniega el acceso al archivo. Se deniega el acceso al archivo si algún componente de la ruta es un enlace simbólico y el enlace y el objeto al que apunta tienen propietarios diferentes. Al comprobar enlaces simbólicos (parámetros Ejemplo: Esta directiva solo está disponible en sistemas que tengan las interfaces Advertencia Los parámetros En los sistemas que no admiten abrir directorios solo para búsqueda, el uso de estos parámetros requiere que los procesos worker tengan permisos de lectura en todos los directorios que se verifiquen. Nota Los módulos AutoIndex, Random Index y DAV actualmente ignoran esta directiva. Define las condiciones bajo las cuales se pasará al cliente la respuesta "103 Early Hints". La respuesta puede ser devuelta por backends proxificados y gRPC. Si al menos un valor de los parámetros string no está vacío y no es igual a Los valores de los parámetros pueden contener variables. Added in version 1.12.0. Añade una etiqueta a los registros de error_log de cada solicitud. El
value puede contener variables, por lo que la
etiqueta puede variar de una solicitud a otra; una etiqueta con valor vacío no
se añade. La directiva puede especificarse varias veces para añadir varias
etiquetas. Estas directivas se heredan del nivel de configuración anterior si
y solo si en el nivel actual no hay directivas Las etiquetas aparecen, como la lista Predeterminado — http, server, location, if in location Define el URI que se mostrará para los errores especificados. El valor uri puede usar variables. Ejemplo: Esto provoca una redirección interna al uri especificado, cambiando el método de la solicitud del cliente a "GET" (para todos los métodos distintos de "GET" y "HEAD"). Además, es posible cambiar el código de respuesta a otro usando la sintaxis Si una respuesta de error es procesada por un servidor proxificado o un servidor FastCGI/uwsgi/SCGI/gRPC, y el servidor puede devolver distintos códigos de respuesta (p. ej., 200, 302, 401 o 404), es posible pasar el código que devuelva: Si no es necesario cambiar el URI y el método durante la redirección interna, es posible delegar el procesamiento del error a un Nota Si ocurre un error durante el procesamiento del uri, se devuelve al cliente la respuesta con el código del último error ocurrido. También es posible usar redirecciones URL para el manejo de errores: En este caso, por defecto, se devuelve al cliente el código de respuesta 302. Solo puede cambiarse a uno de los códigos de redirección (301, 302, 303, 307 y 308). Activa o desactiva la generación automática del campo de cabecera de respuesta Proporciona el contexto de archivo de configuración en el que se especifican las directivas del servidor HTTP. Predeterminado http, server, location Especifica cómo comparar la fecha de modificación de una respuesta con la fecha del campo de cabecera la respuesta siempre se considera modificada coincidencia exacta la fecha de modificación de la respuesta es menor o igual que la fecha en el campo de cabecera Predeterminado http, server Controla si Angie ignora los campos de cabecera con nombres no válidos. Los nombres válidos están compuestos por letras en inglés, dígitos, guiones y, posiblemente, guiones bajos (según lo controle la directiva underscores_in_headers). Si la directiva se especifica en el nivel server, puede usarse el valor del servidor predeterminado. Especifica que un solicitudes redirigidas por las directivas error_page, index, random_index y try_files; solicitudes redirigidas por el campo de cabecera de respuesta subsolicitudes formadas por el comando solicitudes modificadas por la directiva rewrite; solicitudes redirigidas por la directiva goto. Ejemplo: Dado que el error 404 se devuelve en el contexto de un Aquí, una solicitud externa Nota Hay un límite de 10 redirecciones internas por solicitud para prevenir ciclos de procesamiento de solicitudes que pueden ocurrir en configuraciones incorrectas. Si se alcanza este límite, se devuelve el error 500 (Internal Server Error). En tales casos, puede verse el mensaje Predeterminado http, server, location Desactiva las conexiones keep-alive con navegadores que se comportan mal. Los parámetros browser especifican qué navegadores se verán afectados. activa las conexiones keep-alive con todos los navegadores desactiva las conexiones keep-alive con versiones antiguas de MSIE, una vez que se recibe una solicitud POST desactiva las conexiones keep-alive con Safari y navegadores similares a Safari en macOS y sistemas operativos similares a macOS Predeterminado http, server, location Define el número máximo de solicitudes que pueden servirse a través de una sola conexión keep-alive. Una vez alcanzado el número máximo de solicitudes, la conexión se cierra. El cierre periódico de conexiones es necesario para liberar asignaciones de memoria por conexión. Por lo tanto, usar un número máximo demasiado alto de solicitudes puede provocar un uso excesivo de memoria y no se recomienda. Limita el tiempo máximo durante el cual pueden procesarse solicitudes a través de una misma conexión keep-alive. Una vez alcanzado este tiempo, la conexión se cierra tras procesar la solicitud siguiente. Predeterminado http, server, location timeout define un tiempo de espera durante el cual una conexión keep-alive del cliente permanecerá abierta en el lado del servidor desactiva las conexiones keep-alive de clientes El segundo parámetro, opcional, establece un valor en el campo de cabecera de respuesta El campo de cabecera Nota Esta directiva se aplica a las conexiones de clientes. El tiempo de espera
para las conexiones inactivas a los servidores upstream proxeados lo
establece por separado keepalive_timeout en el bloque upstream. Predeterminado http, server Define el número máximo y el tamaño de los búferes usados para leer cabeceras grandes de solicitudes de clientes. Una línea de solicitud no puede exceder el tamaño de un búfer, o se devuelve al cliente el error 414 (Request-URI Too Large). Un campo de cabecera tampoco puede exceder el tamaño de un búfer, o se devuelve el error 400 (Bad Request). Los búferes se asignan solo bajo demanda. Por defecto, el tamaño del búfer es de 8K bytes. Si, tras finalizar el procesamiento de la solicitud, una conexión pasa al estado keep-alive, estos búferes se liberan. Si la directiva se especifica en el nivel server, puede usarse el valor del servidor por defecto. Limita los métodos HTTP permitidos dentro de una ubicación. El parámetro method puede ser uno de los
siguientes: Nota La restricción en este ejemplo se aplica a todos los métodos
excepto Limita la velocidad de transmisión de la respuesta hacia un cliente. La velocidad se especifica en bytes por segundo. El valor cero desactiva la limitación de velocidad. El límite se aplica por solicitud; por lo tanto, si un cliente abre dos conexiones simultáneamente, la velocidad total será el doble del límite especificado. El valor del parámetro puede contener variables. Esto puede ser útil en casos donde la velocidad deba limitarse en función de una condición determinada: El límite de velocidad también puede establecerse en la variable $limit_rate, aunque este método no se recomienda: El límite de velocidad también puede establecerse en el campo de cabecera Predeterminado http, server, location, if in location Define la cantidad inicial después de la cual la transmisión de una respuesta al cliente será limitada en velocidad. El valor del parámetro puede contener variables. Ejemplo: Predeterminado http, server, location Controla cómo Angie cierra las conexiones de clientes. instruye a Angie a esperar y procesar datos adicionales de un cliente antes de cerrar completamente una conexión, pero solo si la heurística sugiere que un cliente puede estar enviando más datos. Angie siempre esperará y procesará datos adicionales del cliente. Angie no esperará más datos y cerrará la conexión inmediatamente. Este comportamiento rompe el protocolo y no debe usarse en circunstancias normales. Para controlar el cierre de conexiones HTTP/2, la directiva debe especificarse en el nivel server. Cuando lingering_close está activo, esta directiva especifica el tiempo máximo durante el cual Angie procesará (leerá e ignorará) datos adicionales provenientes de un cliente. Después de eso, la conexión se cerrará, incluso si hay más datos. Cuando lingering_close está activo, esta directiva especifica el tiempo máximo
de espera para que lleguen más datos del cliente. Si no se reciben datos durante
este tiempo, la conexión se cierra. De lo contrario, los datos se leen e ignoran,
y Angie comienza a esperar más datos nuevamente. El ciclo "esperar-leer-ignorar" se
repite, pero no más tiempo del especificado por la directiva lingering_time. Durante el apagado gradual, las conexiones keepalive de clientes se cierran solo cuando
han estado inactivas durante al menos el tiempo especificado en Nota En nginx, la directiva análoga se llama keepalive_min_timeout. Predeterminado server Define la address y el port para el socket de escucha, o la ruta de un socket de dominio UNIX donde el servidor aceptará solicitudes. Una address también puede ser un nombre de host, por ejemplo: Las direcciones IPv6 se especifican entre corchetes: Los rangos de puertos se indican con el primer y último puerto separados por un guion: Los sockets de dominio UNIX se especifican con el prefijo Pueden especificarse tanto address como port, o solo address o solo port.
Cuando se omiten algunas partes, se aplican las siguientes reglas: Si solo se da la address, se usa el puerto 80. Si solo se da el port,
Angie escucha en todas las interfaces IPv4 disponibles (y también IPv6, si está habilitado).
El primer bloque Si la directiva se omite por completo, Angie usa El servidor con este parámetro especificado
será el servidor por defecto para el par address:port dado
(juntos forman un socket de escucha). Si no hay directivas con el parámetro Esta designación por defecto se aplica únicamente a las conexiones que
coinciden con ese par; véase
Selección de un servidor por dirección y puerto para saber
cómo Angie hace coincidir una conexión con un par. indica que todas las conexiones aceptadas en este socket de escucha deben funcionar en modo SSL. Esto permite una configuración más compacta para el servidor que maneja tanto solicitudes HTTP como HTTPS. configura el puerto para aceptar conexiones HTTP/2. Normalmente, para que esto funcione debe especificarse también el parámetro Obsoleto desde la versión 1.2.0: Usa en su lugar la directiva http2. configura el puerto para aceptar conexiones QUIC.
Para usar esta opción,
Angie debe tener el módulo HTTP/3
habilitado y configurado.
Con indica que todas las conexiones aceptadas en este socket de escucha deben usar el protocolo PROXY. La directiva establece la tabla de enrutamiento, FIB (la opción habilita "TCP Fast Open" para el socket de escucha y limita la longitud máxima de la cola de conexiones que aún no han completado el protocolo de enlace de tres vías. Advertencia No habilites "TCP Fast Open" a menos que el servidor pueda manejar la recepción del mismo paquete SYN con datos más de una vez. establece el parámetro establece el tamaño del búfer de recepción (la opción establece el tamaño del búfer de envío (la opción establece el nombre del filtro de aceptación (la opción indica que se use un hace una llamada determina (mediante la opción de socket indica que se cree un socket de escucha individual para
cada proceso worker (usando la opción de socket Advertencia El uso inapropiado del parámetro habilita la aceptación de conexiones mediante Multipath TCP (MPTCP),
soportado en el kernel de Linux desde la versión 5.6.
Este parámetro es incompatible con configura el comportamiento de "TCP keepalive" para el socket de escucha. si se omite este parámetro, la configuración del sistema operativo estará en efecto para el socket la opción la opción Algunos sistemas operativos soportan el establecimiento de parámetros TCP keepalive por
socket usando las opciones de socket establecerá el tiempo de espera de inactividad ( Ejemplo: Establece la configuración en función de si el URI de la solicitud coincide
con alguna de las expresiones de coincidencia. La coincidencia se realiza contra un URI normalizado (el valor de $uri), después de decodificar
el texto codificado en formato "%XX", resolver las referencias a componentes de ruta
relativa "." y "..", y la posible compresión de dos o más
barras adyacentes en una sola barra. Un Las expresiones regulares se especifican con el modificador precedente: Coincidencia sin distinción de mayúsculas y minúsculas Coincidencia con distinción de mayúsculas y minúsculas Para encontrar una ubicación que coincida con una solicitud, Angie primero comprueba las
ubicaciones definidas con cadenas de prefijo (ubicaciones de prefijo). Entre ellas, se selecciona
y recuerda la ubicación con el prefijo de coincidencia más largo. Nota Para sistemas operativos sin distinción de mayúsculas y minúsculas como macOS, la coincidencia de cadenas de prefijo
es insensible a mayúsculas y minúsculas.
Sin embargo, la coincidencia se limita a locales de un solo byte. Después se comprueban las expresiones regulares en el orden en que aparecen en el
archivo de configuración. La búsqueda se detiene tras la primera coincidencia, y se utiliza la
configuración correspondiente. Si no se encuentra coincidencia con una expresión regular, entonces se
usa la configuración de la ubicación de prefijo recordada anteriormente. Con algunas excepciones mencionadas más abajo,
los bloques Las expresiones regulares pueden crear grupos de captura
que pueden usarse posteriormente con otras directivas. Si la ubicación de prefijo de coincidencia más larga tiene el modificador También, usando el modificador Una vez seleccionado el Ejemplo: Una solicitud una solicitud una solicitud una solicitud y una solicitud Nota Si un Con un El prefijo Varios contextos Supongamos que las configuraciones A, D y E del ejemplo anterior
definen configuraciones idénticas; puedes combinarlas en un único Un Advertencia Un Nota Actualmente, un Activa o desactiva el registro de errores sobre archivos no encontrados en error_log. Activa o desactiva el registro de subsolicitudes en access_log. Define el número máximo de campos de cabecera de solicitud del cliente permitidos.
Si se excede este límite, se devuelve un error Cuando esta directiva se establece en el nivel server,
puede aplicarse el valor del servidor por defecto.
Para más información, consulta la sección Selección de servidor virtual. Limita el número máximo permitido de rangos en solicitudes con byte-range. Las solicitudes que exceden el límite se procesan como si no hubieran especificado rangos de bytes. Por defecto, el número de rangos no está limitado. desactiva completamente el soporte de byte-range Activa o desactiva la compresión de dos o más barras consecutivas en un URI en una sola barra. Ten en cuenta que la compresión es esencial para la coincidencia correcta de ubicaciones de cadena de prefijo y expresiones regulares. Sin ella, la solicitud y podría procesarse como un archivo estático. Así se convierte en Desactivar la compresión puede ser necesario si un URI contiene nombres codificados en base64, ya que base64 utiliza el carácter "/" internamente. Sin embargo, por motivos de seguridad, es mejor evitar desactivar la compresión. Si la directiva se especifica en el nivel server, puede usarse el valor del servidor por defecto. Activa o desactiva la adición de comentarios a respuestas para clientes MSIE con estado superior a 400 para aumentar el tamaño de la respuesta a 512 bytes. Activa o desactiva la emisión de actualizaciones en lugar de redirecciones para clientes MSIE. Predeterminado http, server, location Configura una caché que puede almacenar: descriptores de archivos abiertos, sus tamaños y tiempos de modificación; información sobre existencia de directorios; errores de búsqueda de archivos, como "archivo no encontrado", "sin permiso de lectura", etc. El almacenamiento en caché de errores debe activarse por separado mediante la directiva open_file_cache_errors. define el número máximo de elementos en la caché; en caso de desbordamiento de la caché se eliminan los elementos menos utilizados recientemente (LRU) define un tiempo tras el cual un elemento se elimina de la caché si no ha sido accedido durante este tiempo; por defecto, 60 segundos desactiva la caché Ejemplo: Predeterminado http, server, location Activa o desactiva el almacenamiento en caché de errores de búsqueda de archivos mediante open_file_cache. Predeterminado http, server, location Activa el uso de eventos del kernel para validar los elementos de open_file_cache. Esta directiva solo funciona con el método kqueue. Ten en cuenta que solo NetBSD 2.0+ y FreeBSD 6.0+ admiten eventos para tipos de sistemas de archivos arbitrarios; otros sistemas operativos solo admiten eventos para sistemas de archivos esenciales como UFS o FFS. Predeterminado http, server, location Define el número mínimo de accesos a archivos durante el período configurado por el parámetro Predeterminado http, server, location Define un tiempo tras el cual los elementos de open_file_cache deben ser validados. Predeterminado http, server, location Define el número y tamaño de los búferes usados para leer una respuesta desde disco. Activa o desactiva la especificación del puerto en redirecciones absolutas emitidas por Angie. El uso del nombre de servidor principal en redirecciones se controla mediante la directiva server_name_in_redirect. Si es posible, la transmisión de datos del cliente se pospondrá hasta que Angie tenga al menos el número especificado de bytes para enviar. desactiva el aplazamiento de transmisión de datos Define la cantidad de lectura anticipada para el kernel al trabajar con archivos. En Linux se utiliza la llamada al sistema En FreeBSD se utiliza la llamada al sistema Predeterminado http, server, location Activa o desactiva la realización de varias redirecciones usando la directiva error_page. El número de estas redirecciones está limitado. Permite ajustar con precisión las asignaciones de memoria por solicitud. Esta directiva tiene un impacto mínimo en el rendimiento y generalmente no debería usarse. Predeterminado http, server, location Activa o desactiva el reseteo de conexiones que expiran por timeout y de conexiones cerradas con el código no estándar 444. El reseteo se realiza de la siguiente manera. Antes de cerrar un socket, se establece la opción Nota Las conexiones keep-alive se cierran normalmente cuando expiran. Predeterminado http, server, location, upstream Configura los servidores de nombres usados para resolver los nombres de servidores upstream en direcciones, por ejemplo: La dirección puede especificarse como nombre de dominio o dirección IP, con un puerto opcional. Si no se especifica el puerto, se utiliza el puerto 53. Los servidores de nombres se consultan en modo round-robin. Debe especificarse al menos una dirección de servidor DNS o el parámetro
Nota Se recomienda usar un resolver local de confianza, como Nota El valor de la directiva se hereda en bloques anidados
y puede sobrescribirse en ellos si es necesario.
Dentro de un mismo bloque, la directiva solo puede especificarse una vez;
repetirla constituye un error de configuración. Activa la resolución de nombres DNS para servidores upstream referenciados mediante variables o configurados con el parámetro resolve, así como para el cliente ACME y el grapado OCSP. Además de direcciones de servidor explícitas, la directiva reconoce: desactiva explícitamente la resolución de nombres DNS lee direcciones de servidor DNS desde el archivo especificado, o desde
El archivo puede contener líneas Las direcciones leídas del archivo se añaden a cualquier dirección especificada explícitamente en la directiva, y todas ellas se consultan después conjuntamente en modo round-robin. Si el archivo no existe, no puede leerse o no enumera ninguna dirección, y no hay ninguna configurada explícitamente, Angie recurre al servidor predeterminado En tiempo de ejecución, Angie vuelve a leer el archivo cuando cambia, actualizando el conjunto de servidores DNS. Por defecto, Angie almacena en caché cada respuesta durante el período de vigencia del valor TTL en la respuesta DNS. El parámetro opcional parámetro opcional que permite sobrescribir el período de validez de la caché de respuestas Por defecto, Angie buscará tanto direcciones IPv4 como IPv6 al resolver. desactiva la búsqueda de direcciones IPv4 desactiva la búsqueda de direcciones IPv6 parámetro opcional;
activa la recopilación de métricas de solicitudes y respuestas
de los servidores DNS en la zona especificada, exponiéndolas en
/status/resolvers/<zone>, la pestaña
«DNS Resolvers» y la salida de
Prometheus. Sin él, estas métricas no se recopilan
y no se registra ninguna advertencia Truco Para prevenir ataques de suplantación DNS,
se recomienda usar servidores DNS en una red local de confianza
y debidamente securizada. Truco Al ejecutar en Docker,
usa la dirección del servidor DNS interno correspondiente,
como Predeterminado http, server, location, upstream Define un tiempo de espera para la resolución de nombres, por ejemplo: Define el directorio raíz para las solicitudes. Por ejemplo, con la siguiente configuración: El archivo El valor path puede contener variables, excepto $document_root y $realpath_root. La ruta al archivo se construye simplemente añadiendo el URI al valor de la directiva root. Si el URI debe modificarse, debe usarse la directiva alias. La barra final del valor path se elimina, ya que el URI se añade con su propia barra inicial. Permite el acceso si todos ( Si la directiva se define con un valor distinto de cero, Angie intentará minimizar el número de operaciones de envío en los sockets de cliente, usando bien la bandera Define un tiempo de espera para la transmisión de una respuesta al cliente. El tiempo se aplica únicamente entre dos operaciones de escritura consecutivas, no a la transmisión completa de la respuesta. Si el cliente no recibe nada en este intervalo, la conexión se cierra. Activa o desactiva el uso de aio puede usarse para precargar datos para En esta configuración, Predeterminado http, server, location Limita la cantidad de datos que pueden transferirse en una sola llamada a Define la configuración para un servidor virtual. No hay una separación estricta entre servidores virtuales basados en IP (basados en la dirección IP) y basados en nombre (basados en la cabecera de solicitud "Host"). En su lugar, las directivas listen describen todas las direcciones y puertos que deben aceptar conexiones para el servidor, y la directiva server_name lista todos los nombres de servidor. Se pueden encontrar ejemplos de configuración en el documento Cómo procesa Angie una solicitud. Define los nombres de un servidor virtual, por ejemplo: El primer nombre se convierte en el nombre principal del servidor. Los nombres de servidor pueden incluir un asterisco ("*") sustituyendo la primera o última parte de un nombre: Tales nombres se denominan nombres comodín. Los dos primeros nombres del ejemplo anterior pueden combinarse en uno: También es posible usar expresiones regulares en los nombres de servidor, precediendo el nombre con una virgulilla ("~"): Las expresiones regulares pueden contener capturas que luego pueden usarse en otras directivas: Los grupos de captura con nombre en expresiones regulares crean variables que luego pueden usarse en otras directivas: Nota Si el parámetro de la directiva se define como $hostname,
se utiliza el nombre de la máquina. También puede especificarse un nombre de servidor vacío: Al buscar un servidor virtual por nombre,
si el nombre coincide con más de una de las variantes especificadas
(por ejemplo, tanto un nombre comodín como una expresión regular coinciden),
se elegirá la primera variante coincidente, en el siguiente orden de prioridad: nombre exacto; nombre comodín más largo que comience con un asterisco, p. ej. nombre comodín más largo que termine con un asterisco, p. ej. primera expresión regular coincidente (en orden de aparición en el archivo de configuración),
incluyendo un nombre vacío. Advertencia Para usar Predeterminado http, server, location Activa o desactiva el uso del nombre de servidor principal, especificado por la directiva server_name, en redirecciones absolutas emitidas por Angie. se usa el nombre de servidor principal definido por la directiva server_name se usa el nombre del campo de cabecera de solicitud "Host". Si este campo no está presente, se usa la dirección IP del servidor. El uso del puerto en las redirecciones se controla mediante la directiva port_in_redirect. Predeterminado http Define el tamaño de bloque (bucket size) para las tablas hash de nombres de servidor. El valor por defecto depende del tamaño de la línea de caché del procesador. Los detalles sobre la configuración de tablas hash se describen en un documento separado. Define el tamaño máximo de las tablas hash de nombres de servidor. Los detalles sobre la configuración de tablas hash se describen en un documento separado. Predeterminado http, server, location Activa o desactiva la inclusión de la versión de Angie
en las páginas de error y en el campo de cabecera de respuesta El parámetro En Angie PRO, si la directiva define una string, que también puede contener variables,
las páginas de error y el campo de cabecera de respuesta Predeterminado — server, location, if in location Reserva una zona de memoria compartida para recopilar
las métricas de /status/http/location_zones/<zone> y /status/http/server_zones/<zone>. En un bloque server, la directiva define una zona de servidor;
en un bloque location o en un bloque if dentro de una location,
define una zona de location.
Cómo cuenta las solicitudes cada tipo de zona
y qué hace el valor especial La sintaxis con un único valor zone
combina todas las métricas del contexto actual en una sola zona de memoria compartida: La sintaxis alternativa permite definir los siguientes parámetros: key Una cadena con variables, cuyo valor determina la agrupación de las solicitudes en
la zona. Todas las solicitudes que produzcan valores idénticos tras la sustitución
se agrupan juntas. Si la sustitución produce un valor vacío,
las métricas no se actualizan. zone El nombre de la zona de memoria compartida. number El número máximo de grupos separados para recopilar métricas.
Si nuevos valores de key superan este límite, se agrupan bajo Obligatorio, salvo que otra directiva En el siguiente ejemplo,
todas las solicitudes que compartan el mismo valor de De este modo, las métricas resultantes se dividen entre hosts individuales en la salida de la API. Nota Estas métricas solo se recopilan cuando Una solicitud se cuenta en la zona de servidor de su servidor, si este la tiene,
y en la zona de location de su location, si esta la tiene.
Cuando están definidas ambas zonas, sus métricas se solapan:
sumadas, cuentan la solicitud dos veces. Los dos tipos de zonas son independientes:
una zona de servidor y una zona de location pueden tener el mismo nombre sin entrar en conflicto.
Varios bloques Una location anidada o un bloque El valor especial En el siguiente ejemplo, el comentario de cada location
indica las zonas que cuentan una solicitud para el URI mostrado: Una zona de servidor cuenta una solicitud en cuanto se ha leído la cabecera de la solicitud,
antes de elegir una location.
Contar tan pronto es lo que permite a una zona de servidor
informar de las solicitudes en curso ( Como la key de la zona de servidor se evalúa cuando se ha leído la cabecera
de la solicitud, solo puede usar valores ya conocidos en ese momento,
como $request_uri o los campos de la cabecera de la solicitud;
una variable que recibe su valor más tarde, por ejemplo mediante set,
sigue vacía.
Una solicitud cuya clave está vacía no se cuenta en la zona,
de modo que se pueden mantener solicitudes fuera de una zona de servidor por su clave,
pero no por su location.
Aquí, un map vacía la clave de las solicitudes a Una zona de location cuenta una solicitud solo cuando esta se completa,
y la key de la zona se evalúa en ese momento,
por lo que también puede usar valores que la solicitud obtiene durante su procesamiento,
como las variables de set.
La solicitud se cuenta para la location donde termina su procesamiento:
si el procesamiento pasa a otra location,
por ejemplo mediante try_files o error_page,
la zona de la location final cuenta la solicitud,
y no la zona de la location elegida primero. Solo se cuentan las solicitudes de los clientes:
las subsolicitudes, como las que realizan auth_request o mirror,
no se cuentan en ninguna zona. Predeterminado http, server, location Define el tamaño del búfer usado para almacenar el cuerpo de la respuesta de una subsolicitud.
Por defecto, el tamaño del búfer es igual a una página de memoria. Esto corresponde a
Nota La directiva es aplicable solo a subsolicitudes cuyos cuerpos de respuesta se guardan en memoria. Por ejemplo, tales subsolicitudes son creadas por SSI. Activa o desactiva el uso de la opción Activa o desactiva el uso de la opción de socket enviar la cabecera de respuesta y el inicio de un archivo en un único paquete, en Linux y FreeBSD 4.*; enviar un archivo en paquetes completos. Added in version 1.12.0. Define una $variable para contener la hora local actual, renderizada con una
cadena format personalizada compuesta por especificadores de tipo
Con el formato anterior, El nombre de la variable no debe coincidir con el de una variable integrada que no
pueda modificarse con set, como $time_local, y cada
nombre solo puede definirse con un único La cadena format acepta los siguientes especificadores, evaluados en la
misma zona horaria local que $time_local: año de 4 dígitos año de 2 dígitos mes, día del mes, día del mes, rellenado con espacios, hora, hora, minuto, segundo, milisegundos, nombre abreviado del día de la semana, nombre completo del día de la semana, nombre abreviado del mes, nombre completo del mes, desplazamiento de zona horaria, desplazamiento de zona horaria, estilo ISO 8601, salto de línea tabulación Nota Un especificador no reconocido se copia tal cual en la salida, incluido el
Verifica la existencia de archivos en el orden especificado y utiliza el primer archivo encontrado para procesar la solicitud; el procesamiento se realiza en el contexto del location actual. La ruta a un archivo se construye a partir del parámetro file según las directivas root y alias. Es posible verificar la existencia de un directorio añadiendo una barra al final del nombre, por ejemplo Los parámetros file y uri pueden contener variables. Por ejemplo: El último parámetro puede ser un URI para una redirección interna,
una referencia a un Debe tenerse en cuenta que el uso excesivo de la directiva Por tanto, Además, Primero, verifica la existencia de cada archivo,
lo que incrementa la carga del sistema. Segundo, cualquier error al abrir archivos (por ejemplo, Así, en la práctica, puede encontrarse la siguiente construcción problemática: El problema aquí es que el único propósito es la redirección.
Usar En contraste, en el siguiente ejemplo: La directiva Predeterminado http, server, location Asocia extensiones de nombre de archivo con tipos MIME de las respuestas. Las extensiones no distinguen entre mayúsculas y minúsculas. Varias extensiones pueden asignarse a un mismo tipo, por ejemplo: Una tabla de asignación suficientemente completa se distribuye con Angie y se encuentra en el archivo Para hacer que un Predeterminado http, server, location Define el tamaño de bloque para las tablas hash de tipos. Los detalles de la configuración de tablas hash se tratan por separado. Predeterminado http, server, location Define el tamaño máximo de las tablas hash de tipos. Los detalles de la configuración de tablas hash se tratan por separado. Predeterminado http, server Activa o desactiva el uso de guiones bajos en los campos de cabecera de las solicitudes de cliente. Cuando el uso de guiones bajos está desactivado, los campos de cabecera de solicitud cuyos nombres contengan guiones bajos se marcan como inválidos y quedan sujetos a la directiva ignore_invalid_headers. Si la directiva se especifica en el nivel server, puede usarse el valor del servidor por defecto. Define el tamaño de bloque para la tabla hash de variables. Los detalles de la configuración de tablas hash se tratan por separado. Define el tamaño máximo de la tabla hash de variables. Los detalles de la configuración de tablas hash se tratan por separado. El módulo Versión de Angie argumento name en la línea de solicitud argumentos en la línea de solicitud dirección del cliente en forma binaria; la longitud del valor es siempre de 4 bytes para direcciones IPv4 o 16 bytes para direcciones IPv6 número de bytes enviados al cliente, sin contar la cabecera de la respuesta; esta variable es compatible con el parámetro "%B" del módulo Apache número de bytes enviados a un cliente número de serie de la conexión número actual de solicitudes realizadas a través de una conexión tiempo de la conexión en segundos con resolución en milisegundos campo de cabecera campo de cabecera valor de las directivas root o alias para la solicitud actual igual que $uri en este orden de precedencia: nombre de host de la línea de solicitud, o nombre de host del campo de cabecera "Host", o el nombre de servidor que coincide con la solicitud nombre del host campo de cabecera arbitrario de la solicitud; la última parte del nombre de la variable corresponde al nombre del campo convertido a minúsculas con guiones sustituidos por guiones bajos En las solicitudes HTTP/3, configurar esta variable habilita la limitación de la velocidad de respuesta; véase limit_rate hora actual en segundos con resolución en milisegundos versión de nginx PID del proceso trabajador dirección del cliente desde la cabecera del protocolo PROXY El protocolo PROXY debe habilitarse previamente configurando el parámetro puerto del cliente desde la cabecera del protocolo PROXY El protocolo PROXY debe habilitarse previamente configurando el parámetro dirección del servidor desde la cabecera del protocolo PROXY El protocolo PROXY debe habilitarse previamente configurando el parámetro puerto del servidor desde la cabecera del protocolo PROXY El protocolo PROXY debe habilitarse previamente configurando el parámetro TLV desde la cabecera del protocolo PROXY. El name puede ser un nombre de tipo TLV o su valor numérico. En este último caso, el valor es hexadecimal y debe ir precedido de Los TLV SSL también pueden accederse mediante el nombre del tipo TLV o su valor numérico, ambos precedidos por Se admiten los siguientes nombres de tipo TLV: Se admiten los siguientes nombres de tipo TLV SSL: Además, se admite el siguiente nombre especial de tipo TLV SSL: El protocolo PROXY debe habilitarse previamente configurando el parámetro igual que $args ruta absoluta correspondiente al valor de las directivas root o alias para la solicitud actual, con todos los enlaces simbólicos resueltos a rutas reales dirección del cliente puerto del cliente nombre de usuario suministrado mediante autenticación básica línea de solicitud original completa cuerpo de la solicitud El valor de la variable está disponible en las ubicaciones procesadas por las directivas proxy_pass, fastcgi_pass, uwsgi_pass y scgi_pass cuando el cuerpo de la solicitud se ha leído en un búfer de memoria. nombre de un archivo temporal con el cuerpo de la solicitud Al final del procesamiento, el archivo debe eliminarse. Para escribir siempre el cuerpo de la solicitud en un archivo, habilita client_body_in_file_only. Cuando se pasa el nombre de un archivo temporal en una solicitud proxy o en una solicitud a un servidor FastCGI/uwsgi/SCGI, el envío del cuerpo de la solicitud debe deshabilitarse con las directivas proxy_pass_request_body off, fastcgi_pass_request_body off, uwsgi_pass_request_body off o scgi_pass_request_body off respectivamente. ruta del archivo para la solicitud actual, basada en las directivas root o alias y en el URI de la solicitud identificador único de la solicitud generado a partir de 16 bytes aleatorios, en hexadecimal longitud de la solicitud en bytes (incluyendo línea de solicitud, cabeceras y cuerpo de la solicitud) método de la solicitud, normalmente en este orden de precedencia: número de puerto del componente de autoridad del URI de la solicitud, o número de puerto del campo de cabecera "Host" tiempo de procesamiento de la solicitud en segundos con resolución en milisegundos; tiempo transcurrido desde que se leyeron los primeros bytes del cliente URI original completo de la solicitud (con argumentos), nunca modificado durante el procesamiento de la solicitud; véase $uri para el URI actual (potencialmente reescrito) esquema de la solicitud, "http" o "https" Added in version 1.11.0. cuerpo de la respuesta de una subsolicitud o solicitud externa cuando se almacena en memoria;
en caso contrario, una cadena vacía campo de cabecera arbitrario de la respuesta; la última parte del nombre de la variable corresponde al nombre del campo convertido a minúsculas con guiones sustituidos por guiones bajos campo arbitrario enviado al final de la respuesta; la última parte del nombre de la variable corresponde al nombre del campo convertido a minúsculas con guiones sustituidos por guiones bajos Dirección del servidor que aceptó la solicitud. El cálculo del valor de la variable normalmente requiere una llamada al sistema. Para evitar una llamada al sistema, las directivas listen deben especificar direcciones y usar el parámetro nombre del servidor que aceptó una solicitud puerto del servidor que aceptó una solicitud protocolo de la solicitud, normalmente "HTTP/1.0", "HTTP/1.1" o "HTTP/2.0" estado de la respuesta información sobre la conexión TCP del cliente; disponible en sistemas que admiten la opción de socket hora local en formato estándar ISO 8601 hora local en formato Common Log Format URI actual en la solicitud, normalizado El valor de Directivas#
absolute_redirect#
absolute_redirect on | off;absolute_redirect on;aio#
location /video/ {
aio on;
output_buffers 1 64k;
}
options VFS_AIO
kldload aio
location /video/ {
aio on;
directio 512;
output_buffers 1 128k;
}
location /video/ {
sendfile on;
aio on;
directio 8m;
}
location /video/ {
sendfile on;
aio threads;
}
aio threads=pool$disk;
aio on requiere compilar con el parámetro de configuración
--with-file-aio. Usar aio threads requiere compilar con el
parámetro --with-threads.aio_write#
aio threads y está limitado a la escritura de archivos temporales con datos recibidos de servidores proxificados.alias#
location /i/ {
alias /data/w3/images/;
}
/i/top.gif, se enviará el archivo /data/w3/images/top.gif.alias se usa dentro de una ubicación definida con una expresión regular, dicha expresión debe contener capturas y alias debe referirse a esas capturas, por ejemplo:location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
alias /data/w3/images/$1;
}
location /images/ {
alias /data/w3/images/;
}
location /images/ {
root /data/w3;
}
alias, el prefijo de la ubicación coincidente se elimina del URI
por su longitud, y el prefijo en sí no se revalida. Mantenga consistentes las
barras finales del nombre de la ubicación y del valor de alias. Si
el valor de alias omite una barra final que la ubicación sí tiene,
el resto se concatena (p. ej. /data/w3/imagestop.gif) y se sirve el
archivo equivocado; el caso inverso solo duplica una barra, lo cual suele
ser inofensivo. Para una
ubicación que coincida con la última parte de la ruta, es preferible usar la
directiva root, que añade el URI completo y no se ve afectada.auth_delay#
auto_redirect#
auto_redirect on | off | default;auto_redirect default;location /prefix/ {
auto_redirect on;
}
/prefix provoca una redirección a /prefix/.on habilita explícitamente la redirección, mientras que
off la desactiva. Cuando se establece en default, la redirección
solo se habilita si la ubicación procesa solicitudes con api,
proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass,
memcached_pass o grpc_pass.chunked_transfer_encoding#
chunked_transfer_encoding on | off;chunked_transfer_encoding on;client#
client para procesar solicitudes HTTP internas
que Angie realiza por sí mismo sin la participación de clientes externos.client aísla el tráfico de servicio de varios módulos de
Angie del tráfico de usuario, permitiendo un control adicional sobre él. Dentro
de este contexto, solo pueden definirse ubicaciones con nombre (con el prefijo
@); estas no son accesibles para solicitudes HTTP externas y solo pueden
invocarse programáticamente a través de mecanismos internos del servidor.client se utiliza para:location @acme, que puede
configurarse adicionalmente usando directivas del módulo Proxy;location @docker_events y
@docker_containers, que pueden configurarse adicionalmente usando
directivas del módulo Proxy;remote_action en el módulo
Stream Upstream.client permite agrupar configuraciones
comunes para múltiples bloques location dentro de cada bloque, lo que
ayuda a evitar la duplicación de configuración.client solo son heredadas
por los bloques location declarados explícitamente dentro de él. En
particular, por eso no afectan a la configuración de otros módulos que usan
implícitamente el bloque client para solicitudes salientes (por ejemplo,
ACME o Docker).client con herencia de
configuración:client {
proxy_set_header Host docker.example.com;
proxy_set_header Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==";
location @docker_events {
}
location @docker_containers {
}
}
client {
proxy_method GET;
proxy_set_header Host backend.example.com;
proxy_set_header X-Real-IP $remote_addr;
location @health_check {
proxy_pass http://upstream-server/health;
}
}
location normales,
pero solo funcionan los manejadores de contenido
(como js_content o autoindex)
y los manejadores de variables (como map),
así como las directivas que generan solicitudes por sí mismas,
como upstream_probe.client_body_buffer_size#
client_body_buffer_size tamaño;client_body_buffer_size 8k|16k;client_body_in_file_only#
client_body_in_file_only on | clean | off;client_body_in_file_only off;oncleanclient_body_in_single_buffer#
client_body_in_single_buffer on | off;client_body_in_single_buffer off;client_body_temp_path#
client_body_temp_path path [level1 [level2 [level3]]];client_body_temp_path client_body_temp;
(la ruta depende de la opción de compilación --http-client-body-temp-path)client_body_temp_path /spool/angie/client_temp 1 2;
/spool/angie/client_temp/7/45/00000123457
client_body_timeout#
client_body_timeout tiempo;client_body_timeout 60s;client_header_buffer_size#
client_header_buffer_size tamaño;client_header_buffer_size 1k;client_header_timeout#
client_max_body_size#
client_max_body_size tamaño;client_max_body_size 1m;0connection_pool_size#
connection_pool_size tamaño;connection_pool_size 256 | 512;256 (bytes)512 (bytes)default_type#
directio#
O_DIRECT (FreeBSD, Linux), la bandera F_NOCACHE (macOS) o la función directio() (Solaris) al leer archivos que son mayores o iguales al tamaño especificado. La directiva desactiva automáticamente el uso de sendfile para una solicitud dada. Se recomienda para servir archivos grandes:directio 4m;
directio_alignment#
directio_alignment tamaño;directio_alignment 512;disable_symlinks#
disable_symlinks off;disable_symlinks on | if_not_owner [from=part];disable_symlinks off;offonif_not_ownerfrom=parton y if_not_owner), normalmente se comprueban todos los componentes de la ruta. Es posible omitir la comprobación de enlaces simbólicos en la parte inicial de la ruta indicando adicionalmente el parámetro from=part. En este caso, los enlaces simbólicos se comprueban solo a partir del componente de ruta que sigue a la parte inicial especificada. Si el valor no es una parte inicial de la ruta comprobada, la ruta se comprueba por completo, como si no se hubiera especificado este parámetro. Si el valor coincide exactamente con el nombre del archivo, no se comprueban los enlaces simbólicos. Se pueden usar variables en el valor del parámetro.disable_symlinks on from=$document_root;
openat() y fstatat(). Dichos sistemas incluyen versiones modernas de FreeBSD, Linux y Solaris.on y if_not_owner añaden sobrecarga de procesamiento.early_hints#
0, se pasará la respuesta:map $http_sec_fetch_mode $early_hints {
navigate $http2$http3;
}
server {
...
location / {
early_hints $early_hints;
proxy_pass http://example.com;
}
}
error_log_user_tag#
error_log_user_tag.tags, solo en los destinos de
error_log que usan format=json; filter=tag: las
reconoce en cualquier formato.error_page#
error_page code ... [=[response]] uri;error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
=response, por ejemplo:error_page 404 =200 /empty.gif;
error_page 404 = /404.php;
location con nombre:location / {
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
error_page 403 http://example.com/forbidden.html;
error_page 404 =301 http://example.com/notfound.html;
etag#
ETag para recursos estáticos.http#
if_modified_since#
if_modified_since off | exact | before;if_modified_since exact;If-Modified-Since en la solicitud:offexactbeforeIf-Modified-Since de la solicitudignore_invalid_headers#
ignore_invalid_headers on | off;ignore_invalid_headers on;internal#
location dado solo puede usarse para solicitudes internas. Para solicitudes externas, se devuelve el error de cliente 404 (Not Found). Las solicitudes internas son las siguientes:X-Accel-Redirect de un servidor upstream;include virtual del módulo SSI, por las directivas del módulo Addition, y por las directivas auth_request y mirror;error_page 404 /404.html;
location = /404.html {
internal;
}
location con la directiva internal, las solicitudes externas pueden redirigirse a un location diferente. Esto permite usar el mismo prefijo tanto para solicitudes externas como internas, pero con procesamientos distintos, por ejemplo:location /path {
internal;
error_page 404 =@external;
proxy_pass https://internal;
}
location @external {
proxy_pass https://external;
}
GET /path se enviará por proxy a
https://external/path, mientras que la misma solicitud interna se enviará por proxy a
https://internal/path.rewrite or internal redirection cycle en el registro de errores.keepalive_disable#
keepalive_disable none | browser [browser];keepalive_disable msie6;nonemsie6safarikeepalive_requests#
keepalive_requests number;keepalive_requests 1000;keepalive_time#
keepalive_timeout#
keepalive_timeout timeout [header_timeout];keepalive_timeout 75s;0Keep-Alive: timeout=time. Los dos parámetros pueden diferir.Keep-Alive: timeout=time es reconocido por Mozilla y Konqueror. MSIE cierra las conexiones keep-alive por sí mismo en aproximadamente 60 segundos.large_client_header_buffers#
large_client_header_buffers number tamaño;large_client_header_buffers 4 8k;limit_except#
GET, HEAD, POST, PUT, DELETE,
MKCOL, COPY, MOVE, OPTIONS, PROPFIND,
PROPPATCH, LOCK, UNLOCK o PATCH. Permitir el
método GET hace que el método HEAD también esté permitido. El acceso a otros métodos
puede limitarse usando las directivas de los módulos Access y
Auth Basic:limit_except GET {
allow 192.168.1.0/32;
deny all;
}
GET y HEAD.limit_rate#
map $slow $rate {
1 4k;
2 8k;
}
limit_rate $rate;
server {
if ($slow) {
set $limit_rate 4k;
}
}
X-Accel-Limit-Rate de la respuesta de un servidor proxificado. Esta capacidad puede desactivarse mediante las directivas proxy_ignore_headers, fastcgi_ignore_headers, uwsgi_ignore_headers y scgi_ignore_headers.limit_rate_after#
limit_rate_after tamaño;limit_rate_after 0;location /flv/ {
flv;
limit_rate_after 500k;
limit_rate 50k;
}
lingering_close#
lingering_close on | always | off;lingering_close on;onalwaysofflingering_time#
lingering_timeout#
lingering_timeout.listen#
listen address[:port] [default_server] [ssl] [http2 | quic] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on | off] [reuseport] [multipath] [so_keepalive=on | off | [keepidle]:[keepintvl]:[keepcnt]];listen port [default_server] [ssl] [http2 | quic] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on | off] [reuseport] [multipath] [so_keepalive=on | off | [keepidle]:[keepintvl]:[keepcnt]];listen unix:path [default_server] [ssl] [http2 | quic] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on | off | [keepidle]:[keepintvl]:[keepcnt]];listen *:80 | *:8000;listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;
listen [::]:8000;
listen [::1];
listen 127.0.0.1:8000-8009;
listen 8000-8009;
unix::listen unix:/var/run/angie.sock;
server que nombra *:port
se convierte en el servidor por defecto para ese par.*:80
cuando se ejecuta con privilegios de superusuario, o *:8000 en caso contrario.default_serverdefault_server,
el servidor por defecto para el socket de escucha
será el primer servidor en la configuración que atienda ese socket.sslhttp2ssl, aunque Angie también puede configurarse para aceptar conexiones HTTP/2 sin SSL.quicquic activado,
también se puede especificar reuseport
para que puedan usarse múltiples procesos worker.proxy_protocollisten también puede especificar varios parámetros adicionales específicos de llamadas al sistema relacionadas con sockets. Estos parámetros pueden especificarse en cualquier directiva listen, pero solo una vez para un socket de escucha determinado:setfib=numberSO_SETFIB) para el socket de escucha. Actualmente solo funciona en FreeBSD.fastopen=numberbacklog=numberbacklog en la llamada listen() que
limita la longitud máxima de la cola de conexiones pendientes. Por
defecto, backlog se establece en -1 en FreeBSD, DragonFly BSD y macOS, y
en 511 en otras plataformas.rcvbuf=sizeSO_RCVBUF) para el
socket de escucha.sndbuf=sizeSO_SNDBUF) para el
socket de escucha.accept_filter=filterSO_ACCEPTFILTER) para
el socket de escucha que filtra las conexiones entrantes antes de pasarlas
a accept(). Esto solo funciona en FreeBSD y NetBSD 5.0+.
Los valores posibles son dataready y httpready.deferredaccept() diferido (la
opción de socket TCP_DEFER_ACCEPT) en Linux.bindbind() independiente para el par
dirección:puerto indicado. Sin este parámetro, si varias directivas
listen comparten puerto con direcciones distintas y una de ellas
escucha en todas las direcciones de ese puerto, Angie llama a
bind() solo para el socket comodín y determina la dirección que
aceptó la conexión con getsockname(). Los parámetros
setfib, fastopen, backlog, rcvbuf,
sndbuf, accept_filter, deferred,
ipv6only, reuseport, multipath y
so_keepalive implican siempre una llamada bind()
independiente.ipv6only=on | offIPV6_V6ONLY)
si un socket IPv6 que escucha en una dirección comodín [::] aceptará
solo conexiones IPv6 o tanto conexiones IPv6 como IPv4. Este parámetro
está activado por defecto. Solo puede establecerse una vez al inicio.reuseportSO_REUSEPORT en
Linux 3.9+ y DragonFly BSD, o SO_REUSEPORT_LB en FreeBSD 12+),
permitiendo que el kernel distribuya las conexiones entrantes entre los procesos
worker. Actualmente solo funciona en Linux 3.9+, DragonFly BSD y
FreeBSD 12+.reuseport
puede tener implicaciones de seguridad.multipathquic.so_keepalive=on | off | [keepidle]:[keepintvl]:[keepcnt]''onSO_KEEPALIVE se activa para el socketoffSO_KEEPALIVE se desactiva para el socketTCP_KEEPIDLE, TCP_KEEPINTVL y
TCP_KEEPCNT. En tales sistemas (actualmente, Linux, NetBSD,
DragonFly, FreeBSD y macOS), pueden configurarse usando los
parámetros keepidle, keepintvl y keepcnt. Uno o dos
parámetros pueden omitirse, en cuyo caso la configuración predeterminada del sistema para la
opción de socket correspondiente estará en efecto. En macOS, el parámetro keepidle
establece la opción de socket TCP_KEEPALIVE en lugar de
TCP_KEEPIDLE. Por ejemplo,so_keepalive=30m::10
TCP_KEEPIDLE) en 30 minutos, dejará el intervalo de sondeo (TCP_KEEPINTVL) en su valor predeterminado del sistema, y establecerá el número de sondeos (TCP_KEEPCNT) en 10 sondeos.listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;
location#
location puede definirse mediante una cadena de prefijo o mediante
una expresión regular.~*~location pueden anidarse.^~,
entonces no se comprueban las expresiones regulares.=, es posible definir una coincidencia exacta de URI y
ubicación. Si se encuentra una coincidencia exacta, la búsqueda termina. Por ejemplo, si una
solicitud / ocurre con frecuencia, definir location =/ acelerará
el procesamiento de estas solicitudes, ya que la búsqueda termina tras la primera comparación.
Tal ubicación no puede contener ubicaciones anidadas, ya que define una coincidencia exacta.location coincidente, la solicitud se asigna a un archivo
a través de la directiva root o alias, y try_files puede comprobar
la existencia de archivos dentro de él; véase Elección de ubicaciones para una descripción
general.location =/ {
#configuration A
}
location / {
#configuration B
}
location /documents/ {
#configuration C
}
location ^~/images/ {
#configuration D
}
location ~*\.(gif|jpg|jpeg)$ {
#configuration E
}
/ coincidirá con la configuración A,/index.html coincidirá con la configuración B,/documents/document.html coincidirá con la configuración C,/images/1.gif coincidirá con la configuración D,/documents/1.jpg coincidirá con la configuración E.location prefijo termina con una barra y
auto_redirect está habilitado, ocurre lo siguiente:
Cuando llega una solicitud con un URI que no tiene la barra final
pero coincide exactamente con el prefijo, se devuelve una redirección
permanente con código 301, apuntando al URI solicitado con la barra añadida.location de coincidencia exacta de URI, no se aplica redirección:location /user/ {
proxy_pass http://user.example.com;
}
location =/user {
proxy_pass http://login.example.com;
}
@ define un location nombrado. Estos locations no se usan para el procesamiento normal de solicitudes,
sino que están destinados únicamente a la redirección de solicitudes.
No pueden anidarse ni contener locations anidados.Ubicaciones combinadas#
location que definan bloques de configuración idénticos
pueden compactarse listando todas sus expresiones de coincidencia en un único
location con un único bloque de configuración.
A esto se le llama un location combinado.location:location =/
^~/images/
~*\.(gif|jpg|jpeg)$ {
# configuración general
}
location nombrado también puede formar parte de la combinación:location =/
@named_combined {
#...
}
location combinado no puede tener un espacio entre el modificador
de la expresión de coincidencia y la expresión en sí.
Forma correcta: location ~*/match(ing|es|er)$ ....location combinado no puede contener inmediatamente
directivas proxy_pass con URI establecido, ni api o alias.
Sin embargo, estas directivas pueden usarse en ubicaciones anidadas
dentro de una ubicación combinada.log_not_found#
log_subrequest#
max_headers#
400 (Bad Request).max_ranges#
0merge_slashes#
//scripts/one.php no coincidiría conlocation /scripts/ { }
/scripts/one.php.msie_padding#
msie_refresh#
open_file_cache#
open_file_cache off;open_file_cache max=N [inactive=time];open_file_cache off;maxinactiveoffopen_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
open_file_cache_errors#
open_file_cache_errors on | off;open_file_cache_errors off;open_file_cache_events#
open_file_cache_events on | off;open_file_cache_events off;open_file_cache_min_uses#
open_file_cache_min_uses number;open_file_cache_min_uses 1;inactive de la directiva open_file_cache, requeridos para que un descriptor de archivo permanezca abierto en la caché.open_file_cache_valid#
open_file_cache_valid tiempo;open_file_cache_valid 60s;output_buffers#
output_buffers number tamaño;output_buffers 2 32k;port_in_redirect#
postpone_output#
0read_ahead#
posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL), por lo que el parámetro size se ignora.fcntl(O_READAHEAD, size ), soportada desde FreeBSD 9.0-CURRENT.recursive_error_pages#
recursive_error_pages on | off;recursive_error_pages off;request_pool_size#
reset_timedout_connection#
reset_timedout_connection on | off;reset_timedout_connection off;SO_LINGER con un valor de timeout de 0. Cuando se cierra el socket, se envía un TCP RST al cliente y se libera toda la memoria asociada a ese socket. Esto ayuda a evitar mantener un socket ya cerrado en estado FIN_WAIT1 con los búferes llenos durante largo tiempo.resolver#
resolver address | conf[=file] ... [valid=time] [ipv4=on | off] [ipv6=on | off] [status_zone=zone];resolver off;resolver conf;resolver 127.0.0.53 [::1]:5353;
conf, excepto en la forma resolver off;.127.0.0.53
(systemd-resolved), en lugar de uno público (p.ej., 8.8.8.8). Los
resolvers públicos exponen las consultas DNS a terceros y aumentan el
riesgo de ataques de envenenamiento de caché.offconf [=file]/etc/resolv.conf si no se especifica ningún archivonameserver con el mismo formato usado por el resolver del sistema:nameserver 127.0.1.4
nameserver 127.0.1.5
127.0.0.1:53.valid permite sobrescribir esto:validresolver 127.0.0.53 [::1]:5353 valid=30s;
ipv4=offipv6=offstatus_zone127.0.0.11.resolver_timeout#
resolver_timeout tiempo;resolver_timeout 30s;resolver_timeout 5s;
root#
location /i/ {
root /data/w3;
}
/data/w3/i/top.gif se enviará en respuesta a la solicitud /i/top.gif.satisfy#
all) o al menos uno (any) de los módulos Access, Auth Basic o Auth Request permiten el acceso.location / {
satisfy any;
allow 192.168.1.0/32;
deny all;
auth_basic "closed site";
auth_basic_user_file conf/htpasswd;
}
send_lowat#
NOTE_LOWAT del método kqueue, o bien la opción de socket SO_SNDLOWAT. En ambos casos se usa el tamaño especificado.send_timeout#
sendfile#
sendfile().sendfile():location /video/ {
sendfile on;
tcp_nopush on;
aio on;
}
sendfile() se invoca con la bandera SF_NODISKIO, lo que evita que bloquee en operaciones de E/S de disco, informando en su lugar de que los datos no están en memoria. Angie entonces inicia una carga de datos asíncrona leyendo un byte. En la primera lectura, el kernel de FreeBSD carga en memoria los primeros 128K de un archivo, mientras que las lecturas posteriores solo cargan bloques de 16K. Esto puede modificarse mediante la directiva read_ahead.sendfile_max_chunk#
sendfile_max_chunk tamaño;sendfile_max_chunk 2m;sendfile(). Sin este límite, una conexión rápida podría monopolizar completamente el proceso de trabajo.server#
server_name#
server {
server_name example.com www.example.com;
}
server {
server_name example.com *.example.com www.example.*;
}
server {
server_name .example.com;
}
server {
server_name ~^www\d+\.example\.com$ www.example.com;
}
server {
server_name ~^(www\.)?(.+)$;
location / {
root /sites/$2;
}
}
server {
server_name _;
location / {
root /sites/default;
}
}
server {
server_name ~^(www\.)?(?<domain>.+)$;
location / {
root /sites/$domain;
}
}
server {
server_name _;
location / {
root /sites/default;
}
}
server {
server_name www.example.com "";
}
*.example.com;mail.*;server_name con TLS,
se requiere la terminación de la conexión TLS.
Esta directiva coincide con el Host en la solicitud HTTP,
por lo que el handshake debe completarse y la conexión estar descifrada.server_name_in_redirect#
server_name_in_redirect on | off;server_name_in_redirect off;onoffserver_names_hash_bucket_size#
server_names_hash_bucket_size tamaño;server_names_hash_bucket_size 32 | 64 | 128;server_names_hash_max_size#
server_tokens#
server_tokens on | off | build | string;server_tokens on;Server.build activa la inclusión del nombre de compilación,
definido mediante el parámetro correspondiente de configure,
junto con la versión.Server
utilizarán el valor de la cadena interpolada con variables
en lugar del nombre del servidor, versión y nombre de compilación.
Una string vacía desactiva la emisión del campo Server.status_zone#
status_zone off | zone | key zone=zone[:number];off se explica en
Zonas de servidor y de location.server {
listen 80;
server_name *.example.com;
status_zone single;
# ...
}
zone.status_zone
declare la misma zona con un number.$host
se agrupan en la zona host_zone.
Las métricas se rastrean por separado para cada $host único
hasta un máximo de 10 grupos de métricas.
Una vez alcanzado este límite,
cualquier valor adicional de $host se incluye bajo host_zone:server {
listen 80;
server_name *.example.com;
status_zone $host zone=host_zone:10;
location / {
proxy_pass http://example.com;
}
}
status_zone está configurado. Sin él,
el servidor o la location no aparece en /status/http/server_zones/<zone>,
/status/http/location_zones/<zone>, el widget «HTTP Zones»,
ni en la salida de Prometheus, y no se registra ninguna advertencia.
Consulte ejemplo de configuración.Zonas de servidor y de location#
server pueden compartir una misma zona de servidor,
y varias locations pueden compartir una misma zona de location.
Todas las directivas status_zone que comparten una zona
deben usar la misma sintaxis y, con la sintaxis alternativa,
el mismo number allí donde se indique;
de lo contrario, la configuración no se carga
porque los tamaños de la zona de memoria compartida entran en conflicto.if sin su propia directiva status_zone
hereda la zona de location de su location padre.
Las locations nunca heredan la zona de servidor:
una solicitud cuyo procesamiento termina en una location
sin zona de location, propia o heredada,
no se cuenta en ninguna zona de location, aunque su servidor tenga una zona de servidor.off cancela la zona de location
heredada de la location padre:
una solicitud cuyo procesamiento termina en la location donde se define off,
o en una location anidada que hereda off,
no se cuenta en ninguna zona de location.
off no afecta a la zona de servidor,
y tiene este significado solo en location e if:
en un bloque server, status_zone off;
define una zona de servidor llamada off.server {
listen 80;
server_name www.example.com;
status_zone site;
location / { # /index.html: site, pages
status_zone pages;
location /images/ { # /images/logo.png: site
status_zone off;
}
}
location /downloads/ { # /downloads/: site
autoindex on;
}
}
processing),
y también la razón por la que ninguna location puede excluirse de la zona de servidor.
Cuando la solicitud se completa,
la zona de servidor cuenta su respuesta en responses,
o la solicitud en discarded si no se envió ninguna respuesta,
y suma los bytes recibidos y enviados a data.
Una solicitud que termina antes de haberse leído por completo su cabecera
se cuenta en la zona de servidor cuando termina./images/,
y la zona site no las cuenta:map $request_uri $site_key {
~^/images/ "";
default site;
}
server {
listen 80;
server_name www.example.com;
status_zone $site_key zone=site:1;
# ...
}
subrequest_output_buffer_size#
subrequest_output_buffer_size tamaño;subrequest_output_buffer_size 4k | 8k;4K o 8K, dependiendo de la plataforma. Puede configurarse más pequeño
si es necesario.tcp_nodelay#
TCP_NODELAY. La opción se activa cuando una conexión pasa al estado keep-alive. Además, se activa en conexiones SSL, para el proxying sin búfer y para proxying de WebSocket.tcp_nopush#
TCP_NOPUSH en FreeBSD o la opción de socket TCP_CORK en Linux. Las opciones se activan solo cuando se usa sendfile. Al activarse, permitentime_format#
strftime más %L para milisegundos. La directiva es útil cuando
$time_local y $time_iso8601 se
quedan cortos, por ejemplo porque no ofrecen precisión de subsegundo:time_format $time_ms "%Y-%m-%dT%H:%M:%S.%L%Z";
log_format tf '$time_ms $remote_addr "$request" $status';
$time_ms se expande a un valor como
2024-01-15T14:34:56.789+03:00.time_format. De lo contrario,
la carga de la configuración falla con un error del tipo: "the duplicate "..."
variable".%Y%y%m01-12%d01-31%e1-31%H00-23%I01-12%M00-59%S00-59%L000-999%pAM / PM en mayúsculas%Pam / pm en minúsculas%aSun-Sat%ASunday-Saturday%b, %hJan-Dec%BJanuary-December%z+0300%Z+03:00%n%t%%% literal% inicial; un % aislado al final de la cadena format
se descarta.try_files#
$uri/. Si no se encuentra ningún archivo, se realiza una redirección interna al uri especificado en el último parámetro.location /images/ {
try_files $uri /images/default.gif;
}
location = /images/default.gif {
expires 30s;
}
location con nombre (por ejemplo, @drupal),
o un código de respuesta en la forma =code (por ejemplo, =404):location / {
try_files $uri $uri/index.html $uri.html =404;
}
try_files
incrementa el número de llamadas al sistema,
lo que puede afectar negativamente al rendimiento.try_files no debe usarse para replicar un comportamiento
que es efectivamente el comportamiento por defecto, por ejemplo:location /bad_pattern {
# try_files $uri $uri/ =404; # ¡no recomendado!
}
try_files no debe usarse
únicamente para redirigir cuando un archivo está ausente.
La razón es que la directiva try_files tiene dos peculiaridades:too many open files,
errores de permisos) también se trata como ausencia de archivo y activa el mecanismo de respaldo
al manejador alternativo, lo que puede enmascarar errores 5xx con respuestas exitosas
y llevar a un cacheo incorrecto.location / {
try_files $uri $uri/ @drupal; # ¡no recomendado!
}
try_files conlleva las desventajas listadas anteriormente,
pero no proporciona beneficios,
ya que no se necesita verificar la existencia del archivo.
La solución correcta es usar la directiva error_page,
que no tiene estas desventajas:error_page 404 = @drupal;
log_not_found off;
location ~ \.php$ {
try_files $uri @drupal;
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
# ...
}
try_files verifica la existencia del archivo PHP
antes de pasar la solicitud al servidor FastCGI configurado en el mismo bloque;
aquí el uso de try_files está justificado.Ejemplo de uso al hacer proxy a Mongrel:
location / {
try_files /system/maintenance.html
$uri $uri/index.html $uri.html
@mongrel;
}
location @mongrel {
proxy_pass http://mongrel;
}
Ejemplo de uso con Drupal/FastCGI:
location / {
error_page 404 = @drupal;
}
location ~ \.php$ {
try_files $uri @drupal;
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param QUERY_STRING $args;
# ... other fastcgi_param
}
location @drupal {
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to/index.php;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param QUERY_STRING q=$uri&$args;
# ... other fastcgi_param
}
Ejemplo de uso con Wordpress y Joomla:
location / {
error_page 404 = @wordpress;
}
location ~ \.php$ {
try_files $uri @wordpress;
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
# ... other fastcgi_param
}
location @wordpress {
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to/index.php;
# ... other fastcgi_param
}
types#
types { ... }types text/html html; image/gif gif; image/jpeg jpg;types {
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
}
conf/mime.types.location concreto devuelva el tipo MIME "application/octet-stream" en todas las respuestas, se puede usar la siguiente configuración:location /download/ {
types { }
default_type application/octet-stream;
}
types_hash_bucket_size#
types_hash_bucket_size tamaño;types_hash_bucket_size 64;types_hash_max_size#
types_hash_max_size tamaño;types_hash_max_size 1024;underscores_in_headers#
underscores_in_headers on | off;underscores_in_headers off;variables_hash_bucket_size#
variables_hash_max_size#
Variables integradas#
http_core admite variables integradas con nombres que coinciden con las
variables de Apache Server. En primer lugar, se trata de variables que representan campos de cabecera
de las solicitudes del cliente, como $http_user_agent, $http_cookie,
etc. Además, existen otras variables:$angie_version#$arg_<name>#$args#$binary_remote_addr#$body_bytes_sent#mod_log_config$bytes_sent#$connection#$connection_requests#$connection_time#$content_length#Content-Length de la solicitud$content_type#Content-Type de la solicitud$document_root#$document_uri#$host#$hostname#$http_<name>#$http_host se inicializa a partir de la
pseudocabecera :authority si la cabecera Host no fue
enviada por el cliente.$https#on si la conexión funciona en modo SSL, o una cadena vacía en caso contrario$is_args#? si la línea de solicitud contiene argumentos, o una cadena vacía en caso contrario$is_request_port#: si el valor de $request_port no está vacío, o una cadena vacía en caso contrario$limit_rate#$msec#$nginx_version#$pid#$pipe#p si la solicitud fue pipelined, . en caso contrario$proxy_protocol_addr#proxy_protocol en la directiva listen.$proxy_protocol_port#proxy_protocol en la directiva listen.$proxy_protocol_server_addr#proxy_protocol en la directiva listen.$proxy_protocol_server_port#proxy_protocol en la directiva listen.$proxy_protocol_tlv_<name>#0x:$proxy_protocol_tlv_alpn
$proxy_protocol_tlv_0x01
ssl_:$proxy_protocol_tlv_ssl_version
$proxy_protocol_tlv_ssl_0x21
alpn (0x01) - protocolo de capa superior usado en la conexiónauthority (0x02) - valor del nombre de host enviado por el clienteunique_id (0x05) - identificador único de la conexiónnetns (0x30) - nombre del namespacessl (0x20) - estructura binaria SSL TLVssl_version (0x21) - versión de SSL usada en la conexión del clientessl_cn (0x22) - Common Name del certificado SSLssl_cipher (0x23) - nombre del cifrado utilizadossl_sig_alg (0x24) - algoritmo usado para firmar el certificadossl_key_alg (0x25) - algoritmo de clave públicassl_verify - resultado de la verificación del certificado SSL del cliente: 0 si el cliente presentó un certificado y se verificó correctamente, distinto de cero en caso contrarioproxy_protocol en la directiva listen.$query_string#$realpath_root#$remote_addr#$remote_port#$remote_user#$request#$request_body#$request_body_file#$request_completion#OK si la solicitud se ha completado, o una cadena vacía en caso contrario$request_filename#$request_id#$request_length#$request_method#GET o POST$request_port#$request_time#$request_uri#$scheme#$sent_body#$sent_http_<name>#$sent_trailer_<name>#$server_addr#bind.$server_name#$server_port#$server_protocol#$status#$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space#TCP_INFO; en Linux, $tcpinfo_rtt y $tcpinfo_rttvar están en microsegundos, $tcpinfo_snd_cwnd es un número de segmentos, y $tcpinfo_rcv_space está en bytes$time_iso8601#$time_local#$uri#$uri puede cambiar durante el procesamiento de la solicitud, por ejemplo, al reescribir con rewrite, al realizar redirecciones internas o al usar archivos índice. Véase Elección de ubicaciones para conocer cómo este valor se corresponde con una ruta del sistema de archivos.