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 peticiones, 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 petición 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. 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 peticiones de rango de bytes y a
las peticiones 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: Por defecto, el multihilo está deshabilitado; debe activarse con el parámetro de
configuración 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: 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 subrequest. Predeterminado http, server, location Controla el comportamiento de la redirección cuando
una ubicación con prefijo termina en una barra inclinada: Aquí, una petición 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. Crea un contexto especial El contexto El contexto enviar peticiones a la autoridad certificadora en el módulo ACME
a través de la peticiones a la API de Docker en el módulo Docker
a través de las comprobaciones de estado de servidores proxificados mediante upstream_probe (PRO); el 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 Las directivas que operan en otras
etapas de procesamiento de la petición
(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 petición del cliente. Si el cuerpo de la petición 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 petición 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 petición permite eliminar los archivos temporales tras procesar la petición Predeterminado http, server, location Determina si se guarda el cuerpo completo de la petición 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 peticiones 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 petición 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 petición. Si un cliente no transmite nada dentro de este tiempo, la petición finaliza con el error 408 (Request Time-out). Predeterminado http, server Define el tamaño del búfer para leer la cabecera de la petición del cliente. Para la mayoría de las peticiones, un búfer de 1K es suficiente. Sin embargo, si la petición incluye cookies largas o proviene de un cliente WAP, podría no caber en 1K. Si la línea de petición 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 petición del cliente. Si un cliente no transmite la cabecera completa dentro de este tiempo, la petición finaliza con el error 408 (Request Time-out). Predeterminado http, server, location Define el tamaño máximo permitido para el cuerpo de la petición del cliente. Si el tamaño en una petición 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. deshabilita la comprobación del tamaño del cuerpo de la petición del cliente Predeterminado http, server, location Permite el ajuste preciso de 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 por defecto de una respuesta. La asignación 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. 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 por defecto. 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. 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 petición 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 por defecto. Especifica que un peticiones redirigidas por las directivas error_page, index, random_index y try_files; peticiones redirigidas por el campo de cabecera de respuesta subpeticiones formadas por el comando peticiones modificadas por la directiva rewrite. Ejemplo: Nota Hay un límite de 10 redirecciones internas por petición para prevenir ciclos de procesamiento de peticiones 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 petición 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 peticiones que pueden servirse a través de una sola conexión keep-alive. Una vez alcanzado el número máximo de peticiones, 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 peticiones puede provocar un uso excesivo de memoria y no se recomienda. Limita el tiempo máximo durante el cual pueden procesarse peticiones a través de una misma conexión keep-alive. Una vez alcanzado este tiempo, la conexión se cierra tras procesar la petición 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 Predeterminado http, server Define el número máximo y el tamaño de los búferes usados para leer cabeceras grandes de peticiones de clientes. Una línea de petición 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 petición, 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 petición; 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. hará que Angie espere y procese incondicionalmente datos adicionales del cliente. indica a Angie que nunca espere más datos y cierre 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 keep-alive de clientes se cierran solo si han estado inactivas durante al menos el tiempo especificado en Nota En nginx, una directiva similar 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á peticiones. Una address también puede ser un nombre de host, por ejemplo: Las direcciones IPv6 se especifican entre corchetes: 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 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 peticiones 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 define la tabla de enrutamiento, FIB (la opción activa "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 handshake de tres vías. Advertencia No actives "TCP Fast Open" a menos que el servidor pueda manejar recibir el mismo paquete SYN con datos más de una vez. Advertencia No actives "TCP Fast Open" a menos que el servidor pueda manejar recibir el mismo paquete SYN con datos más de una vez. define el parámetro define el tamaño del buffer de recepción (la opción define el tamaño del buffer de envío (la opción define el nombre del filtro de aceptación (la opción instruye usar un instruye hacer una llamada determina (a través de la opción de socket instruye crear un socket de escucha individual para
cada proceso worker (usando la opción de socket Advertencia El uso inapropiado del parámetro permite aceptar conexiones a través de 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 este parámetro se omite, entonces la configuración del sistema operativo estará en efecto para el socket la opción la opción Algunos sistemas operativos soportan la configuración de parámetros TCP keepalive por socket usando las opciones de socket establecerá el timeout de inactividad ( Ejemplo: Define la configuración en función de si el URI de la petición coincide
con alguna de las expresiones de coincidencia. La coincidencia se realiza contra un URI normalizado, 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 sensible a mayúsculas y minúsculas Para encontrar una ubicación que coincida con una petición, Angie primero comprueba las
ubicaciones definidas con cadenas 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 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 Ejemplo: Una petición una petición una petición una petición y una petición 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 subpeticiones en access_log. Define el número máximo de campos de cabecera de petición 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 peticiones con byte-range. Las peticiones 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 petición 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, está establecido en 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 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 petición. 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 le aplica 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 53. Los servidores de nombres se consultan en modo round-robin. Por defecto, Angie almacena en caché las respuestas usando el valor TTL de la respuesta. 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 recogida de métricas de peticiones y respuestas
de los servidores DNS (/status/resolvers/<zone>)
en la zona especificada 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 peticiones. 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. 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, 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 petición "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 petición. 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 la directiva se define como $hostname, se utiliza el nombre de host del servidor web. También puedes especificar un nombre de servidor vacío ( Al buscar un servidor virtual por nombre que coincida con múltiples opciones (por ejemplo, tanto un comodín como una expresión regular), se seleccionará la primera opción coincidente siguiendo este orden de prioridad: nombre exacto; nombre más largo con comodín al principio, como nombre más largo con comodín al final, como la primera expresión regular coincidente (en orden de aparición en la configuración), incluyendo un nombre vacío. Advertencia Para que Predeterminado http, server, location Activa o desactiva el uso del nombre principal del servidor, especificado por la directiva server_name, en redirecciones absolutas emitidas por Angie. se usa el nombre principal del servidor, especificado por la directiva server_name se usa el nombre de la cabecera de petición "Host". Si esta cabecera no está presente, se usa la dirección IP del servidor. El uso de un 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 Added in version 1.1.0: PRO 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>. Varios contextos 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 peticiones en
la zona. Todas las peticiones 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 (opcional) El número máximo de grupos separados para recopilar métricas.
Si nuevos valores de key superan este límite, se agrupan bajo El valor por defecto es 1. En el siguiente ejemplo,
todas las peticiones que compartan el mismo valor de De este modo, las métricas resultantes se dividen entre hosts individuales en la salida de la API. Predeterminado http, server, location Define el tamaño del búfer usado para almacenar el cuerpo de la respuesta de una subrequest.
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 subrequests cuyos cuerpos de respuesta se guardan en memoria. Por ejemplo, tales subrequests son creados 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. Verifica la existencia de archivos en el orden especificado y utiliza el primer archivo encontrado para procesar la petición; el procesamiento se realiza en el contexto 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 El último parámetro también puede apuntar a un En el siguiente ejemplo, la directiva Y aquí, 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 nombres de campos de cabecera de las peticiones de cliente. Cuando el uso de guiones bajos está desactivado, los campos de cabecera que 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 petición argumentos en la línea de petición 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 peticiones 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 petición actual igual que $uri en este orden de precedencia: nombre de host de la línea de petición, o nombre de host del campo de cabecera "Host", o el nombre de servidor que coincide con la petición nombre del host campo de cabecera arbitrario de la petición; la última parte del nombre de la variable corresponde al nombre del campo convertido a minúsculas con guiones sustituidos por guiones bajos 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 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 petición 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 petición original completa cuerpo de la petición 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 petición se ha leído en un búfer de memoria. Nombre de un archivo temporal con el cuerpo de la petición.
Al final del procesamiento, el archivo debe eliminarse. Para escribir siempre el cuerpo de la petición en un archivo, habilita client_body_in_file_only. Cuando se pasa el nombre de un archivo temporal en una petición proxy o en una petición a un servidor FastCGI/uwsgi/SCGI, el envío del cuerpo de la petición 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 petición actual, basada en las directivas root o alias y en el URI de la petición identificador único de la petición generado a partir de 16 bytes aleatorios, en hexadecimal longitud de la petición (incluyendo línea de petición, cabeceras y cuerpo de la petición) método de la petición, normalmente tiempo de procesamiento de la petición en segundos con resolución en milisegundos; tiempo transcurrido desde que se leyeron los primeros bytes del cliente URI original completo de la petición (con argumentos) esquema de la petición, "http" o "https" 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 petición. 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ó la petición puerto del servidor que aceptó la petición protocolo de la petición, normalmente "HTTP/1.0", "HTTP/1.1" o "HTTP/2.0" estado de la respuesta hora local en formato estándar ISO 8601 hora local en formato Common Log Format información sobre la conexión TCP del cliente; disponible en sistemas que admiten la opción de socket URI actual en la petición, 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;
--with-threads
. 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.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;
}
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 peticiones HTTP internas
que Angie realiza por sí mismo sin la intervención de un cliente externo.client
aísla el tráfico de servicio de varios módulos de
Angie del tráfico de usuario, permitiendo un control adicional sobre este.
Dentro de este contexto, solo pueden definirse location`s con nombre
(con el prefijo :samp:`@
); no son accesibles desde peticiones HTTP externas y
solo pueden invocarse de forma programática mediante mecanismos internos del
servidor.client
se utiliza para:location @acme
predefinida,
que puede configurarse adicionalmente con directivas del módulo Proxy;location @docker_events
y @docker_containers
predefinidas,
que pueden configurarse adicionalmente con directivas del módulo Proxy;remote_action
en el módulo de stream Upstream.client
permite agrupar ajustes comunes
para varios bloques location
dentro de cada bloque, lo que ayuda a evitar
duplicación de configuración.client
solo se heredan en
los bloques location
declarados explícitamente dentro de él. En
particular, por eso no afectan la configuración de otros módulos que usan de
forma implícita el bloque client
para peticiones salientes (por ejemplo,
ACME o Docker).client
con herencia de ajustes:client {
proxy_set_header Host docker.example.com;
proxy_set_header Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==";
location @docker_events {
}
location @docker_containers {
}
}
client {
upstream_probe_timeout 3s;
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`s normales,
pero solo funcionan los manejadores de contenido
(como :ref:`js_content
o autoindex)
y los manejadores de variables (como map),
así como las directivas que generan peticiones por sí mismas,
como upstream_probe
.client_body_buffer_size#
client_body_buffer_size
size;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;
on
clean
client_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
time;client_body_timeout 60s;
client_header_buffer_size#
client_header_buffer_size
size;client_header_buffer_size 1k;
client_header_timeout#
client_max_body_size#
client_max_body_size
size;client_max_body_size 1m;
0
connection_pool_size#
connection_pool_size
size;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 deshabilita automáticamente el uso de sendfile para una petición dada. Se recomienda para servir archivos grandes:directio 4m;
directio_alignment#
disable_symlinks#
disable_symlinks
off
;disable_symlinks
on
| if_not_owner
[from=
part];disable_symlinks off;
off
on
if_not_owner
from=
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.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 petición:off
exact
before
If-Modified-Since
de la peticiónignore_invalid_headers#
ignore_invalid_headers
on
| off
;ignore_invalid_headers on;
internal#
location
determinado solo puede usarse para peticiones internas. Para peticiones externas, se devuelve el error de cliente 404 (Not Found). Las peticiones 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;
}
rewrite or internal redirection cycle
en el registro de errores.keepalive_disable#
keepalive_disable
none
| browser ...;keepalive_disable msie6;
none
msie6
safari
keepalive_requests#
keepalive_requests
number;keepalive_requests 1000;
keepalive_time#
keepalive_timeout#
keepalive_timeout
timeout [header_timeout];keepalive_timeout 75s;
0
Keep-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 size;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
size;limit_rate_after 0;
location /flv/ {
flv;
limit_rate_after 500k;
limit_rate 50k;
}
lingering_close#
lingering_close
on
| always
| off
;lingering_close on;
on
always
off
lingering_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
] [so_keepalive=
on|off|[keepidle
]:[samp:keepintvl]:[samp: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
] [so_keepalive=
on|off|[keepidle
]:[samp:keepintvl]:[samp: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
]:[samp:keepintvl]:[samp: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];
unix:
:listen unix:/var/run/angie.sock;
server
para ese puerto
se convierte en el servidor por defecto para peticiones con una cabecera Host
no coincidente.*:80
cuando se ejecuta con privilegios de superusuario, o *:8000
en caso contrario.default_server
default_server
,
el servidor por defecto para el socket de escucha
será el primer servidor en la configuración que atienda ese socket.ssl
http2
ssl
, aunque Angie también puede configurarse para aceptar conexiones HTTP/2 sin SSL.quic
quic
activado,
también se puede especificar reuseport
para que puedan usarse múltiples procesos worker.proxy_protocol
listen
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
.deferred
accept()
diferido (la
opción de socket TCP_DEFER_ACCEPT
) en Linux.bind
bind()
separada para un par address:port
dado. Esto es útil porque si hay varias directivas listen
con el mismo puerto pero diferentes direcciones, y una de las
directivas listen
escucha en todas las direcciones para el
port
dado (*:port
), Angie hará bind()
solo a
*:port
. Debe tenerse en cuenta que se hará la llamada al sistema getsockname()
en este caso para determinar la dirección que aceptó la
conexión. Si se usan los parámetros setfib
, fastopen
, backlog
,
rcvbuf
, sndbuf
, accept_filter
, deferred
,
ipv6only
, reuseport
o so_keepalive
, entonces para un par address:port
dado siempre se hará una llamada bind()
separada.ipv6only=on
| off
IPV6_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.reuseport
SO_REUSEPORT
en
Linux 3.9+ y DragonFly BSD, o SO_REUSEPORT_LB
en FreeBSD 12+),
permitiendo al kernel distribuir 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.multipath
quic
.so_keepalive=on
| off
| [keepidle
]:[samp:keepintvl]:[samp:keepcnt]''
on
SO_KEEPALIVE
se activa para el socketoff
SO_KEEPALIVE
se desactiva para el socketTCP_KEEPIDLE
, TCP_KEEPINTVL
y TCP_KEEPCNT
. En tales sistemas, pueden configurarse usando los parámetros keepidle
, keepintvl
y keepcnt
. Uno o dos parámetros pueden omitirse, en cuyo caso la configuración por defecto del sistema para la opción de socket correspondiente estará en efecto. Por ejemplo,so_keepalive=30m::10
TCP_KEEPIDLE
) a 30 minutos, dejará el intervalo de sondeo (TCP_KEEPINTVL
) en su valor por defecto del sistema, y establecerá el número de sondeos (TCP_KEEPCNT
) a 10 sondeos.listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;
location#
location
puede definirse mediante una cadena 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
petición /
ocurre con frecuencia, definir location =/
acelerará
el procesamiento de estas peticiones, 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 =/ {
#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 petición con un URI que no tiene la barra final
pero coincide exactamente con el prefijo, se devuelve una redirección 301
permanente, 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. Dichas ubicaciones no se usan para el procesamiento normal de peticiones,
sino que están destinadas únicamente a la redirección de peticiones.
No pueden anidarse ni contener ubicaciones anidadas.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 la expresión de coincidencia
y su modificador.
Forma correcta: location ~*/match(ing|es|er)$ ...
.location
combinado no puede inmediatamente contener
proxy_pass
y directivas similares con URI establecido, ni api
o
alias
. Sin embargo, estas directivas pueden usarse en ubicaciones anidadas
dentro de un location combinado.log_not_found#
log_subrequest#
max_headers#
400 (Bad Request)
.max_ranges#
0
merge_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;
max
inactive
off
open_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_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
time;open_file_cache_valid 60s;
output_buffers#
output_buffers
number size;output_buffers 2 32k;
port_in_redirect#
postpone_output#
0
read_ahead#
posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)
, por lo que el parámetro de tamaño 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 tiempo de espera 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 que un socket ya cerrado permanezca largo tiempo en estado FIN_WAIT1 con los búferes llenos.resolver#
resolver
address ... [valid=
time] [ipv4=
on
| off
] [ipv6=
on
| off
] [status_zone=
zone];resolver 127.0.0.53 [::1]:5353;
valid
resolver 127.0.0.53 [::1]:5353 valid=30s;
ipv4=off
ipv6=off
status_zone
127.0.0.11
.resolver_timeout#
resolver_timeout
time;resolver_timeout 30s;
resolver_timeout 5s;
root#
location /i/ {
root /data/w3;
}
/data/w3/i/top.gif
se enviará en respuesta a la petición /i/top.gif
.satisfy#
all
) o al menos uno (any
) de los módulos Access, Auth Basic o Auth Request autorizan 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()
. 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
funcione con TLS, es necesario terminar la conexión TLS. La directiva coincide con el Host
en una petición 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
;on
off
server_names_hash_bucket_size#
server_names_hash_bucket_size
size;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
.
El parámetro 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];server
pueden compartir la misma zona para la recogida de datos;
el valor especial off
desactiva la recogida de datos en bloques location
anidados.server {
listen 80;
server_name *.example.com;
status_zone single;
# ...
}
zone
.$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;
}
}
subrequest_output_buffer_size#
subrequest_output_buffer_size
size;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 TCP_CORK
en Linux. Las opciones se activan solo cuando se usa sendfile. Al activarse, permitentry_files#
$uri/
. Si no se encuentra ningún archivo, se realiza una redirección interna al uri
especificado en el último parámetro. Por ejemplo:location /images/ {
try_files $uri /images/default.gif;
}
location = /images/default.gif {
expires 30s;
}
location
con nombre, como se muestra en los ejemplos siguientes. El último parámetro también puede ser un código:location / {
try_files $uri $uri/index.html $uri.html =404;
}
location / {
try_files $uri $uri/ @drupal;
}
try_files
es equivalente alocation / {
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 petición al servidor FastCGI.Ejemplo en proxying de Mongrel:
location / {
try_files /system/maintenance.html
$uri $uri/index.html $uri.html
@mongrel;
}
location @mongrel {
proxy_pass http://mongrel;
}
Ejemplo para Drupal/FastCGI:
location / {
try_files $uri $uri/ @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 para Wordpress y Joomla:
location / {
try_files $uri $uri/ @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
size;types_hash_bucket_size 64;
types_hash_max_size#
types_hash_max_size
size;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 peticiones 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 petición$content_type
#Content-Type
de la petición$document_root
#$document_uri
#$host
#$hostname
#$http_<name>
#$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 petición contiene argumentos, o una cadena vacía en caso contrario$limit_rate
#$msec
#$pid
#$pipe
#p
si la petición 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 petición se ha completado, o una cadena vacía en caso contrario$request_filename
#$request_id
#$request_length
#$request_method
#GET
o POST
$request_time
#$request_uri
#$scheme
#$sent_http_<name>
#$sent_trailer_<name>
#$server_addr
#bind
.$server_name
#$server_port
#$server_protocol
#$status
#$time_iso8601
#$time_local
#$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space
#TCP_INFO
$uri
#$uri
puede cambiar durante el procesamiento de la petición, por ejemplo, al realizar redirecciones internas o al usar archivos índice.