<a id="http-core"></a>

# 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.

<a id="directives-55"></a>

## Directivas

<a id="index-0"></a>

<a id="absolute-redirect"></a>

### absolute_redirect

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `absolute_redirect` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|-------------------------------------|
| Predeterminado                                                                             | `absolute_redirect on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location              |

Si está deshabilitada, las redirecciones emitidas por Angie serán relativas.

Véase también las directivas [server_name_in_redirect](#server-name-in-redirect) y [port_in_redirect](#port-in-redirect).

<a id="index-1"></a>

<a id="aio"></a>

### aio

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `aio` `on` | `off` | `threads` [=pool];   |
|--------------------------------------------------------------------------------------------|-------------------------------------------|
| Predeterminado                                                                             | `aio off;`                                |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                    |

Activa o desactiva el uso de operaciones de E/S de archivos asíncronas (AIO) en FreeBSD y Linux:

```nginx
location /video/ {
  aio            on;
  output_buffers 1 64k;
}
```

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:

```nginx
options VFS_AIO
```

o cargarse dinámicamente como un módulo del núcleo:

```nginx
kldload aio
```

En Linux, AIO puede usarse desde la versión 2.6.22 del núcleo. Además, es necesario habilitar [directio](#directio), de lo contrario la lectura será bloqueante:

```nginx
location /video/ {
  aio            on;
  directio       512;
  output_buffers 1 128k;
}
```

En Linux, [directio](#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](#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](#directio), mientras que [sendfile](#sendfile) se usa para archivos más
pequeños o cuando [directio](#directio) está deshabilitado:

```nginx
location /video/ {
  sendfile       on;
  aio            on;
  directio       8m;
}
```

Finalmente, los archivos pueden leerse y [enviarse](#sendfile) usando
multihilo, sin bloquear un proceso worker:

```nginx
location /video/ {
  sendfile       on;
  aio            threads;
}
```

Las operaciones de lectura y envío de archivos se delegan a los hilos del
[pool](https://es.angie.software//angie/docs/configuration/modules/core.md#thread-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:

```nginx
aio threads=pool$disk;
```

Usar `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`.

Actualmente, el multihilo solo es compatible con los métodos [epoll](https://es.angie.software//angie/docs/configuration/processing.md#epoll), [kqueue](https://es.angie.software//angie/docs/configuration/processing.md#kqueue) y [eventport](https://es.angie.software//angie/docs/configuration/processing.md#eventport). El envío
multihilo de archivos solo está soportado en Linux.

Véase también la directiva [sendfile](#sendfile).

<a id="index-2"></a>

<a id="aio-write"></a>

### aio_write

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `aio_write` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | `aio_write off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location      |

Si [aio](#aio) está habilitado, especifica si se utiliza para la escritura de archivos. Actualmente, esto solo funciona cuando se usa `aio threads` y está limitado a la escritura de archivos temporales con datos recibidos de servidores proxificados.

<a id="index-3"></a>

<a id="alias"></a>

### alias

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `alias` path;   |
|--------------------------------------------------------------------------------------------|-----------------|
| Predeterminado                                                                             | —               |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | location        |

Define un reemplazo para la ubicación especificada. Por ejemplo, con la siguiente configuración:

```nginx
location /i/ {
  alias /data/w3/images/;
}
```

al solicitar `/i/top.gif`, se enviará el archivo /data/w3/images/top.gif.

El valor path puede contener variables, excepto [$document_root](#v-document-root) y [$realpath_root](#v-realpath-root).

Si `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:

```nginx
location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
  alias /data/w3/images/$1;
}
```

Cuando la ubicación coincide con la última parte del valor de la directiva:

```nginx
location /images/ {
  alias /data/w3/images/;
}
```

es mejor usar la directiva [root](#root) en su lugar:

```nginx
location /images/ {
  root /data/w3;
}
```

<a id="index-4"></a>

<a id="auth-delay"></a>

### auth_delay

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `auth_delay` time;     |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | `auth_delay 0s;`       |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location |

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](https://es.angie.software//angie/docs/configuration/modules/http/http_auth_basic.md#http-auth-basic) o por el [resultado de una subsolicitud](https://es.angie.software//angie/docs/configuration/modules/http/http_auth_request.md#http-auth-request).

<a id="index-5"></a>

<a id="auto-redirect"></a>

### auto_redirect

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `auto_redirect` [`on` | `off` | `default`];   |
|--------------------------------------------------------------------------------------------|-----------------------------------------------|
| Predeterminado                                                                             | `auto_redirect default;`                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                        |

Controla el comportamiento de la [redirección](#location-redirect) cuando
una ubicación con prefijo termina en una barra inclinada:

```nginx
location /prefix/ {
    auto_redirect on;
}
```

Aquí, una solicitud a `/prefix` provoca una redirección a `/prefix/`.

El valor `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](https://es.angie.software//angie/docs/configuration/modules/http/http_api.md#a-api),
[proxy_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-pass), [fastcgi_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_fastcgi.md#fastcgi-pass), [uwsgi_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_uwsgi.md#uwsgi-pass), [scgi_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_scgi.md#scgi-pass),
[memcached_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_memcached.md#memcached-pass) o [grpc_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_grpc.md#grpc-pass).

<a id="index-6"></a>

<a id="chunked-transfer-encoding"></a>

### chunked_transfer_encoding

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `chunked_transfer_encoding` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|---------------------------------------------|
| Predeterminado                                                                             | `chunked_transfer_encoding on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

<a id="index-7"></a>

<a id="client"></a>

### client

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client` { ... }   |
|--------------------------------------------------------------------------------------------|--------------------|
| Predeterminado                                                                             | —                  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http               |

Crea un contexto especial `client` para procesar solicitudes HTTP internas
que Angie realiza por sí mismo sin la participación de clientes externos.

El contexto `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.

El contexto `client` se utiliza para:

- enviar solicitudes a la autoridad de certificación en el módulo [ACME](https://es.angie.software//angie/docs/configuration/modules/http/http_acme.md#http-acme)
  mediante la ubicación predefinida `location @acme`, que puede
  configurarse adicionalmente usando directivas del módulo [Proxy](https://es.angie.software//angie/docs/configuration/modules/http/http_proxy.md#http-proxy);
- solicitudes a la API de Docker en el módulo [Docker](https://es.angie.software//angie/docs/configuration/modules/http/http_docker.md#http-docker) mediante las
  ubicaciones predefinidas `location @docker_events` y
  `@docker_containers`, que pueden configurarse adicionalmente usando
  directivas del módulo [Proxy](https://es.angie.software//angie/docs/configuration/modules/http/http_proxy.md#http-proxy);
- sondas de salud de servidores proxificados mediante [upstream_probe (PRO)](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream_probe.md#u-upstream-probe);
- modo [sticky learn](https://es.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#s-u-sticky) con `remote_action` en el módulo
  [Upstream](https://es.angie.software//angie/docs/configuration/modules/stream/stream_upstream.md#stream-upstream) de stream.

El soporte para múltiples bloques `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.

Las directivas especificadas en cada bloque `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](https://es.angie.software//angie/docs/configuration/modules/http/http_acme.md#http-acme) o [Docker](https://es.angie.software//angie/docs/configuration/modules/http/http_docker.md#http-docker)).

Ejemplo de uso de múltiples bloques `client` con herencia de
configuración:

```nginx
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;
    }
}
```

#### NOTE
Aquí se permiten las mismas directivas que en bloques `location` normales,
pero solo funcionan los manejadores de contenido
(como [js_content](https://es.angie.software//angie/docs/installation/external-modules/http_js.md#js-content) o [autoindex](https://es.angie.software//angie/docs/configuration/modules/http/http_autoindex.md#id1))
y los manejadores de variables (como [map](https://es.angie.software//angie/docs/configuration/modules/http/http_map.md#id1)),
así como las directivas que generan peticiones por sí mismas,
como `upstream_probe`.

Las directivas que operan en otras
[etapas de procesamiento de la petición](https://es.angie.software//angie/docs/configuration/processing.md#http-sessions)
(como [limit_req](https://es.angie.software//angie/docs/configuration/modules/http/http_api.md#limit-req), [auth_request](https://es.angie.software//angie/docs/configuration/modules/http/http_auth_request.md#id1),
[try_files](#try-files), filtros de imagen, XSLT, etc.)
no funcionan aquí.

<a id="index-8"></a>

<a id="client-body-buffer-size"></a>

### client_body_buffer_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_body_buffer_size` size;   |
|--------------------------------------------------------------------------------------------|-----------------------------------|
| Predeterminado                                                                             | `client_body_buffer_size 8k|16k;` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](#client-body-temp-path). 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.

<a id="index-9"></a>

<a id="client-body-in-file-only"></a>

### client_body_in_file_only

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_body_in_file_only` `on` | `clean` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------------------------------|
| Predeterminado                                                                             | `client_body_in_file_only off;`                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](#v-request-body-file) o el método [$r->request_body_file](https://es.angie.software//angie/docs/configuration/modules/http/http_perl.md#p-r-request-body-file) del módulo [Perl](https://es.angie.software//angie/docs/configuration/modules/http/http_perl.md#http-perl).

| `on`    | los archivos temporales no se eliminan después de procesar la petición   |
|---------|--------------------------------------------------------------------------|
| `clean` | permite eliminar los archivos temporales tras procesar la petición       |

<a id="index-10"></a>

<a id="client-body-in-single-buffer"></a>

### client_body_in_single_buffer

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_body_in_single_buffer` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------------------------|
| Predeterminado                                                                             | `client_body_in_single_buffer off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](#v-request-body) para reducir el número de operaciones de copia implicadas.

<a id="index-11"></a>

<a id="client-body-temp-path"></a>

### client_body_temp_path

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_body_temp_path` path [level1 [level2 [level3]]];                                                                                                                                              |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `client_body_temp_path client_body_temp;`<br/>(la ruta depende de la [opción de compilación](https://es.angie.software//angie/docs/installation/sourcebuild.md#paths) `--http-client-body-temp-path`) |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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

```nginx
client_body_temp_path /spool/angie/client_temp 1 2;
```

la ruta de un archivo temporal podría ser:

```nginx
/spool/angie/client_temp/7/45/00000123457
```

<a id="index-12"></a>

<a id="client-body-timeout"></a>

### client_body_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_body_timeout` time;   |
|--------------------------------------------------------------------------------------------|-------------------------------|
| Predeterminado                                                                             | `client_body_timeout 60s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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).

<a id="index-13"></a>

<a id="client-header-buffer-size"></a>

### client_header_buffer_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_header_buffer_size` size;   |
|--------------------------------------------------------------------------------------------|-------------------------------------|
| Predeterminado                                                                             | `client_header_buffer_size 1k;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](#large-client-header-buffers).

Si la directiva se especifica en el nivel [server](#server), puede usarse el valor del servidor por defecto. Véase la sección [Selección de servidor virtual](https://es.angie.software//angie/docs/configuration/processing.md#request-processing) para más detalles.

<a id="index-14"></a>

<a id="client-header-timeout"></a>

### client_header_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_header_timeout` time;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | `client_header_timeout 60s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server                    |

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).

<a id="index-15"></a>

<a id="client-max-body-size"></a>

### client_max_body_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `client_max_body_size` size;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `client_max_body_size 1m;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

| `0`   | desactiva la comprobación del tamaño del cuerpo de la petición del cliente   |
|-------|------------------------------------------------------------------------------|

<a id="index-16"></a>

<a id="connection-pool-size"></a>

### connection_pool_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `connection_pool_size` size;        |
|--------------------------------------------------------------------------------------------|-------------------------------------|
| Predeterminado                                                                             | `connection_pool_size 256` | `512;` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location              |

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:

| `256` (bytes)   | en plataformas de 32 bits   |
|-----------------|-----------------------------|
| `512` (bytes)   | en plataformas de 64 bits   |

<a id="index-17"></a>

<a id="default-type"></a>

### default_type

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `default_type` mime-type;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | `default_type text/plain;`  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location      |

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](#types).

<a id="index-18"></a>

<a id="directio"></a>

### directio

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `directio` size | `off`;   |
|--------------------------------------------------------------------------------------------|----------------------------|
| Predeterminado                                                                             | `directio off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location     |

Habilita el uso de la bandera `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](#sendfile) para una petición dada. Se recomienda para servir archivos grandes:

```nginx
directio 4m;
```

o cuando se usa [aio](#aio) en Linux.

<a id="index-19"></a>

<a id="directio-alignment"></a>

### directio_alignment

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `directio_alignment` size;   |
|--------------------------------------------------------------------------------------------|------------------------------|
| Predeterminado                                                                             | `directio_alignment 512;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location       |

Define la alineación para [directio](#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.

<a id="index-20"></a>

<a id="disable-symlinks"></a>

### disable_symlinks

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `disable_symlinks` `off`;<br/><br/>`disable_symlinks` `on` | `if_not_owner` [`from=`part];   |
|--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `disable_symlinks off;`                                                                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                       |

Determina cómo deben tratarse los enlaces simbólicos al abrir archivos:

| `off`          | Se permiten enlaces simbólicos en la ruta y no se comprueban. Este es el comportamiento predeterminado.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `on`           | Si algún componente de la ruta es un enlace simbólico, se deniega el acceso al archivo.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `if_not_owner` | 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.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `from=`part    | Al comprobar enlaces simbólicos (parámetros `on` 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. |

Ejemplo:

```nginx
disable_symlinks on from=$document_root;
```

Esta directiva solo está disponible en sistemas que tengan las interfaces `openat()` y `fstatat()`. Dichos sistemas incluyen versiones modernas de FreeBSD, Linux y Solaris.

#### WARNING
Los parámetros `on` y `if_not_owner` añaden sobrecarga de procesamiento.

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.

#### NOTE
Los módulos [AutoIndex](https://es.angie.software//angie/docs/configuration/modules/http/http_autoindex.md#http-autoindex), [Random Index](https://es.angie.software//angie/docs/configuration/modules/http/http_random_index.md#http-random-index) y [DAV](https://es.angie.software//angie/docs/configuration/modules/http/http_dav.md#http-dav) actualmente ignoran esta directiva.

<a id="index-21"></a>

<a id="early-hints"></a>

### early_hints

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `early_hints` string ...;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | —                           |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location      |

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 `0`, se pasará la respuesta:

```nginx
map $http_sec_fetch_mode $early_hints {
    navigate $http2$http3;
}

server {
    ...
    location / {
        early_hints $early_hints;
        proxy_pass http://example.com;
    }
}
```

<a id="index-22"></a>

<a id="error-page"></a>

### error_page

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `error_page` code ... [=[response]] uri;   |
|--------------------------------------------------------------------------------------------|--------------------------------------------|
| Predeterminado                                                                             | —                                          |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, if in location     |

Define el URI que se mostrará para los errores especificados. El valor uri puede usar variables.

Ejemplo:

```nginx
error_page 404             /404.html;
error_page 500 502 503 504 /50x.html;
```

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 `=response`, por ejemplo:

```nginx
error_page 404 =200 /empty.gif;
```

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:

```nginx
error_page 404 = /404.php;
```

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 `location` con nombre:

```nginx
location / {
  error_page 404 = @fallback;
}

location @fallback {
  proxy_pass http://backend;
}
```

#### NOTE
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:

```nginx
error_page 403      http://example.com/forbidden.html;
error_page 404 =301 http://example.com/notfound.html;
```

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).

<a id="index-23"></a>

<a id="etag"></a>

### etag

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `etag` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | `etag on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location |

Activa o desactiva la generación automática del campo de cabecera de respuesta `ETag` para recursos estáticos.

<a id="index-24"></a>

<a id="d-http"></a>

### http

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `http` { ... }   |
|--------------------------------------------------------------------------------------------|------------------|
| Predeterminado                                                                             | —                |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main             |

Proporciona el contexto de archivo de configuración en el que se especifican las directivas del servidor HTTP.

<a id="index-25"></a>

<a id="if-modified-since"></a>

### if_modified_since

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `if_modified_since` `off` | `exact` | `before`;   |
|--------------------------------------------------------------------------------------------|---------------------------------------------------|
| Predeterminado                                                                             | `if_modified_since exact;`                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                            |

Especifica cómo comparar la fecha de modificación de una respuesta con la fecha del campo de cabecera `If-Modified-Since` en la petición:

| `off`    | la respuesta siempre se considera modificada                                                                                      |
|----------|-----------------------------------------------------------------------------------------------------------------------------------|
| `exact`  | coincidencia exacta                                                                                                               |
| `before` | la fecha de modificación de la respuesta es menor o igual que la fecha en el campo de cabecera `If-Modified-Since` de la petición |

<a id="index-26"></a>

<a id="ignore-invalid-headers"></a>

### ignore_invalid_headers

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `ignore_invalid_headers` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------------------|
| Predeterminado                                                                             | `ignore_invalid_headers on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](#underscores-in-headers)).

Si la directiva se especifica en el nivel [server](#server), puede usarse el valor del servidor predeterminado.

<a id="index-27"></a>

<a id="internal"></a>

### internal

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `internal;`   |
|--------------------------------------------------------------------------------------------|---------------|
| Predeterminado                                                                             | —             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | location      |

Especifica que un `location` dado solo puede usarse para peticiones internas. Para peticiones externas, se devuelve el error de cliente 404 (Not Found). Las peticiones internas son las siguientes:

* peticiones redirigidas por las directivas [error_page](#error-page), [index](https://es.angie.software//angie/docs/configuration/modules/http/http_index.md#id1), [random_index](https://es.angie.software//angie/docs/configuration/modules/http/http_random_index.md#random-index) y [try_files](#try-files);
* peticiones redirigidas por el campo de cabecera de respuesta `X-Accel-Redirect` de un servidor upstream;
* subpeticiones formadas por el comando `include virtual` del módulo [SSI](https://es.angie.software//angie/docs/configuration/modules/http/http_ssi.md#http-ssi), por las directivas del módulo [Addition](https://es.angie.software//angie/docs/configuration/modules/http/http_addition.md#http-addition), y por las directivas [auth_request](https://es.angie.software//angie/docs/configuration/modules/http/http_auth_request.md#id1) y [mirror](https://es.angie.software//angie/docs/configuration/modules/http/http_mirror.md#id1);
* peticiones modificadas por la directiva [rewrite](https://es.angie.software//angie/docs/configuration/modules/http/http_rewrite.md#id4).

Ejemplo:

```nginx
error_page 404 /404.html;

location = /404.html {
  internal;
}
```

Dado que el error 404 se devuelve en el contexto de un `location` con la directiva `internal`, las peticiones externas pueden redirigirse a un location diferente. Esto permite usar el mismo prefijo tanto para peticiones externas como internas, pero con procesamientos distintos, por ejemplo:

```nginx
location /path {

    internal;
    error_page 404 =@external;

    proxy_pass https://internal;
}

location @external {

    proxy_pass https://external;
}
```

Aquí, una petición externa `GET /path` se enviará por proxy a
`https://external/path`, mientras que la misma petición interna se enviará por proxy a
`https://internal/path`.

#### NOTE
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 `rewrite or internal redirection cycle` en el registro de errores.

<a id="index-28"></a>

<a id="keepalive-disable"></a>

### keepalive_disable

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `keepalive_disable` `none` | browser ...;   |
|--------------------------------------------------------------------------------------------|---------------------------------------------|
| Predeterminado                                                                             | `keepalive_disable msie6;`                  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

| `none`   | activa las conexiones keep-alive con todos los navegadores                                                                       |
|----------|----------------------------------------------------------------------------------------------------------------------------------|
| `msie6`  | desactiva las conexiones keep-alive con versiones antiguas de MSIE, una vez que se recibe una petición POST                      |
| `safari` | desactiva las conexiones keep-alive con Safari y navegadores similares a Safari en macOS y sistemas operativos similares a macOS |

<a id="index-29"></a>

<a id="keepalive-requests"></a>

### keepalive_requests

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `keepalive_requests` number;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `keepalive_requests 1000;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

<a id="index-30"></a>

<a id="keepalive-time"></a>

### keepalive_time

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `keepalive_time` time;   |
|--------------------------------------------------------------------------------------------|--------------------------|
| Predeterminado                                                                             | `keepalive_time 1h;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location   |

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.

<a id="index-31"></a>

<a id="keepalive-timeout"></a>

### keepalive_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `keepalive_timeout` timeout [header_timeout];   |
|--------------------------------------------------------------------------------------------|-------------------------------------------------|
| Predeterminado                                                                             | `keepalive_timeout 75s;`                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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   |
|-----------|------------------------------------------------------------------------------------------------------------------------------|
| `0`       | desactiva las conexiones keep-alive de clientes                                                                              |

El segundo parámetro, *opcional*, establece un valor en el campo de cabecera de respuesta `Keep-Alive: timeout=time`. Los dos parámetros pueden diferir.

El campo de cabecera `Keep-Alive: timeout=time` es reconocido por Mozilla y Konqueror. MSIE cierra las conexiones keep-alive por sí mismo en aproximadamente 60 segundos.

<a id="index-32"></a>

<a id="large-client-header-buffers"></a>

### large_client_header_buffers

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `large_client_header_buffers` number size;   |
|--------------------------------------------------------------------------------------------|----------------------------------------------|
| Predeterminado                                                                             | `large_client_header_buffers 4 8k;`          |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](#server), puede usarse el valor del servidor por defecto.

<a id="index-33"></a>

<a id="limit-except"></a>

### limit_except

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_except` method1 [method2...] { ... };   |
|--------------------------------------------------------------------------------------------|------------------------------------------------|
| Predeterminado                                                                             | —                                              |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | location                                       |

Limita los métodos HTTP permitidos dentro de una ubicación. El parámetro method puede ser uno de los
siguientes: `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](https://es.angie.software//angie/docs/configuration/modules/http/http_access.md#http-access) y
[Auth Basic](https://es.angie.software//angie/docs/configuration/modules/http/http_auth_basic.md#http-auth-basic):

```nginx
limit_except GET {
  allow 192.168.1.0/32;
  deny  all;
}
```

#### NOTE
La restricción en este ejemplo se aplica a todos los métodos
**excepto** `GET` y `HEAD`.

<a id="index-34"></a>

<a id="limit-rate"></a>

### limit_rate

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_rate` rate;                     |
|--------------------------------------------------------------------------------------------|----------------------------------------|
| Predeterminado                                                                             | `limit_rate 0;`                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, if in location |

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:

```nginx
map $slow $rate {
  1     4k;
  2     8k;
}

limit_rate $rate;
```

El límite de velocidad también puede establecerse en la variable [$limit_rate](#v-limit-rate), aunque este método no se recomienda:

```nginx
server {

  if ($slow) {
    set $limit_rate 4k;
  }

}
```

El límite de velocidad también puede establecerse en el campo de cabecera `X-Accel-Limit-Rate` de la respuesta de un servidor proxificado. Esta capacidad puede desactivarse mediante las directivas [proxy_ignore_headers](https://es.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-ignore-headers), [fastcgi_ignore_headers](https://es.angie.software//angie/docs/configuration/modules/http/http_fastcgi.md#fastcgi-ignore-headers), [uwsgi_ignore_headers](https://es.angie.software//angie/docs/configuration/modules/http/http_uwsgi.md#uwsgi-ignore-headers) y [scgi_ignore_headers](https://es.angie.software//angie/docs/configuration/modules/http/http_scgi.md#scgi-ignore-headers).

<a id="index-35"></a>

<a id="limit-rate-after"></a>

### limit_rate_after

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_rate_after` size;               |
|--------------------------------------------------------------------------------------------|----------------------------------------|
| Predeterminado                                                                             | `limit_rate_after 0;`                  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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:

```nginx
location /flv/ {
 flv;
 limit_rate_after 500k;
 limit_rate       50k;
}
```

<a id="index-36"></a>

<a id="lingering-close"></a>

### keepalive_disable

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `lingering_timeout` time;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | `lingering_timeout 5s;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location      |

Controla cómo Angie cierra las conexiones de clientes.

| `on`     | instruye a Angie a [esperar](#lingering-timeout) y [procesar](#lingering-time) 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.   |
|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `always` | Angie siempre esperará y procesará datos adicionales del cliente.                                                                                                                                                                              |
| `off`    | 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](#server).

<a id="index-37"></a>

<a id="lingering-time"></a>

### lingering_time

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `lingering_time` time;   |
|--------------------------------------------------------------------------------------------|--------------------------|
| Predeterminado                                                                             | `lingering_time 30s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location   |

Cuando [keepalive_disable](#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.

<a id="index-38"></a>

<a id="lingering-timeout"></a>

### lingering_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `lingering_timeout` time;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | `lingering_timeout 5s;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location      |

Cuando [keepalive_disable](#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](#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 `lingering_timeout`.

#### NOTE
En nginx, la directiva análoga se llama [keepalive_min_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_min_timeout).

<a id="index-39"></a>

<a id="listen"></a>

### listen

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `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`]:[`keepintvl`]:[`keepcnt`]];<br/><br/>`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`]:[`keepintvl`]:[`keepcnt`]];<br/><br/>`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`]];   |
|--------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `listen *:80` | `*:8000;`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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:

```nginx
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;
```

Las direcciones IPv6 se especifican entre corchetes:

```nginx
listen [::]:8000;
listen [::1];
```

Los sockets de dominio UNIX se especifican con el prefijo `unix:`:

```nginx
listen unix:/var/run/angie.sock;
```

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 `server` para ese puerto
  se convierte en el servidor por defecto para peticiones con una cabecera `Host` no coincidente.
- Si la directiva se omite por completo, Angie usa `*:80`
  cuando se ejecuta con privilegios de superusuario, o `*:8000` en caso contrario.

| `default_server`   | El servidor con este parámetro especificado<br/>será el servidor por defecto para el par address:port dado<br/>(juntos forman un *socket de escucha*).<br/><br/>Si no hay directivas con el parámetro `default_server`,<br/>el servidor por defecto para el socket de escucha<br/>será el primer servidor en la configuración que atienda ese socket.                                                                  |
|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `ssl`              | indica que todas las conexiones aceptadas en este socket de escucha deben funcionar en modo SSL. Esto permite una [configuración más compacta](https://es.angie.software//angie/docs/configuration/ssl.md#compact-server) para el servidor que maneja tanto peticiones HTTP como HTTPS.                                                                                                                                |
| `http2`            | configura el puerto para aceptar conexiones HTTP/2. Normalmente, para que esto funcione debe especificarse también el parámetro `ssl`, aunque Angie también puede configurarse para aceptar conexiones HTTP/2 sin SSL.<br/><br/>#### Deprecated<br/>Obsoleto desde la versión 1.2.0.<br/><br/>Usa en su lugar la directiva [http2](https://es.angie.software//angie/docs/configuration/modules/http/http_v2.md#http2). |
| `quic`             | configura el puerto para aceptar conexiones QUIC.<br/>Para usar esta opción,<br/>Angie debe tener el [módulo HTTP/3](https://es.angie.software//angie/docs/configuration/modules/http/http_v3.md#http-v3)<br/>habilitado y configurado.<br/>Con `quic` activado,<br/>también se puede especificar `reuseport`<br/>para que puedan usarse múltiples procesos worker.                                                    |
| `proxy_protocol`   | indica que todas las conexiones aceptadas en este socket de escucha deben usar el protocolo PROXY.                                                                                                                                                                                                                                                                                                                     |

La directiva `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=`number                                                    | establece la tabla de enrutamiento, FIB (la opción `SO_SETFIB`) para el socket de escucha. Actualmente solo funciona en FreeBSD.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `fastopen=`number                                                  | 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.<br/><br/>#### WARNING<br/>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.                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `backlog=`number                                                   | establece el parámetro `backlog` en la llamada `listen()` que<br/>limita la longitud máxima de la cola de conexiones pendientes. Por<br/>defecto, backlog se establece en -1 en FreeBSD, DragonFly BSD y macOS, y<br/>en 511 en otras plataformas.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `rcvbuf=`size                                                      | establece el tamaño del búfer de recepción (la opción `SO_RCVBUF`) para el<br/>socket de escucha.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `sndbuf=`size                                                      | establece el tamaño del búfer de envío (la opción `SO_SNDBUF`) para el<br/>socket de escucha.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `accept_filter=`filter                                             | establece el nombre del filtro de aceptación (la opción `SO_ACCEPTFILTER`) para<br/>el socket de escucha que filtra las conexiones entrantes antes de pasarlas<br/>a `accept()`. Esto solo funciona en FreeBSD y NetBSD 5.0+.<br/>Los valores posibles son `dataready` y `httpready`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `deferred`                                                         | indica que se use un `accept()` diferido (la<br/>opción de socket `TCP_DEFER_ACCEPT`) en Linux.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `bind`                                                             | indica que se haga una llamada `bind()` separada para un par address:port<br/>dado. Esto es útil porque si hay varias directivas `listen`<br/>con el mismo puerto pero diferentes direcciones, y una de las<br/>directivas `listen` escucha en todas las direcciones para el<br/>`port` dado (`*:port`), Angie hará `bind()` solo a<br/>`*:port`. Debe tenerse en cuenta que en este caso se hará la llamada al sistema<br/>`getsockname()` para determinar la dirección que aceptó la<br/>conexión. Si se usan los parámetros `setfib`, `fastopen`, `backlog`,<br/>`rcvbuf`, `sndbuf`, `accept_filter`, `deferred`,<br/>`ipv6only`, `reuseport` o `so_keepalive`,<br/>siempre se hará una llamada `bind()` separada para un par `address:port` dado. |
| `ipv6only=on` | `off`                                              | determina (mediante la opción de socket `IPV6_V6ONLY`)<br/>si un socket IPv6 que escucha en una dirección comodín [::] aceptará<br/>solo conexiones IPv6 o tanto conexiones IPv6 como IPv4. Este parámetro<br/>está activado por defecto. Solo puede establecerse una vez al inicio.                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `reuseport`                                                        | indica que se cree un socket de escucha individual para<br/>cada proceso worker (usando la opción de socket `SO_REUSEPORT` en<br/>Linux 3.9+ y DragonFly BSD, o `SO_REUSEPORT_LB` en FreeBSD 12+),<br/>permitiendo que el kernel distribuya las conexiones entrantes entre los procesos<br/>worker. Actualmente solo funciona en Linux 3.9+, DragonFly BSD y<br/>FreeBSD 12+.<br/><br/>#### WARNING<br/>El uso inapropiado del parámetro `reuseport`<br/>puede tener implicaciones de seguridad.                                                                                                                                                                                                                                                      |
| `multipath`                                                        | habilita la aceptación de conexiones mediante [Multipath TCP](https://en.wikipedia.org/wiki/Multipath_TCP) (MPTCP),<br/>soportado en el kernel de Linux desde la versión 5.6.<br/>Este parámetro es **incompatible** con `quic`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `so_keepalive=on` | `off` | [`keepidle`]:[`keepintvl`]:[`keepcnt`] | configura el comportamiento de "TCP keepalive" para el socket de escucha.<br/><br/>| `''`   | si se omite este parámetro, la configuración del sistema operativo estará en efecto para el socket   |<br/>|--------|------------------------------------------------------------------------------------------------------|<br/>| `on`   | la opción `SO_KEEPALIVE` se activa para el socket                                                    |<br/>| `off`  | la opción `SO_KEEPALIVE` se desactiva para el socket                                                 |                                                                                                                                                                                |

Algunos sistemas operativos soportan el establecimiento de parámetros TCP keepalive por
socket usando las opciones de socket `TCP_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. Por ejemplo,

```nginx
so_keepalive=30m::10
```

establecerá el tiempo de espera de inactividad (`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.

Ejemplo:

```nginx
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;
```

<a id="index-40"></a>

<a id="location"></a>

### location

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `location` ([ = | ~ | ~\* | ^~ ] uri | `@name`)+ { ... }   |
|--------------------------------------------------------------------------------------------|------------------------------------------------------------|
| Predeterminado                                                                             | —                                                          |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | server, location                                           |

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, después de decodificar
el texto codificado en formato "%XX", resolver las referencias a componentes de ruta
relativa "." y "..", y la posible [compresión](#merge-slashes) de dos o más
barras adyacentes en una sola barra.

Un `location` puede definirse mediante una cadena de prefijo o mediante
una expresión regular.

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.

#### NOTE
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 `location` pueden anidarse.

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 `^~`,
entonces no se comprueban las expresiones regulares.

También, usando el modificador `=`, 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.

Ejemplo:

```nginx
location =/ {
   #configuration A
}

location / {
   #configuration B
}

location /documents/ {
   #configuration C
}

location ^~/images/ {
   #configuration D
}

location ~*\.(gif|jpg|jpeg)$ {
   #configuration E
}
```

- Una solicitud `/` coincidirá con la configuración A,
- una solicitud `/index.html` coincidirá con la configuración B,
- una solicitud `/documents/document.html` coincidirá con la configuración C,
- una solicitud `/images/1.gif` coincidirá con la configuración D,
- y una solicitud `/documents/1.jpg` coincidirá con la configuración E.

<a id="location-redirect"></a>

#### NOTE
Si un `location` prefijo termina con una barra y
[auto_redirect](#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
permanente con código 301, apuntando al URI solicitado con la barra añadida.

Con un `location` de coincidencia exacta de URI, no se aplica redirección:

```nginx
location /user/ {
  proxy_pass http://user.example.com;
}

location =/user {
  proxy_pass http://login.example.com;
}
```

<a id="named-location"></a>

El prefijo `@` define un `location` *nombrado*. Estos locations no se usan para el procesamiento normal de peticiones,
sino que están destinados únicamente a la redirección de peticiones.
No pueden anidarse ni contener locations anidados.

<a id="combined-locations"></a>

#### Ubicaciones combinadas

Varios contextos `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*.

Supongamos que las configuraciones A, D y E del ejemplo anterior
definen configuraciones idénticas; puedes combinarlas en un único `location`:

```nginx
location =/
         ^~/images/
         ~*\.(gif|jpg|jpeg)$ {
   # configuración general
}
```

Un `location` nombrado también puede formar parte de la combinación:

```nginx
location =/
         @named_combined {
   #...
}
```

#### WARNING
Un `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)$  *...*`.

#### NOTE
Actualmente, un `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.

<a id="index-41"></a>

<a id="log-not-found"></a>

### log_not_found

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `log_not_found` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | `log_not_found on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location          |

Activa o desactiva el registro de errores sobre archivos no encontrados en [error_log](https://es.angie.software//angie/docs/configuration/modules/core.md#error-log).

<a id="index-42"></a>

<a id="log-subrequest"></a>

### log_subrequest

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `log_subrequest` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | `log_subrequest off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location           |

Activa o desactiva el registro de subpeticiones en [access_log](https://es.angie.software//angie/docs/configuration/modules/http/http_log.md#access-log).

<a id="index-43"></a>

<a id="max-headers"></a>

### max_headers

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `max_headers` number;   |
|--------------------------------------------------------------------------------------------|-------------------------|
| Predeterminado                                                                             | `max_headers 1000;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server            |

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 `400 (Bad Request)`.

Cuando esta directiva se establece en el nivel [server](#server),
puede aplicarse el valor del servidor por defecto.
Para más información, consulta la sección [Selección de servidor virtual](https://es.angie.software//angie/docs/configuration/processing.md#virtual-server-selection).

<a id="index-44"></a>

<a id="max-ranges"></a>

### max_ranges

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `max_ranges` number;   |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | —                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location |

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.

| `0`   | desactiva completamente el soporte de byte-range   |
|-------|----------------------------------------------------|

<a id="index-45"></a>

<a id="merge-slashes"></a>

### merge_slashes

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `merge_slashes` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | `merge_slashes on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server                    |

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 `//scripts/one.php` no coincidiría con

```nginx
location /scripts/ { }
```

y podría procesarse como un archivo estático. Así se convierte en `/scripts/one.php`.

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](#server), puede usarse el valor del servidor por defecto.

<a id="index-46"></a>

<a id="msie-padding"></a>

### msie_padding

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `msie_padding` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `msie_padding on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location         |

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.

<a id="index-47"></a>

<a id="msie-refresh"></a>

### msie_refresh

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `msie_refresh` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `msie_refresh off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location         |

Activa o desactiva la emisión de actualizaciones en lugar de redirecciones para clientes MSIE.

<a id="index-48"></a>

<a id="open-file-cache"></a>

### open_file_cache

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `open_file_cache` `off`;<br/><br/>`open_file_cache` `max=`N [`inactive=`time];   |
|--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| Predeterminado                                                                             | `open_file_cache off;`                                                           |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](#open-file-cache-errors).

| `max`      | 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)   |
|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| `inactive` | define un tiempo tras el cual un elemento se elimina de la caché si no ha sido accedido durante este tiempo;<br/><br/>por defecto, 60 segundos           |
| `off`      | desactiva la caché                                                                                                                                       |

Ejemplo:

```nginx
open_file_cache          max=1000 inactive=20s;
open_file_cache_valid    30s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;
```

<a id="index-49"></a>

<a id="open-file-cache-errors"></a>

### open_file_cache_errors

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `open_file_cache_errors` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------------------|
| Predeterminado                                                                             | `open_file_cache_errors off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                   |

Activa o desactiva el almacenamiento en caché de errores de búsqueda de archivos mediante [open_file_cache](#open-file-cache).

<a id="index-50"></a>

<a id="open-file-cache-min-uses"></a>

### open_file_cache_min_uses

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `open_file_cache_min_uses` number;   |
|--------------------------------------------------------------------------------------------|--------------------------------------|
| Predeterminado                                                                             | `open_file_cache_min_uses 1;`        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location               |

Define el número mínimo de accesos a archivos durante el período configurado por el parámetro `inactive` de la directiva [open_file_cache](#open-file-cache), requeridos para que un descriptor de archivo permanezca abierto en la caché.

<a id="index-51"></a>

<a id="open-file-cache-valid"></a>

### open_file_cache_valid

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `open_file_cache_valid` time;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | `open_file_cache_valid 60s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location          |

Define un tiempo tras el cual los elementos de [open_file_cache](#open-file-cache) deben ser validados.

<a id="index-52"></a>

<a id="output-buffers"></a>

### output_buffers

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `output_buffers` number size;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | `output_buffers 2 32k;`         |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location          |

Define el número y tamaño de los búferes usados para leer una respuesta desde disco.

<a id="index-53"></a>

<a id="port-in-redirect"></a>

### port_in_redirect

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `port_in_redirect` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------------|
| Predeterminado                                                                             | `port_in_redirect on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location             |

Activa o desactiva la especificación del puerto en redirecciones [absolutas](#absolute-redirect) emitidas por Angie.

El uso del nombre de servidor principal en redirecciones se controla mediante la directiva [server_name_in_redirect](#server-name-in-redirect).

<a id="index-54"></a>

<a id="postpone-output"></a>

### postpone_output

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `postpone_output` size;   |
|--------------------------------------------------------------------------------------------|---------------------------|
| Predeterminado                                                                             | `postpone_output 1460;`   |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location    |

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.

| `0`   | desactiva el aplazamiento de transmisión de datos   |
|-------|-----------------------------------------------------|

<a id="index-55"></a>

<a id="read-ahead"></a>

### read_ahead

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `read_ahead` size;     |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | `read_ahead 0;`        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location |

Define la cantidad de lectura anticipada para el kernel al trabajar con archivos.

En Linux se utiliza la llamada al sistema `posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)`, por lo que el parámetro size se ignora.

En FreeBSD se utiliza la llamada al sistema `fcntl(O_READAHEAD,` size ), soportada desde FreeBSD 9.0-CURRENT.

<a id="index-56"></a>

<a id="recursive-error-pages"></a>

### recursive_error_pages

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `recursive_error_pages` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|-----------------------------------------|
| Predeterminado                                                                             | `recursive_error_pages off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                  |

Activa o desactiva la realización de varias redirecciones usando la directiva [error_page](#error-page). El número de estas redirecciones está [limitado](#internal).

<a id="index-57"></a>

<a id="request-pool-size"></a>

### request_pool_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `request_pool_size` size;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | `request_pool_size 4k;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server                |

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.

<a id="index-58"></a>

<a id="reset-timedout-connection"></a>

### reset_timedout_connection

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `reset_timedout_connection` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|---------------------------------------------|
| Predeterminado                                                                             | `reset_timedout_connection off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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 `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.

#### NOTE
Las conexiones keep-alive se cierran normalmente cuando expiran.

<a id="index-59"></a>

<a id="resolver"></a>

### resolver

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `resolver` address ... [`valid=`time] [`ipv4=``on` | `off`] [`ipv6=``on` | `off`] [`status_zone=`zone];   |
|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | —                                                                                                         |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, upstream                                                                          |

Configura los servidores de nombres usados para resolver los nombres de servidores upstream en direcciones, por ejemplo:

```nginx
resolver 127.0.0.53 [::1]:5353;
```

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.

#### NOTE
Se recomienda usar un resolver local de confianza, como `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é.

#### NOTE
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.
Si se repite, la última definición tiene efecto.

Por defecto, Angie almacena en caché las respuestas usando el valor TTL de la respuesta. Si no se especifica la directiva `resolver` y no se realizan consultas DNS dinámicas (por ejemplo, al usar nombres fijos en [Proxy](https://es.angie.software//angie/docs/configuration/modules/http/http_proxy.md#http-proxy) sin variables), no es necesario especificar un resolver: los nombres se resolverán al inicio usando el resolver del sistema. El parámetro opcional `valid` permite sobrescribir esto:

| `valid`   | parámetro *opcional* que permite sobrescribir el período de validez de la caché de respuestas   |
|-----------|-------------------------------------------------------------------------------------------------|
```nginx
resolver 127.0.0.53 [::1]:5353 valid=30s;
```

Por defecto, Angie buscará tanto direcciones IPv4 como IPv6 al resolver.

| `ipv4=off`   | desactiva la búsqueda de direcciones IPv4   |
|--------------|---------------------------------------------|
| `ipv6=off`   | desactiva la búsqueda de direcciones IPv6   |

<a id="resolver-status"></a>

| `status_zone`   | parámetro *opcional*;<br/>activa la recogida de métricas de peticiones y respuestas<br/>de los servidores DNS ([/status/resolvers/<zone>](https://es.angie.software//angie/docs/configuration/modules/http/http_api.md#api-status-resolvers))<br/>en la zona especificada   |
|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

<a id="index-60"></a>

<a id="resolver-timeout"></a>

### resolver_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `resolver_timeout` time;         |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | `resolver_timeout 30s;`          |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, upstream |

Define un tiempo de espera para la resolución de nombres, por ejemplo:

```nginx
resolver_timeout 5s;
```

<a id="index-61"></a>

<a id="error-log-user-tag"></a>

### error_log_user_tag

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `error_log_user_tag` value;          |
|--------------------------------------------------------------------------------------------|--------------------------------------|
| Predeterminado                                                                             | —                                    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, limit_except |

Añade una etiqueta específica de la petición a los registros del log de errores. El value es un [valor complejo](https://es.angie.software//angie/docs/configuration/configfile.md#syntax) y puede usar variables. La directiva puede especificarse múltiples veces para añadir varias etiquetas. Las etiquetas pueden filtrarse con `filter=tag:` en [error_log](https://es.angie.software//angie/docs/configuration/modules/core.md#error-log).

<a id="index-62"></a>

<a id="root"></a>

### root

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `root` path;                           |
|--------------------------------------------------------------------------------------------|----------------------------------------|
| Predeterminado                                                                             | `root html;`                           |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, if in location |

Define el directorio raíz para las peticiones. Por ejemplo, con la siguiente configuración:

```nginx
location /i/ {
  root /data/w3;
}
```

El archivo `/data/w3/i/top.gif` se enviará en respuesta a la petición `/i/top.gif`.

El valor path puede contener variables, excepto [$document_root](#v-document-root) y [$realpath_root](#v-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](#alias).

<a id="index-63"></a>

<a id="satisfy"></a>

### satisfy

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `satisfy` `all` | `any`;   |
|--------------------------------------------------------------------------------------------|----------------------------|
| Predeterminado                                                                             | `satisfy all;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location     |

Permite el acceso si todos (`all`) o al menos uno (`any`) de los módulos [Access](https://es.angie.software//angie/docs/configuration/modules/http/http_access.md#http-access), [Auth Basic](https://es.angie.software//angie/docs/configuration/modules/http/http_auth_basic.md#http-auth-basic) o [Auth Request](https://es.angie.software//angie/docs/configuration/modules/http/http_auth_request.md#http-auth-request) permiten el acceso.

```nginx
location / {
  satisfy any;

  allow 192.168.1.0/32;
  deny  all;

  auth_basic           "closed site";
  auth_basic_user_file conf/htpasswd;
}
```

<a id="index-64"></a>

<a id="send-lowat"></a>

### send_lowat

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `send_lowat` size;     |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | `send_lowat 0;`        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location |

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 `NOTE_LOWAT` del método [kqueue](https://es.angie.software//angie/docs/configuration/processing.md#kqueue), o bien la opción de socket `SO_SNDLOWAT`. En ambos casos se usa el tamaño especificado.

<a id="index-65"></a>

<a id="send-timeout"></a>

### send_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `send_timeout` time;   |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | `send_timeout 60s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location |

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.

<a id="index-66"></a>

<a id="sendfile"></a>

### sendfile

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `sendfile` `on` | `off`;               |
|--------------------------------------------------------------------------------------------|----------------------------------------|
| Predeterminado                                                                             | `sendfile off;`                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, if in location |

Activa o desactiva el uso de `sendfile()`.

[aio](#aio) puede usarse para precargar datos para `sendfile()`:

```nginx
location /video/ {
  sendfile       on;
  tcp_nopush     on;
  aio            on;
}
```

En esta configuración, `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](#read-ahead).

<a id="index-67"></a>

<a id="sendfile-max-chunk"></a>

### sendfile_max_chunk

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `sendfile_max_chunk` size;   |
|--------------------------------------------------------------------------------------------|------------------------------|
| Predeterminado                                                                             | `sendfile_max_chunk 2m;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location       |

Limita la cantidad de datos que pueden transferirse en una sola llamada a `sendfile()`. Sin este límite, una conexión rápida podría monopolizar completamente el proceso de trabajo.

<a id="index-68"></a>

<a id="server"></a>

### server

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `server` { ... }   |
|--------------------------------------------------------------------------------------------|--------------------|
| Predeterminado                                                                             | —                  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http               |

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](#listen) describen todas las direcciones y puertos que deben aceptar conexiones para el servidor, y la directiva [server_name](#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](https://es.angie.software//angie/docs/configuration/processing.md#request-processing).

<a id="index-69"></a>

<a id="server-name"></a>

### server_name

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `server_name` name ...;   |
|--------------------------------------------------------------------------------------------|---------------------------|
| Predeterminado                                                                             | `server_name ""`;         |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | server                    |

Define los nombres de un servidor virtual, por ejemplo:

```nginx
server {
  server_name example.com www.example.com;
}
```

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:

```nginx
server {
  server_name example.com *.example.com www.example.*;
}
```

Tales nombres se denominan nombres comodín.

Los dos primeros nombres del ejemplo anterior pueden combinarse en uno:

```nginx
server {
  server_name .example.com;
}
```

También es posible usar expresiones regulares en los nombres de servidor, precediendo el nombre con una virgulilla ("~"):

```nginx
server {
  server_name ~^www\d+\.example\.com$ www.example.com;
}
```

Las expresiones regulares pueden contener capturas que luego pueden usarse en otras directivas:

```nginx
server {
  server_name ~^(www\.)?(.+)$;

  location / {
     root /sites/$2;
  }
}

server {
  server_name _;

  location / {
     root /sites/default;
  }
}
```

Los grupos de captura con nombre en expresiones regulares crean variables que luego pueden usarse en otras directivas:

```nginx
server {
  server_name ~^(www\.)?(?<domain>.+)$;

  location / {
     root /sites/$domain;
  }
}

server {
  server_name _;

  location / {
     root /sites/default;
  }
}
```

#### NOTE
Si el parámetro de la directiva se define como [$hostname](#v-hostname),
se utiliza el nombre de la máquina.

También puede especificarse un nombre de servidor vacío:

```nginx
server {
    server_name www.example.com "";
}
```

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. `*.example.com`;
- nombre comodín más largo que termine con un asterisco, p. ej. `mail.*`;
- primera expresión regular coincidente (en orden de aparición en el archivo de configuración),
  incluyendo un nombre vacío.

#### WARNING
Para usar `server_name` con TLS,
se requiere la terminación de la conexión TLS.
Esta directiva coincide con el `Host` en la petición HTTP,
por lo que el handshake debe completarse y la conexión estar descifrada.

<a id="index-70"></a>

<a id="server-name-in-redirect"></a>

### server_name_in_redirect

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `server_name_in_redirect` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|-------------------------------------------|
| Predeterminado                                                                             | `server_name_in_redirect off`;            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                    |

Activa o desactiva el uso del nombre de servidor principal, especificado por la directiva [server_name](#server-name), en redirecciones [absolutas](#absolute-redirect) emitidas por Angie.

| `on`   | se usa el nombre de servidor principal definido por la directiva [server_name](#server-name)                                    |
|--------|---------------------------------------------------------------------------------------------------------------------------------|
| `off`  | se usa el nombre del campo de cabecera de petición "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](#port-in-redirect).

<a id="index-71"></a>

<a id="server-names-hash-bucket-size"></a>

### server_names_hash_bucket_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `server_names_hash_bucket_size` size;              |
|--------------------------------------------------------------------------------------------|----------------------------------------------------|
| Predeterminado                                                                             | `server_names_hash_bucket_size 32` | `64` | `128;` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="index-72"></a>

<a id="server-names-hash-max-size"></a>

### server_names_hash_max_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `server_names_hash_max_size` size;   |
|--------------------------------------------------------------------------------------------|--------------------------------------|
| Predeterminado                                                                             | `server_names_hash_max_size 512`;    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http                                 |

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](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="index-73"></a>

<a id="server-tokens"></a>

### server_tokens

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `server_tokens` `on` | `off` | `build` | string;   |
|--------------------------------------------------------------------------------------------|----------------------------------------------------|
| Predeterminado                                                                             | `server_tokens on;`                                |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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 `Server`.
El parámetro `build` activa la inclusión del nombre de compilación,
definido mediante el parámetro correspondiente de [configure](https://es.angie.software//angie/docs/installation/sourcebuild.md#configure),
junto con la versión.

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 `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`.

<a id="index-74"></a>

<a id="status-zone"></a>

### status_zone

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `status_zone` `off` | zone | key `zone=`zone[:number];   |
|--------------------------------------------------------------------------------------------|----------------------------------------------------------|
| Predeterminado                                                                             | —                                                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | server, location, if in location                         |

Reserva una zona de memoria compartida para recopilar
las métricas de [/status/http/location_zones/<zone>](https://es.angie.software//angie/docs/configuration/modules/http/http_api.md#api-status-http-location-zones) y [/status/http/server_zones/<zone>](https://es.angie.software//angie/docs/configuration/modules/http/http_api.md#api-status-http-server-zones).

Varios contextos `server`
pueden compartir la misma zona para la recogida de datos;
el valor especial `off`
desactiva la recogida de datos en bloques `location` anidados.

La sintaxis con un único valor zone
combina todas las métricas del contexto actual en una sola zona de memoria compartida:

```nginx
server {

    listen 80;
    server_name *.example.com;

    status_zone single;
    # ...
}
```

La sintaxis alternativa permite definir los siguientes parámetros:

| key               | Una cadena con variables, cuyo valor determina la agrupación de las peticiones en<br/>la zona. Todas las peticiones que produzcan valores idénticos tras la sustitución<br/>se agrupan juntas. Si la sustitución produce un valor vacío,<br/>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.<br/>Si nuevos valores de key superan este límite, se agrupan bajo `zone`.<br/><br/>El valor por defecto es 1.                                                                                                   |

En el siguiente ejemplo,
todas las peticiones que compartan el mismo valor de `$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`:

```nginx
server {

    listen 80;
    server_name *.example.com;

    status_zone $host zone=host_zone:10;

    location / {

        proxy_pass http://example.com;
    }
}
```

De este modo, las métricas resultantes se dividen entre hosts individuales en la salida de la API.

<a id="index-75"></a>

<a id="subrequest-output-buffer-size"></a>

### subrequest_output_buffer_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `subrequest_output_buffer_size` size;      |
|--------------------------------------------------------------------------------------------|--------------------------------------------|
| Predeterminado                                                                             | `subrequest_output_buffer_size 4k` | `8k;` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                     |

Define el tamaño del búfer usado para almacenar el cuerpo de la respuesta de una subpetición.
Por defecto, el tamaño del búfer es igual a una página de memoria. Esto corresponde a
`4K` o `8K`, dependiendo de la plataforma. Puede configurarse más pequeño
si es necesario.

#### NOTE
La directiva es aplicable solo a subpeticiones cuyos cuerpos de respuesta se guardan en memoria. Por ejemplo, tales subpeticiones son creadas por [SSI](https://es.angie.software//angie/docs/configuration/modules/http/http_ssi.md#ssi-include-set).

<a id="index-76"></a>

<a id="tcp-nodelay"></a>

### tcp_nodelay

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `tcp_nodelay` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|-------------------------------|
| Predeterminado                                                                             | `tcp_nodelay on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location        |

Activa o desactiva el uso de la opción `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](https://es.angie.software//angie/docs/configuration/processing.md#websocket-proxy).

<a id="index-77"></a>

<a id="tcp-nopush"></a>

### tcp_nopush

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `tcp_nopush` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------|
| Predeterminado                                                                             | `tcp_nopush off`;            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location       |

Activa o desactiva el uso de la opción de socket `TCP_NOPUSH` en FreeBSD o la opción de socket `TCP_CORK` en Linux. Las opciones se activan solo cuando se usa [sendfile](#sendfile). Al activarse, permiten

* 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.

<a id="index-78"></a>

<a id="try-files"></a>

### try_files

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `try_files` file ... uri;<br/><br/>`try_files` file ... =code;   |
|--------------------------------------------------------------------------------------------|------------------------------------------------------------------|
| Predeterminado                                                                             | —                                                                |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | server, location                                                 |

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 de la ubicación actual. La ruta a un archivo se construye a partir del parámetro file según las directivas [root](#root) y [alias](#alias). Es posible verificar la existencia de un directorio añadiendo una barra al final del nombre, por ejemplo `$uri/`. Si no se encuentra ningún archivo, se realiza una redirección interna al uri especificado en el último parámetro.

Por ejemplo:

```nginx
location /images/ {
  try_files $uri /images/default.gif;
}

location = /images/default.gif {
  expires 30s;
}
```

El último parámetro puede ser un URI para una redirección interna,
una referencia a un `location` con nombre (por ejemplo, `@drupal`),
o un código de respuesta en la forma `=code` (por ejemplo, `=404`):

```nginx
location / {
  try_files $uri $uri/index.html $uri.html =404;
}
```

Debe tenerse en cuenta que el uso excesivo de la directiva `try_files`
incrementa el número de llamadas al sistema,
lo que puede afectar negativamente al rendimiento.

Por tanto, `try_files` no debe usarse para replicar un comportamiento
que es efectivamente el comportamiento por defecto, por ejemplo:

```nginx
location /bad_pattern {

      # try_files $uri $uri/ =404;  # ¡no recomendado!
}
```

Además, `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:

- Primero, verifica la existencia de cada archivo,
  lo que incrementa la carga del sistema.
- Segundo, cualquier error al abrir archivos (por ejemplo, `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.

Así, en la práctica, puede encontrarse la siguiente construcción problemática:

```nginx
location / {
   try_files $uri $uri/ @drupal;  # ¡no recomendado!
}
```

El problema aquí es que el único propósito es la redirección.
Usar `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](#error-page),
que no tiene estas desventajas:

```nginx
error_page 404 = @drupal;
log_not_found off;
```

En contraste, en el siguiente ejemplo:

```nginx
location ~ \.php$ {
  try_files $uri @drupal;

  fastcgi_pass ...;

  fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;

#  ...
}
```

La directiva `try_files` verifica la existencia del archivo PHP
antes de pasar la petición al servidor FastCGI configurado en el mismo bloque;
aquí el uso de `try_files` está justificado.

### Ejemplo de uso al hacer proxy a Mongrel:

```nginx
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:

```nginx
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:

```nginx
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
}
```

<a id="index-79"></a>

<a id="types"></a>

### types

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `types` { ... }                                            |
|--------------------------------------------------------------------------------------------|------------------------------------------------------------|
| Predeterminado                                                                             | `types  *text/html html; image/gif gif; image/jpeg jpg;* ` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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:

```nginx
types {
  application/octet-stream bin exe dll;
  application/octet-stream deb;
  application/octet-stream dmg;
}
```

Una tabla de asignación suficientemente completa se distribuye con Angie y se encuentra en el archivo `conf/mime.types`.

Para hacer que un `location` concreto devuelva el tipo MIME "application/octet-stream" en todas las respuestas, se puede usar la siguiente configuración:

```nginx
location /download/ {
  types        { }
  default_type application/octet-stream;
}
```

<a id="index-80"></a>

<a id="types-hash-bucket-size"></a>

### types_hash_bucket_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `types_hash_bucket_size` size;   |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | `types_hash_bucket_size 64;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="index-81"></a>

<a id="types-hash-max-size"></a>

### types_hash_max_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `types_hash_max_size` size;   |
|--------------------------------------------------------------------------------------------|-------------------------------|
| Predeterminado                                                                             | `types_hash_max_size 1024;`   |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="index-82"></a>

<a id="underscores-in-headers"></a>

### underscores_in_headers

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `underscores_in_headers` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------------------|
| Predeterminado                                                                             | `underscores_in_headers off`;            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server                             |

Activa o desactiva el uso de guiones bajos en los campos de cabecera de las peticiones de cliente. Cuando el uso de guiones bajos está desactivado, los campos de cabecera de petición cuyos nombres contengan guiones bajos se marcan como inválidos y quedan sujetos a la directiva [ignore_invalid_headers](#ignore-invalid-headers).

Si la directiva se especifica en el nivel [server](#server), puede usarse el valor del servidor por defecto.

<a id="index-83"></a>

<a id="variables-hash-bucket-size"></a>

### variables_hash_bucket_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `variables_hash_bucket_size` size;   |
|--------------------------------------------------------------------------------------------|--------------------------------------|
| Predeterminado                                                                             | `variables_hash_bucket_size 64;`     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http                                 |

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](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="index-84"></a>

<a id="variables-hash-max-size"></a>

### variables_hash_max_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `variables_hash_max_size` size;   |
|--------------------------------------------------------------------------------------------|-----------------------------------|
| Predeterminado                                                                             | `variables_hash_max_size 2048;`   |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http                              |

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](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="http-core-variables"></a>

## Variables integradas

El módulo `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:

<a id="v-angie-version"></a>

### `$angie_version`

Versión de Angie

<a id="v-arg"></a>

### `$arg_<name>`

argumento name en la línea de petición

<a id="v-args"></a>

### `$args`

argumentos en la línea de petición

<a id="v-binary-remote-addr"></a>

### `$binary_remote_addr`

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

<a id="v-body-bytes-sent"></a>

### `$body_bytes_sent`

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 `mod_log_config`

<a id="v-bytes-sent"></a>

### `$bytes_sent`

número de bytes enviados a un cliente

<a id="v-connection"></a>

### `$connection`

número de serie de la conexión

<a id="v-connection-requests"></a>

### `$connection_requests`

número actual de peticiones realizadas a través de una conexión

<a id="v-connection-time"></a>

### `$connection_time`

tiempo de la conexión en segundos con resolución en milisegundos

<a id="v-content-length"></a>

### `$content_length`

campo de cabecera `Content-Length` de la petición

<a id="v-content-type"></a>

### `$content_type`

campo de cabecera `Content-Type` de la petición

<a id="v-cookie"></a>

### `$cookie_<name>`

cookie con el name especificado

<a id="v-document-root"></a>

### `$document_root`

valor de las directivas [root](#root) o [alias](#alias) para la petición actual

<a id="v-document-uri"></a>

### `$document_uri`

igual que [$uri](#v-uri)

<a id="v-host"></a>

### `$host`

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

<a id="v-hostname"></a>

### `$hostname`

nombre del host

<a id="v-http"></a>

### `$http_<name>`

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

<a id="v-https"></a>

### `$https`

`on` si la conexión funciona en modo SSL, o una cadena vacía en caso contrario

<a id="v-is-args"></a>

### `$is_args`

`?` si la línea de petición contiene argumentos, o una cadena vacía en caso contrario

<a id="v-is-request-port"></a>

### `$is_request_port`

`:` si el valor de [$request_port](#v-request-port) no está vacío, o una cadena vacía en caso contrario

<a id="v-limit-rate"></a>

### `$limit_rate`

configurar esta variable habilita la limitación de la velocidad de respuesta; véase [limit_rate](#limit-rate)

<a id="v-msec"></a>

### `$msec`

hora actual en segundos con resolución en milisegundos

<a id="v-nginx-version"></a>

### `$nginx_version`

versión de nginx

<a id="v-pid"></a>

### `$pid`

PID del proceso trabajador

<a id="v-pipe"></a>

### `$pipe`

`p` si la petición fue *pipelined*, `.` en caso contrario

<a id="v-proxy-protocol-addr"></a>

### `$proxy_protocol_addr`

dirección del cliente desde la cabecera del protocolo PROXY

El protocolo PROXY debe habilitarse previamente configurando el parámetro `proxy_protocol` en la directiva [listen](#listen).

<a id="v-proxy-protocol-port"></a>

### `$proxy_protocol_port`

puerto del cliente desde la cabecera del protocolo PROXY

El protocolo PROXY debe habilitarse previamente configurando el parámetro `proxy_protocol` en la directiva [listen](#listen).

<a id="v-proxy-protocol-server-addr"></a>

### `$proxy_protocol_server_addr`

dirección del servidor desde la cabecera del protocolo PROXY

El protocolo PROXY debe habilitarse previamente configurando el parámetro `proxy_protocol` en la directiva [listen](#listen).

<a id="v-proxy-protocol-server-port"></a>

### `$proxy_protocol_server_port`

puerto del servidor desde la cabecera del protocolo PROXY

El protocolo PROXY debe habilitarse previamente configurando el parámetro `proxy_protocol` en la directiva [listen](#listen).

<a id="v-proxy-protocol-tlv"></a>

### `$proxy_protocol_tlv_<name>`

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 `0x`:

```none
$proxy_protocol_tlv_alpn
$proxy_protocol_tlv_0x01
```

Los TLV SSL también pueden accederse mediante el nombre del tipo TLV o su valor numérico, ambos precedidos por `ssl_`:

```none
$proxy_protocol_tlv_ssl_version
$proxy_protocol_tlv_ssl_0x21
```

Se admiten los siguientes nombres de tipo TLV:

* `alpn (0x01)` - protocolo de capa superior usado en la conexión
* `authority (0x02)` - valor del nombre de host enviado por el cliente
* `unique_id (0x05)` - identificador único de la conexión
* `netns (0x30)` - nombre del *namespace*
* `ssl (0x20)` - estructura binaria SSL TLV

Se admiten los siguientes nombres de tipo TLV SSL:

* `ssl_version (0x21)` - versión de SSL usada en la conexión del cliente
* `ssl_cn (0x22)` - *Common Name* del certificado SSL
* `ssl_cipher (0x23)` - nombre del cifrado utilizado
* `ssl_sig_alg (0x24)` - algoritmo usado para firmar el certificado
* `ssl_key_alg (0x25)` - algoritmo de clave pública

Además, se admite el siguiente nombre especial de tipo TLV SSL:

* `ssl_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 contrario

El protocolo PROXY debe habilitarse previamente configurando el parámetro `proxy_protocol` en la directiva [listen](#listen).

<a id="v-query-string"></a>

### `$query_string`

igual que [$args](#v-args)

<a id="v-realpath-root"></a>

### `$realpath_root`

ruta absoluta correspondiente al valor de las directivas [root](#root) o [alias](#alias) para la petición actual, con todos los enlaces simbólicos resueltos a rutas reales

<a id="v-remote-addr"></a>

### `$remote_addr`

dirección del cliente

<a id="v-remote-port"></a>

### `$remote_port`

puerto del cliente

<a id="v-remote-user"></a>

### `$remote_user`

nombre de usuario suministrado mediante autenticación básica

<a id="v-request"></a>

### `$request`

línea de petición original completa

<a id="v-request-body"></a>

### `$request_body`

cuerpo de la petición

El valor de la variable está *disponible* en las ubicaciones procesadas por las directivas [proxy_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-pass), [fastcgi_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_fastcgi.md#fastcgi-pass), [uwsgi_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_uwsgi.md#uwsgi-pass) y [scgi_pass](https://es.angie.software//angie/docs/configuration/modules/http/http_scgi.md#scgi-pass) cuando el cuerpo de la petición se ha leído en un [búfer de memoria](#client-body-buffer-size).

<a id="v-request-body-file"></a>

### `$request_body_file`

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](#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](https://es.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-pass-request-body), [fastcgi_pass_request_body off](https://es.angie.software//angie/docs/configuration/modules/http/http_fastcgi.md#fastcgi-pass-request-body), [uwsgi_pass_request_body off](https://es.angie.software//angie/docs/configuration/modules/http/http_uwsgi.md#uwsgi-pass-request-body) o [scgi_pass_request_body off](https://es.angie.software//angie/docs/configuration/modules/http/http_scgi.md#scgi-pass-request-body) respectivamente.

<a id="v-request-completion"></a>

### `$request_completion`

`OK` si la petición se ha completado, o una cadena vacía en caso contrario

<a id="v-request-filename"></a>

### `$request_filename`

ruta del archivo para la petición actual, basada en las directivas [root](#root) o [alias](#alias) y en el URI de la petición

<a id="v-request-id"></a>

### `$request_id`

identificador único de la petición generado a partir de 16 bytes aleatorios, en hexadecimal

<a id="v-request-length"></a>

### `$request_length`

longitud de la petición (incluyendo línea de petición, cabeceras y cuerpo de la petición)

<a id="v-request-method"></a>

### `$request_method`

método de la petición, normalmente `GET` o `POST`

<a id="v-request-port"></a>

### `$request_port`

en este orden de precedencia: número de puerto del componente de autoridad del URI de la petición, o número de puerto del campo de cabecera "Host"

<a id="v-request-time"></a>

### `$request_time`

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

<a id="v-request-uri"></a>

### `$request_uri`

URI original completo de la petición (con argumentos), nunca modificado durante el procesamiento de la petición; véase [$uri](#v-uri) para el URI actual (potencialmente reescrito)

<a id="v-scheme"></a>

### `$scheme`

esquema de la petición, "http" o "https"

<a id="v-sent-body"></a>

### `$sent_body`

cuerpo de la respuesta de una subpetición o petición externa cuando se almacena en memoria;
en caso contrario, una cadena vacía

<a id="v-sent-http"></a>

### `$sent_http_<name>`

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

<a id="v-sent-trailer"></a>

### `$sent_trailer_<name>`

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

<a id="v-server-addr"></a>

### `$server_addr`

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](#listen) deben especificar direcciones y usar el parámetro `bind`.

<a id="v-server-name"></a>

### `$server_name`

nombre del servidor que aceptó una petición

<a id="v-server-port"></a>

### `$server_port`

puerto del servidor que aceptó una petición

<a id="v-server-protocol"></a>

### `$server_protocol`

protocolo de la petición, normalmente "HTTP/1.0", "HTTP/1.1" o "HTTP/2.0"

<a id="v-status"></a>

### `$status`

estado de la respuesta

<a id="v-time-iso8601"></a>

### `$time_iso8601`

hora local en formato estándar ISO 8601

<a id="v-time-local"></a>

### `$time_local`

hora local en formato Common Log Format

<a id="v-tcpinfo"></a>

### `$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space`

información sobre la conexión TCP del cliente; disponible en sistemas que admiten la opción de socket `TCP_INFO`

<a id="v-uri"></a>

### `$uri`

URI actual en la petición, [normalizado](#location)

El valor de `$uri` puede cambiar durante el procesamiento de la petición, por ejemplo, al reescribir con [rewrite](https://es.angie.software//angie/docs/configuration/modules/http/http_rewrite.md#id4), al realizar redirecciones internas o al usar archivos índice.
