<!-- review: finished -->

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

# Proxy

Permite reenviar solicitudes a otro servidor (*proxy*).

<a id="configuration-example-34"></a>

## Ejemplo de configuración

```nginx
location / {
    proxy_pass       http://localhost:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;

    proxy_cache       cache_zone;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404      1m;
}
```

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

## Directivas

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

<a id="proxy-bind"></a>

### proxy_bind

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

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

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

```nginx
proxy_bind $remote_addr transparent;
```

Para que este parámetro funcione, normalmente es necesario ejecutar los procesos *worker* de Angie con privilegios de [superusuario](https://es.angie.software//angie/docs/configuration/modules/core.md#user). En Linux no es necesario, ya que si se especifica el parámetro `transparent`, los procesos *worker* heredan la capacidad CAP_NET_RAW del proceso maestro.

#### NOTE
Es necesario configurar la tabla de enrutamiento del kernel para interceptar el tráfico de red desde el servidor *proxy*.

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

<a id="proxy-buffer-size"></a>

### proxy_buffer_size

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

Define el tamaño del *buffer* usado para leer la primera parte de la respuesta recibida del servidor *proxy*. Esta parte normalmente contiene una cabecera pequeña de respuesta. Por defecto, el tamaño del *buffer* es igual a una página de memoria, es decir, 4K o 8K según la plataforma. Puede configurarse más pequeño.

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

<a id="proxy-buffering"></a>

### proxy_buffering

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

Habilita o deshabilita el *buffering* de respuestas desde el servidor *proxy*.

| `on`   | Angie recibe una respuesta del servidor *proxy* tan pronto como sea posible, guardándola en los *buffers* configurados por las directivas [proxy_buffer_size](#proxy-buffer-size) y [proxy_buffers](#proxy-buffers). El envío al cliente se realiza en paralelo: los *buffers* llenos se pasan a envío , pero su tamaño total está limitado por [proxy_busy_buffers_size](#proxy-busy-buffers-size). Si un *buffer* no está lleno, no se pasa a envío salvo que contenga los últimos datos de la respuesta. Por ello, el modo de lectura con *buffering* no es adecuado cuando se necesita la entrega inmediata de cada pocos bytes. Si la respuesta completa no cabe en memoria, parte de ella puede guardarse en un [archivo temporal](#proxy-temp-path) en disco. La escritura en archivos temporales está controlada por las directivas [proxy_max_temp_file_size](#proxy-max-temp-file-size) y [proxy_temp_file_write_size](#proxy-temp-file-write-size).   |
|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `off`  | La respuesta se pasa al cliente inmediatamente a medida que se recibe. Angie trabaja en un ciclo «leer — enviar» y no espera a que el *buffer* se llene por completo: por ejemplo, 10 bytes leídos de un *buffer* de 4K se envían de inmediato. Al mismo tiempo, si toda la respuesta cabe en el *buffer*, Angie puede leerla completa. El tamaño máximo de datos que Angie puede recibir del servidor en un momento está definido por la directiva [proxy_buffer_size](#proxy-buffer-size). Con `off`, Angie no almacena respuestas en caché y [proxy_limit_rate](#proxy-limit-rate) no funciona.                                                                                                                                                                                                                                                                                                                                                               |

El *buffering* también puede activarse o desactivarse pasando "yes" o "no" en la cabecera de respuesta `X-Accel-Buffering`. Esta capacidad puede deshabilitarse mediante la directiva [proxy_ignore_headers](#proxy-ignore-headers).

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

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

### proxy_buffers

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

Define el número y el tamaño de los *buffers* usados para leer una respuesta del servidor *proxy*, por cada conexión.

Por defecto, el tamaño del *buffer* es igual a una página de memoria (4K o 8K, dependiendo de la plataforma).

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

<a id="proxy-busy-buffers-size"></a>

### proxy_busy_buffers_size

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

Cuando el [buffering](#proxy-buffering) de respuestas desde el servidor *proxy* está habilitado, limita el tamaño total de *buffers* que pueden estar ocupados enviando una respuesta al cliente mientras la respuesta aún no se ha leído completamente. Mientras tanto, el resto de los *buffers* pueden usarse para leer la respuesta y, si es necesario, almacenarla en un archivo temporal.

Por defecto, el tamaño está limitado al de dos *buffers* configurados por las directivas [proxy_buffer_size](#proxy-buffer-size) y [proxy_buffers](#proxy-buffers).

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

<a id="proxy-cache"></a>

### proxy_cache

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

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

| `off`   | deshabilita la caché heredada de un nivel de configuración anterior.   |
|---------|------------------------------------------------------------------------|

En Angie PRO, se pueden especificar múltiples directivas [proxy_cache_path](#proxy-cache-path)
que usen el mismo valor de `keys_zone` para habilitar el cache sharding.
Al hacerlo, debe establecerse el parámetro `path` de la directiva
[proxy_cache](#proxy-cache) que use este valor de `keys_zone`:

| `path=`path   | El valor se evalúa en el momento de *almacenar en caché* la respuesta del *backend*<br/>y se espera que use variables, incluidas aquellas que contienen<br/>información de la respuesta.<br/><br/>Si la respuesta se toma de la caché, el path no se reevalúa;<br/>por lo tanto, una respuesta en caché conserva su path original<br/>hasta que sea eliminada de la caché.   |
|---------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

Esto permite seleccionar la ruta de caché necesaria aplicando directivas [map](https://es.angie.software//angie/docs/configuration/modules/http/http_map.md#id1)
o scripts a las respuestas del *backend*. Ejemplo con `Content-Type`:

```nginx
proxy_cache_path /cache/one keys_zone=zone:10m;
proxy_cache_path /cache/two keys_zone=zone;

map $upstream_http_content_type $cache {
   ~^text/  one;
   default  two;
}

server {
   ...
   location / {
       proxy_pass http://backend;
       proxy_cache zone path=/cache/$cache;
       proxy_cache_valid 200 10m;
   }
}
```

Aquí hay dos rutas de caché y un mapeo variable para distinguir entre ellas.
Si `Content-Type` empieza con `text/`, se elegirá la primera ruta;
de lo contrario, la segunda.

#### NOTE
Al usar [proxy_cache](#proxy-cache),
normalmente también necesita establecer la directiva [proxy_cache_valid](#proxy-cache-valid)
para especificar explícitamente el tiempo de almacenamiento en caché de las respuestas.
Si no se configura, Angie no usa valores predeterminados,
sino que determina el tiempo de almacenamiento en caché
basándose en las cabeceras HTTP de la respuesta del servidor en el siguiente orden de prioridad:

1. La cabecera `X-Accel-Expires` (máxima prioridad).
2. La cabecera `Cache-Control`
   con los parámetros `max-age` o `s-maxage`.
3. La cabecera `Expires`.

Si ninguna de estas cabeceras contiene valores válidos o no están presentes,
la respuesta no se almacenará en caché porque no puede determinarse su tiempo de expiración.

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

<a id="proxy-cache-background-update"></a>

### proxy_cache_background_update

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

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

#### WARNING
El uso de una respuesta en caché obsoleta mientras se actualiza debe estar [permitido](#proxy-cache-use-stale-updating).

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

<a id="proxy-cache-bypass"></a>

### proxy_cache_bypass

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

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

```nginx
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma    $http_authorization;
```

Puede usarse junto con la directiva [proxy_no_cache](#proxy-no-cache).

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

<a id="proxy-cache-convert-head"></a>

### proxy_cache_convert_head

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

Habilita o deshabilita la conversión del método "HEAD" a "GET" para el almacenamiento en caché. Si la conversión está deshabilitada, la [clave de caché](#proxy-cache-key) debe incluir la [$request_method](https://es.angie.software//angie/docs/configuration/modules/http/index.md#v-request-method).

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

<a id="proxy-cache-key"></a>

### proxy_cache_key

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

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

```nginx
proxy_cache_key "$host$request_uri $cookie_user";
```

Por defecto, el valor de la directiva es cercano a la cadena:

```nginx
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
```

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

<a id="proxy-cache-lock"></a>

### proxy_cache_lock

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

Cuando está habilitado, solo se permitirá que una solicitud a la vez llene un nuevo elemento de caché identificado según la directiva [proxy_cache_key](#proxy-cache-key), enviando una solicitud al servidor proxy. Otras solicitudes para el mismo elemento de caché esperarán a que aparezca una respuesta en la caché o a que se libere el bloqueo de caché para ese elemento, hasta el tiempo establecido por la directiva [proxy_cache_lock_timeout](#proxy-cache-lock-timeout).

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

<a id="proxy-cache-lock-age"></a>

### proxy_cache_lock_age

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

Si la última solicitud enviada al servidor proxy para llenar un nuevo elemento de caché no se ha completado en el tiempo especificado, puede enviarse otra solicitud al servidor proxy.

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

<a id="proxy-cache-lock-timeout"></a>

### proxy_cache_lock_timeout

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

Define un tiempo de espera para [proxy_cache_lock](#proxy-cache-lock). Cuando expira el tiempo, la solicitud se enviará al servidor proxy, sin embargo, la respuesta no se almacenará en la caché.

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

<a id="proxy-cache-max-range-offset"></a>

### proxy_cache_max_range_offset

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

Define un desplazamiento en bytes para solicitudes de rango de bytes. Si el rango está más allá del desplazamiento especificado, la solicitud de rango se enviará al servidor proxy y la respuesta no se almacenará en la caché.

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

<a id="proxy-cache-methods"></a>

### proxy_cache_methods

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_methods` `GET` | `HEAD` | `POST` ...;   |
|--------------------------------------------------------------------------------------------|------------------------------------------------------|
| Predeterminado                                                                             | `proxy_cache_methods GET HEAD;`                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                               |

Si el método de la solicitud del cliente está en la lista definida por esta directiva, entonces la respuesta se almacenará en caché. Los métodos "GET" y "HEAD" siempre se añaden a la lista, pero se recomienda especificarlos explícitamente. Véase también la directiva [proxy_no_cache](#proxy-no-cache).

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

<a id="proxy-cache-min-uses"></a>

### proxy_cache_min_uses

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

Define el número de solicitudes tras el cual la respuesta se almacenará en caché.

#### WARNING
Los metadatos de caché se almacenan en memoria compartida. Eliminar manualmente
los archivos de caché no restablece los contadores y puede provocar un comportamiento
impredecible. Para un reinicio completo, detenga el servidor, elimine el directorio
de caché y vuelva a iniciarlo.

#### NOTE
Los módulos de purga de caché de terceros (por ejemplo, [Cache Purge](https://es.angie.software//angie/docs/installation/external-modules/cache-purge.md#external-cache-purge))
solo eliminan archivos pero no restablecen el contador de proxy_cache_min_uses.
La directiva está pensada para proteger la caché de la contaminación por solicitudes
poco frecuentes, y restablecer el contador al purgar puede afectar negativamente al
rendimiento.

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

<a id="proxy-cache-path"></a>

### proxy_cache_path

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_path` path [`levels=`levels] [`use_temp_path=``on` | `off`] `keys_zone=`name:size[:`file=`file] [`inactive=`time] [`max_size=`size] [`min_free=`size] [`manager_files=`number] [`manager_sleep=`time] [`manager_threshold=`time] [`loader_files=`number] [`loader_sleep=`time] [`loader_threshold=`time];   |
|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | —                                                                                                                                                                                                                                                                                                                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http                                                                                                                                                                                                                                                                                                                     |

Define la ruta y otros parámetros de la caché. Los datos de la caché se almacenan en archivos. El nombre del archivo en caché es el resultado de aplicar la función MD5 a la [clave de caché](#proxy-cache-key).

| `levels`   | define niveles jerárquicos de la caché: de 1 a 3, cada nivel acepta valores 1 o 2.   |
|------------|--------------------------------------------------------------------------------------|

Por ejemplo, en la siguiente configuración:

```nginx
proxy_cache_path /data/angie/cache levels=1:2 keys_zone=one:10m;
```

Los nombres de archivo en caché tendrán este aspecto:

```nginx
/data/angie/cache/c/29/b7f54b2df7773722d382f4809d65029c
```

Una respuesta cacheada primero se escribe en un archivo temporal y luego se renombra el archivo. Los archivos temporales y la caché pueden colocarse en diferentes sistemas de archivos. Sin embargo, en este caso un archivo se copia entre dos sistemas de archivos en lugar de la operación de renombrado económica. Por tanto, se recomienda que tanto la caché como el directorio que contiene archivos temporales estén en el mismo sistema de archivos para cualquier ubicación dada.

| `use_temp_path=on` | `off`   | Define el directorio para archivos temporales                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `on`                         | Si este parámetro se omite o se establece al valor `on`, se usará el directorio establecido por la directiva [proxy_temp_path](#proxy-temp-path) para la ubicación dada.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `off`                        | Los archivos temporales se colocarán directamente en el directorio de caché.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `keys_zone`                  | Define el nombre y tamaño de la zona de memoria compartida que almacena todas las claves activas e información sobre los datos.<br/><br/>Una zona de un megabyte puede almacenar aproximadamente 8.000 claves.<br/><br/>Cuando se usa el parámetro opcional file con `keys_zone`,<br/>Angie vuelca el contenido de esta zona al disco<br/>al salir del proceso maestro<br/>e intenta restaurarla en la misma dirección de memoria<br/>en el siguiente [inicio](https://es.angie.software//angie/docs/configuration/runtime.md#runtime)<br/>o después de una [actualización binaria](https://es.angie.software//angie/docs/configuration/runtime.md#service-upgrade)<br/>para lograr una persistencia más robusta<br/>y mejorar el tiempo de carga de la caché.<br/><br/>Si la zona no puede restaurarse debido a un cambio de tamaño,<br/>incompatibilidad de versión binaria u otras razones,<br/>Angie registrará una advertencia (`failed to restore zone at address`)<br/>y no usará el mecanismo de restauración de zona.<br/>En su lugar, el archivo incompatible se renombrará a `.old`;<br/>puede eliminarlo,<br/>o restaurar su nombre y revertir Angie a la configuración y versión<br/>donde se creó originalmente.<br/><br/>#### WARNING<br/>Asegúrese de que la ruta file esté especificada correctamente<br/>y tenga los permisos necesarios para que Angie la use,<br/>y esté protegida del acceso no autorizado;<br/>las rutas relativas se basan en el [prefijo](https://es.angie.software//angie/docs/installation/sourcebuild.md#paths). |
| `inactive`                   | Si no se accede a los datos de caché durante el tiempo especificado por este parámetro, los datos se eliminan independientemente de su frescura.<br/><br/>Por defecto, `inactive` es 10 minutos.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

#### NOTE
#### Versionadded
Added in version 1.2.0: PRO

En Angie PRO, pueden especificarse múltiples directivas proxy_cache_path con el mismo valor `keys_zone`. El tamaño de la zona de memoria compartida solo puede especificarse en la primera. La selección entre directivas se realizará según el parámetro `path` de la directiva [proxy_cache](#proxy-cache) correspondiente.

Un proceso especial **gestor de caché** monitorea el tamaño máximo de caché y la cantidad mínima de espacio libre en el sistema de archivos con la caché, y elimina los datos usados menos recientemente cuando se excede el tamaño máximo de caché o cuando no hay suficiente espacio libre. La eliminación de datos ocurre en iteraciones.

| `max_size`          | valor umbral máximo para el tamaño de la caché                                               |
|---------------------|----------------------------------------------------------------------------------------------|
| `min_free`          | valor umbral mínimo para el espacio libre en el sistema de archivos con la caché             |
| `manager_files`     | número máximo de elementos de caché a eliminar en una iteración<br/><br/>Por defecto: `100`. |
| `manager_threshold` | limita la duración de una iteración<br/><br/>Por defecto: `200` milisegundos.                |
| `manager_sleep`     | configura una pausa entre iteraciones<br/><br/>Por defecto: `50` milisegundos.               |

Un minuto después de iniciar Angie, se activa un proceso especial **cargador de caché**.
Este escanea el sistema de archivos en busca de datos previamente almacenados en caché
y carga esta información en la zona de caché.
Este proceso trabaja iterativamente;
cada iteración procesa un número limitado de elementos especificado por el parámetro `loader_files`,
asegura no superar `loader_threshold`,
luego hace una pausa breve definida por `loader_sleep`
antes de pasar al siguiente lote.
Las iteraciones continúan
hasta que el cargador ha procesado todas las entradas de caché existentes en disco:

| `loader_files`     | número máximo de elementos de caché a cargar en una iteración<br/><br/>Por defecto: `100`   |
|--------------------|---------------------------------------------------------------------------------------------|
| `loader_threshold` | limita la duración de una iteración<br/><br/>Por defecto: `200` milisegundos                |
| `loader_sleep`     | configura una pausa entre iteraciones<br/><br/>Por defecto: `50` milisegundos               |

#### NOTE
Especificar el file para el parámetro `keys_zone`
no afecta la operación del cargador de caché.

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

<a id="proxy-cache-revalidate"></a>

### proxy_cache_revalidate

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

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

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

<a id="proxy-cache-use-stale"></a>

### proxy_cache_use_stale

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cache_use_stale` `error` | `timeout` | `invalid_header` | `updating` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `off` ...;   |
|--------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_cache_use_stale off;`                                                                                                                                                          |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                                                                                                                |

Determina en qué casos puede usarse una respuesta caducada de la caché. Los parámetros de la directiva coinciden con los de la directiva [proxy_next_upstream](#proxy-next-upstream).

| `error`    | permite usar una respuesta caducada de la caché si no puede seleccionarse un servidor proxy para procesar una solicitud.                                                                                                    |
|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `updating` | parámetro adicional, permite usar una respuesta caducada de la caché si se está actualizando en ese momento. Esto permite minimizar el número de accesos a los servidores proxy durante la actualización de datos en caché. |

El uso de una respuesta caducada de la caché también puede habilitarse directamente en la cabecera de respuesta durante un número especificado de segundos después de que la respuesta haya caducado:

* La extensión [stale-while-revalidate](https://datatracker.ietf.org/doc/html/rfc5861#section-3) del campo de cabecera `Cache-Control` permite usar una respuesta caducada de la caché si se está actualizando en ese momento.
* La extensión [stale-if-error](https://datatracker.ietf.org/doc/html/rfc5861#section-4) del campo de cabecera `Cache-Control` permite usar una respuesta caducada de la caché en caso de error.

#### NOTE
Esto tiene menor prioridad que usar los parámetros de la directiva.

Para minimizar el número de accesos a los servidores proxy al poblar un nuevo elemento de caché, puede usarse la directiva [proxy_cache_lock](#proxy-cache-lock).

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

<a id="proxy-cache-valid"></a>

### proxy_cache_valid

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

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

```nginx
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;
```

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

Si solo se especifica el tiempo de caché,

```nginx
proxy_cache_valid 5m;
```

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

Además, se puede especificar el parámetro `any` para cachear cualquier respuesta:

```nginx
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301      1h;
proxy_cache_valid any      1m;
```

#### NOTE
Los parámetros de almacenamiento en caché también pueden establecerse directamente en la cabecera de respuesta. Esto tiene mayor prioridad que el establecimiento del tiempo de caché usando la directiva.

* El campo de cabecera `X-Accel-Expires` define el tiempo de caché de una respuesta en segundos. El valor cero desactiva la caché para esa respuesta. Si el valor comienza con el prefijo `@`, define un tiempo absoluto en segundos desde Epoch hasta el cual la respuesta puede almacenarse en caché.
* Si la cabecera no incluye el campo `X-Accel-Expires`, los parámetros de caché pueden establecerse en los campos de cabecera `Expires` o `Cache-Control`.
* Si la cabecera incluye el campo `Set-Cookie`, esa respuesta no se almacenará en caché.
* Si la cabecera incluye el campo `Vary` con el valor especial "`*`", esa respuesta no se almacenará en caché. Si la cabecera incluye el campo `Vary` con otro valor, esa respuesta se cacheará teniendo en cuenta los campos de cabecera de solicitud correspondientes.

El procesamiento de uno o más de estos campos de cabecera de respuesta puede deshabilitarse usando la directiva [proxy_ignore_headers](#proxy-ignore-headers).

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

<a id="proxy-connect-timeout"></a>

### proxy_connect_timeout

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

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

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

<a id="proxy-connection-drop"></a>

### proxy_connection_drop

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

Habilita la terminación de todas las conexiones al servidor proxy después de que haya sido
eliminado del grupo o marcado como permanentemente no disponible por un proceso de [reresolve](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#reresolve)
o el [comando API](https://es.angie.software//angie/docs/configuration/modules/http/http_api.md#api-config-methods) `DELETE`.

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

Establecer time habilita un [tiempo de espera](https://es.angie.software//angie/docs/configuration/configfile.md#syntax) de terminación de conexión;
con `on` establecido, las conexiones se descartan inmediatamente.

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

<a id="proxy-cookie-domain"></a>

### proxy_cookie_domain

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cookie_domain` `off`;<br/><br/>`proxy_cookie_domain` domain replacement;   |
|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_cookie_domain off;`                                                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                            |

Define un texto que debe cambiarse en el atributo domain de los campos de cabecera `Set-Cookie` de una respuesta del servidor proxy. Supongamos que un servidor proxy devolvió el campo de cabecera `Set-Cookie` con el atributo "domain=localhost". La directiva

```nginx
proxy_cookie_domain localhost example.org;
```

reescribirá este atributo a "domain=example.org".

El punto inicial en las cadenas domain y replacement, así como en el atributo domain, se ignora. El valor no distingue entre mayúsculas y minúsculas.

Las cadenas domain y replacement pueden contener variables:

```nginx
proxy_cookie_domain www.$host $host;
```

La directiva también puede especificarse usando expresiones regulares. En este caso, domain debe comenzar con el símbolo "~". La expresión regular puede contener capturas con nombre y posicionales, y replacement puede referenciarlas:

```nginx
proxy_cookie_domain ~\.(?P<sl_domain>[-0-9a-z]+\.[a-z]+)$ $sl_domain;
```

Se pueden especificar múltiples directivas proxy_cookie_domain en el mismo nivel:

```nginx
proxy_cookie_domain localhost example.org;
proxy_cookie_domain ~\.([a-z]+\.[a-z]+)$ $1;
```

Si varias directivas pueden aplicarse a la cookie, se elegirá la primera.

El parámetro `off` cancela el efecto de las directivas proxy_cookie_domain heredadas del nivel de configuración anterior.

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

<a id="proxy-cookie-flags"></a>

### proxy_cookie_flags

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

Define una o más banderas para la cookie.
La cookie puede contener texto, variables y sus combinaciones. La bandera puede contener texto, variables y sus combinaciones.

Los parámetros `secure`, `httponly`, `samesite=strict`, `samesite=lax`, `samesite=none` añaden las banderas correspondientes.

Los parámetros `nosecure`, `nohttponly`, `nosamesite` eliminan las banderas correspondientes.

La cookie también puede especificarse mediante expresiones regulares. En este caso, la cookie debe comenzar con el símbolo "~".

Se pueden especificar varias directivas `proxy_cookie_flags` en el mismo nivel de configuración:

```nginx
proxy_cookie_flags one httponly;
proxy_cookie_flags ~ nosecure samesite=strict;
```

Si varias directivas pueden aplicarse a la cookie, se elegirá la primera que coincida.
En el ejemplo, la bandera httponly se añade a la cookie one; para todas las demás cookies se añade la bandera samesite=strict y se elimina la bandera secure.

El parámetro `off` cancela el efecto de las directivas proxy_cookie_flags heredadas del nivel de configuración anterior.

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

<a id="proxy-cookie-path"></a>

### proxy_cookie_path

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_cookie_path` `off`;<br/><br/>`proxy_cookie_path` path replacement;   |
|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_cookie_path off;`                                                    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                      |

Define un texto que debe modificarse en el atributo *path* de los campos de cabecera `Set-Cookie` en una respuesta de un servidor *proxy*.
Supongamos que un servidor *proxy* devolvió el campo de cabecera `Set-Cookie` con el atributo "path=/two/some/uri/". La directiva:

```nginx
proxy_cookie_path /two/ /;
```

reescribirá este atributo a "path=/some/uri/".

Las cadenas path y replacement pueden contener variables:

```nginx
proxy_cookie_path $uri /some$uri;
```

La directiva también puede especificarse mediante expresiones regulares.
En este caso, path debe comenzar con el símbolo "~" para coincidencias sensibles a mayúsculas y minúsculas, o con los símbolos "~\*" para coincidencias insensibles.
La expresión regular puede contener capturas con nombre o posicionales, y replacement puede hacer referencia a ellas:

```nginx
proxy_cookie_path ~*^/user/([^/]+) /u/$1;
```

Pueden especificarse varias directivas proxy_cookie_path en el mismo nivel:

```nginx
proxy_cookie_path /one/ /;
proxy_cookie_path / /two/;
```

Si varias directivas pueden aplicarse a la cookie, se elegirá la primera que coincida.

El parámetro `off` cancela el efecto de las directivas proxy_cookie_path heredadas del nivel de configuración anterior.

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

<a id="proxy-force-ranges"></a>

### proxy_force_ranges

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

Habilita el soporte de rangos de bytes para respuestas cacheadas y no cacheadas desde el servidor *proxy*, independientemente del campo `Accept-Ranges` en dichas respuestas.

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

<a id="proxy-headers-hash-bucket-size"></a>

### proxy_headers_hash_bucket_size

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

Define el tamaño del *bucket* para las tablas hash usadas por las directivas [proxy_hide_header](#proxy-hide-header) y [proxy_set_header](#proxy-set-header).
Los detalles de la configuración de tablas hash se describen [por separado](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

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

<a id="proxy-headers-hash-max-size"></a>

### proxy_headers_hash_max_size

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

Define el tamaño máximo de las tablas hash usadas por las directivas [proxy_hide_header](#proxy-hide-header) y [proxy_set_header](#proxy-set-header).
Los detalles de la configuración de tablas hash se describen [por separado](https://es.angie.software//angie/docs/configuration/configfile.md#configure-hashes).

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

<a id="proxy-hide-header"></a>

### proxy_hide_header

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

De forma predeterminada, Angie no pasa los campos de cabecera `Date`, `Server`, `X-Pad` y `X-Accel-...` de la respuesta del servidor *proxy* al cliente.
La directiva proxy_hide_header define campos adicionales que no se pasarán.
Si, por el contrario, se necesita permitir el paso de campos, puede usarse la directiva [proxy_pass_header](#proxy-pass-header).

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

<a id="proxy-http-version"></a>

### proxy_http_version

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_http_version` `1.0` | `1.1` | `3`;            |
|--------------------------------------------------------------------------------------------|------------------------------------------------------|
| Predeterminado                                                                             | `proxy_http_version 1.0;`                            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location, if in location, limit_except |

Define la versión del protocolo HTTP para el proxy.
De forma predeterminada, se usa la versión 1.0.
Se recomienda la versión 1.1 o superior
para usar con
[conexiones keepalive](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-keepalive).

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

<a id="proxy-http3-hq"></a>

### proxy_http3_hq

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

Activa el modo especial de negociación `hq-interop`,
que se usa para
[pruebas de interoperabilidad QUIC](#proxy-http-version)
[https://github.com/marten-seemann/quic-interop-runner](https://github.com/marten-seemann/quic-interop-runner)
en las que se basa Angie.

#### WARNING
Habilite este modo solo para ejecutar pruebas especializadas que lo requieran explícitamente.

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

<a id="proxy-http3-max-concurrent-streams"></a>

### proxy_http3_max_concurrent_streams

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

Inicializa la configuración de HTTP/3 y QUIC
y define el número máximo de flujos de solicitud HTTP/3 concurrentes en una
[conexión](#proxy-http-version).
Requiere habilitar [conexiones keepalive](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-keepalive).

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

<a id="proxy-http3-max-table-capacity"></a>

### proxy_http3_max_table_capacity

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

Define la capacidad de la [tabla dinámica](https://www.ietf.org/archive/id/draft-ietf-quic-qpack-20.html#name-dynamic-table)
para conexiones proxy.

#### NOTE
Una directiva similar [http3_max_table_capacity](https://es.angie.software//angie/docs/configuration/modules/http/http_v3.md#http3-max-table-capacity)
define este valor para conexiones de servidor.
Para evitar errores, el uso de la tabla dinámica
se deshabilita cuando el almacenamiento en caché está habilitado en modo proxy.

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

<a id="proxy-http3-stream-buffer-size"></a>

### proxy_http3_stream_buffer_size

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

Define el [tamaño](https://es.angie.software//angie/docs/configuration/configfile.md#syntax) del búfer usado para leer y escribir
[flujos QUIC](#proxy-http-version).

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

<a id="proxy-ignore-client-abort"></a>

### proxy_ignore_client_abort

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

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

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

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

### proxy_ignore_headers

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

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

Si no se desactiva, el procesamiento de estos campos de cabecera tiene los siguientes efectos:

* `X-Accel-Expires`, `Expires`, `Cache-Control`, `Set-Cookie` y `Vary` establecen los parámetros del [caché de respuesta](#proxy-cache-valid);
* `X-Accel-Redirect` realiza una [redirección interna](https://es.angie.software//angie/docs/configuration/modules/http/index.md#internal) a la URI especificada;
* `X-Accel-Limit-Rate` establece el [límite de velocidad](https://es.angie.software//angie/docs/configuration/modules/http/index.md#limit-rate) para la transmisión de una respuesta al cliente;
* `X-Accel-Buffering` habilita o deshabilita el [almacenamiento en búfer](#proxy-buffering) de una respuesta;
* `X-Accel-Charset` establece el [charset](https://es.angie.software//angie/docs/configuration/modules/http/http_charset.md#id1) deseado de una respuesta.

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

<a id="proxy-intercept-errors"></a>

### proxy_intercept_errors

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

Determina si las respuestas proxy con códigos mayores o iguales a 300 deben pasarse al cliente o interceptarse y redirigirse a Angie para su procesamiento con la directiva [error_page](https://es.angie.software//angie/docs/configuration/modules/http/index.md#error-page).

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

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

### proxy_limit_rate

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

Limita la velocidad de lectura de la respuesta del servidor proxy.
El rate se especifica en bytes por segundo y puede contener variables.

| `0`   | desactiva la limitación de velocidad   |
|-------|----------------------------------------|

#### NOTE
El límite se establece por petición, por lo que si Angie abre simultáneamente dos conexiones al servidor proxy, la velocidad total será el doble del límite especificado. La limitación solo funciona si el [buffering](#proxy-buffering) de respuestas del servidor proxy está habilitado.

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

<a id="proxy-max-temp-file-size"></a>

### proxy_max_temp_file_size

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

Cuando el [buffering](#proxy-buffering) de respuestas del servidor proxy está habilitado y la respuesta completa no cabe en los búferes establecidos por las directivas [proxy_buffer_size](#proxy-buffer-size) y [proxy_buffers](#proxy-buffers), una parte de la respuesta puede guardarse en un archivo temporal. Esta directiva establece el tamaño máximo del archivo temporal. El tamaño de los datos escritos al archivo temporal de una vez se establece mediante la directiva [proxy_temp_file_write_size](#proxy-temp-file-write-size).

| `0`   | desactiva el buffering de respuestas a archivos temporales   |
|-------|--------------------------------------------------------------|

#### NOTE
Esta restricción no se aplica a las respuestas que serán [cacheadas](#proxy-cache) o [almacenadas en disco](#proxy-store).

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

<a id="proxy-method"></a>

### proxy_method

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

Especifica el método HTTP a usar en las peticiones reenviadas al servidor proxy en lugar del método de la petición del cliente. El valor del parámetro puede contener variables.

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

<a id="proxy-next-upstream"></a>

### proxy_next_upstream

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_next_upstream` `error` | `timeout` | `invalid_header` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ...;   |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_next_upstream error timeout;`                                                                                                                                                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                                                                                                                    |

Especifica en qué casos una petición debe pasarse al siguiente servidor en el grupo [upstream](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream):

| `error`          | ocurrió un error al establecer la conexión, al enviar la petición o al leer la cabecera de respuesta.                                                                                                                                                                              |
|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `timeout`        | ocurrió un tiempo de espera al establecer la conexión, al enviar la petición o al leer la cabecera de respuesta.                                                                                                                                                                   |
| `invalid_header` | el servidor devolvió una respuesta vacía o inválida.                                                                                                                                                                                                                               |
| `http_500`       | el servidor devolvió un código 500.                                                                                                                                                                                                                                                |
| `http_502`       | el servidor devolvió un código 502.                                                                                                                                                                                                                                                |
| `http_503`       | el servidor devolvió un código 503.                                                                                                                                                                                                                                                |
| `http_504`       | el servidor devolvió un código 504.                                                                                                                                                                                                                                                |
| `http_403`       | el servidor devolvió un código 403.                                                                                                                                                                                                                                                |
| `http_404`       | el servidor devolvió un código 404.                                                                                                                                                                                                                                                |
| `http_429`       | el servidor devolvió un código 429.                                                                                                                                                                                                                                                |
| `non_idempotent` | normalmente, las solicitudes con métodos [no idempotentes](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2) (`POST`, `LOCK`, `PATCH`) no se reenvían a otro servidor si ya fueron enviadas a un *upstream*. Activar esta opción permite reintentar dichas solicitudes. |
| `off`            | desactiva el reenvío al siguiente servidor.                                                                                                                                                                                                                                        |

#### NOTE
Debe tenerse en cuenta que reenviar una solicitud al siguiente servidor solo es posible si aún no se ha enviado nada al cliente.
Es decir, si ocurre un error o *timeout* durante la transmisión de la respuesta, no es posible recuperarse.

La directiva también define qué se considera un [intento fallido](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#max-fails) de comunicación con un servidor.

| `error`<br/><br/>`timeout`<br/><br/>`invalid_header`                                       | siempre considerados intentos fallidos, aunque no estén en la directiva    |
|--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|
| `http_500`<br/><br/>`http_502`<br/><br/>`http_503`<br/><br/>`http_504`<br/><br/>`http_429` | considerados intentos fallidos solo si están especificados en la directiva |
| `http_403`<br/><br/>`http_404`                                                             | nunca considerados intentos fallidos                                       |

El reenvío a otro servidor puede limitarse mediante el [número de intentos](#proxy-next-upstream-tries) y el [tiempo](#proxy-next-upstream-timeout).

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

<a id="proxy-next-upstream-timeout"></a>

### proxy_next_upstream_timeout

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

Limita el tiempo durante el cual una petición puede reenviarse al [siguiente](#proxy-next-upstream) servidor.

| `0`   | desactiva esta limitación   |
|-------|-----------------------------|

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

<a id="proxy-next-upstream-tries"></a>

### proxy_next_upstream_tries

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

Limita el número de intentos posibles de reenviar una petición al [siguiente](#proxy-next-upstream) servidor.

| `0`   | desactiva esta limitación   |
|-------|-----------------------------|

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

<a id="proxy-no-cache"></a>

### proxy_no_cache

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

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

```nginx
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma    $http_authorization;
```

Puede usarse junto con la directiva [proxy_cache_bypass](#proxy-cache-bypass).

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

<a id="proxy-pass"></a>

### proxy_pass

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_pass` uri;                      |
|--------------------------------------------------------------------------------------------|----------------------------------------|
| Predeterminado                                                                             | —                                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | location, if in location, limit_except |

Define el protocolo y la dirección de un servidor *proxy* y un URI opcional al que debe mapearse una ubicación. Como protocolo se puede especificar `http` o `https`. La dirección puede ser un nombre de dominio o una dirección IP, con un puerto opcional:

```nginx
proxy_pass http://localhost:8000/uri/;
```

o como una ruta de *socket* de dominio UNIX especificada tras la palabra `unix` y encerrada entre dos puntos:

```nginx
proxy_pass http://unix:/tmp/backend.socket:/uri/;
```

Si un nombre de dominio resuelve a varias direcciones, todas se usarán en modo *round-robin*. Además, una dirección puede especificarse como un [grupo de servidores](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream).

El valor del parámetro puede contener variables. En este caso, si la dirección se especifica como un nombre de dominio, primero se buscará entre los grupos de servidores descritos y, si no se encuentra, se resolverá mediante un [resolver](https://es.angie.software//angie/docs/configuration/modules/http/index.md#resolver).

<a id="proxy-pass-uri"></a>

El URI de la petición se pasa al servidor de la siguiente forma:

* Si la directiva `proxy_pass` se especifica **con un URI**, entonces cuando la petición se reenvía al servidor, la parte del URI de la petición [normalizado](https://es.angie.software//angie/docs/configuration/modules/http/index.md#location) que coincide con la ubicación se reemplaza por el URI especificado en la directiva:

```nginx
location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}
```

* Si `proxy_pass` se especifica **sin un URI**, el URI de la petición se pasa al servidor en la misma forma en que fue enviado por el cliente cuando se procesó la petición original, o el URI completo normalizado se pasa cuando se procesa el URI modificado:

```nginx
location /some/path/ {
    proxy_pass http://127.0.0.1;
}
```

En algunos casos, la parte del URI de la petición a reemplazar no puede determinarse:

* Cuando `location` se especifica usando una expresión regular, y también dentro de un `location` con nombre.

En estos casos, `proxy_pass` debe especificarse sin un URI.

* Cuando el URI se modifica dentro de un `location` con proxy usando la directiva [rewrite](https://es.angie.software//angie/docs/configuration/modules/http/http_rewrite.md#id4), y esta misma configuración se usa para procesar una petición (break):

```nginx
location /name/ {
    rewrite    /name/([^/]+) /users?name=$1 break;
    proxy_pass http://127.0.0.1;
}
```

En este caso, el URI especificado en la directiva se ignora y el URI completo modificado de la petición se pasa al servidor.

* Cuando se usan variables en `proxy_pass`:

```nginx
location /name/ {
    proxy_pass http://127.0.0.1$request_uri;
}
```

En este caso, si se especifica un URI en la directiva, se pasa al servidor tal como está, reemplazando el URI original de la petición.

El proxy de [WebSocket](https://es.angie.software//angie/docs/configuration/processing.md#websocket-proxy) requiere una configuración especial.

#### NOTE
Si `proxy_pass` se coloca en un `location` con una barra final en el prefijo
(por ejemplo, `location /name/`),
y la directiva [auto_redirect](https://es.angie.software//angie/docs/configuration/modules/http/index.md#auto-redirect) está establecida en `default`,
las peticiones sin barra final serán redirigidas (`/name -> /name/`).

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

<a id="proxy-pass-header"></a>

### proxy_pass_header

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

Permite pasar campos de cabecera [deshabilitados de otro modo](#proxy-hide-header) desde un servidor proxy a un cliente.

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

<a id="proxy-pass-request-body"></a>

### proxy_pass_request_body

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

Indica si el cuerpo de la petición original se pasa al servidor proxy.

```nginx
location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";

    proxy_pass ...;
}
```

Véase también las directivas [proxy_set_header](#proxy-set-header) y [proxy_pass_request_headers](#proxy-pass-request-headers).

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

<a id="proxy-pass-request-headers"></a>

### proxy_pass_request_headers

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

Indica si los campos de cabecera de la petición original se pasan al servidor proxy.

```nginx
location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_headers off;
    proxy_pass_request_body off;

    proxy_pass ...;
}
```

Véase también las directivas [proxy_set_header](#proxy-set-header) y [proxy_pass_request_body](#proxy-pass-request-body).

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

<a id="proxy-pass-trailers"></a>

### proxy_pass_trailers

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

Permite pasar campos trailer desde un servidor proxy a un cliente.

Una sección trailer en HTTP/1.1 se [habilita explícitamente](https://datatracker.ietf.org/doc/html/rfc9110#section-6.5.1).

```nginx
location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "te";
    proxy_set_header TE "trailers";
    proxy_pass_trailers on;

    proxy_pass ...;
}
```

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

<a id="proxy-quic-active-connection-id-limit"></a>

### proxy_quic_active_connection_id_limit

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

Establece el valor del parámetro de transporte `active_connection_id_limit` de [QUIC](#proxy-http-version).
Este es el número máximo de
[IDs de conexión](https://www.rfc-editor.org/rfc/rfc9000.html#name-connection-id)
activos que se pueden mantener por servidor.

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

<a id="proxy-quic-gso"></a>

### proxy_quic_gso

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

Activa el envío de datos en
modo por lotes optimizado para [QUIC](#proxy-http-version) usando
[generic segmentation offload](https://docs.kernel.org/networking/segmentation-offloads.html#generic-segmentation-offload).

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

<a id="proxy-quic-host-key"></a>

### proxy_quic_host_key

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

Establece un file con la clave secreta
usada con [QUIC](#proxy-http-version)
para cifrar
[Stateless Reset](https://www.rfc-editor.org/rfc/rfc9000.html#name-stateless-reset)
y tokens de
[Address Validation](https://www.rfc-editor.org/rfc/rfc9000.html#address-validation).
Por defecto, se genera una clave aleatoria en cada reinicio.
Los tokens generados con claves antiguas no son aceptados.

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

<a id="proxy-read-timeout"></a>

### proxy_read_timeout

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

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

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

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

### proxy_redirect

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_redirect` `default`;<br/><br/>`proxy_redirect` `off`;<br/><br/>`proxy_redirect` redirect replacement;   |
|--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_redirect default;`                                                                                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                                         |

Establece el texto que debe cambiarse en los campos de cabecera "Location" y "Refresh" de una respuesta del servidor proxy.

Supongamos que un servidor proxy devolvió el campo de cabecera:

```console
Location: http://localhost:8000/two/some/uri/
```

La directiva

```nginx
proxy_redirect http://localhost:8000/two/ http://frontend/one/;
```

reescribirá esta cadena a:

```console
Location: http://frontend/one/some/uri/
```

Se puede omitir el nombre del servidor en la cadena replacement:

```nginx
proxy_redirect http://localhost:8000/two/ /;
```

entonces se insertará el nombre del servidor principal y el puerto, si es diferente de 80.

El reemplazo predeterminado especificado por el parámetro `default` usa los parámetros de las directivas [location](https://es.angie.software//angie/docs/configuration/modules/http/index.md#location) y [proxy_pass](#proxy-pass). Por lo tanto, las dos configuraciones siguientes son equivalentes:

```nginx
location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect default;
}
```

```nginx
location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect http://upstream:port/two/ /one/;
}
```

#### WARNING
El parámetro `default` no está permitido si [proxy_pass](#proxy-pass) se especifica usando variables.

Una cadena replacement puede contener variables:

```nginx
proxy_redirect http://localhost:8000/ http://$host:$server_port/;
```

Un redirect también puede contener variables:

```nginx
proxy_redirect http://$proxy_host:8000/ /;
```

La directiva se puede especificar usando expresiones regulares. En este caso, redirect debe comenzar con el símbolo "~" para una coincidencia sensible a mayúsculas y minúsculas, o con los símbolos "~\*" para una coincidencia insensible a mayúsculas y minúsculas. La expresión regular puede contener capturas con nombre y posicionales, y replacement puede referenciarlas:

```nginx
proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
proxy_redirect ~*/user/([^/]+)/(.+)$      http://$1.example.com/$2;
```

Se pueden especificar varias directivas proxy_redirect en el mismo nivel:

```nginx
proxy_redirect default;
proxy_redirect http://localhost:8000/  /;
proxy_redirect http://www.example.com/ /;
```

Si varias directivas pueden aplicarse a los campos de cabecera de una respuesta del servidor proxy, se elegirá la primera directiva que coincida.

El parámetro `off` cancela el efecto de las directivas proxy_redirect heredadas del nivel de configuración anterior.

Usando esta directiva, también es posible añadir nombres de host a las redirecciones relativas emitidas por un servidor proxy:

```nginx
proxy_redirect / /;
```

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

<a id="proxy-request-buffering"></a>

### proxy_request_buffering

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

Habilita o deshabilita el almacenamiento en búfer del cuerpo de la petición del cliente.

| `on`   | se [lee](https://es.angie.software//angie/docs/configuration/modules/http/index.md#client-body-buffer-size) el cuerpo completo de la petición del cliente antes de enviar la petición al servidor proxy.                                 |
|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `off`  | el cuerpo de la petición se envía al servidor proxy inmediatamente conforme se recibe. En este caso, la petición no puede ser pasada al [siguiente servidor](#proxy-next-upstream) si Angie ya empezó a enviar el cuerpo de la petición. |

Cuando se usa codificación de transferencia fragmentada HTTP/1.1 para enviar el cuerpo de la petición original, el cuerpo de la petición será almacenado en búfer independientemente del valor de la directiva, salvo que HTTP/1.1 esté [habilitado](#proxy-http-version) para el proxy.

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

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

### proxy_send_lowat

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

Si la directiva se establece a un valor distinto de cero, Angie intentará minimizar el número de operaciones de envío en conexiones salientes a un servidor proxy usando la bandera NOTE_LOWAT del método [kqueue](https://es.angie.software//angie/docs/configuration/processing.md#kqueue), o la opción de socket SO_SNDLOWAT, con el tamaño especificado.

#### NOTE
Esta directiva se ignora en Linux, Solaris y Windows.

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

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

### proxy_send_timeout

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

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

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

<a id="proxy-set-body"></a>

### proxy_set_body

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

Permite redefinir el cuerpo de la petición pasado al servidor proxy. El valor puede contener texto, variables y su combinación.

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

<a id="proxy-set-header"></a>

### proxy_set_header

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_set_header` field value;      |
|--------------------------------------------------------------------------------------------|--------------------------------------|
| Predeterminado                                                                             | `proxy_set_header Host $proxy_host;` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location               |

Permite redefinir o añadir campos a la cabecera de la petición [pasada](#proxy-pass-request-headers) al servidor proxy. El value puede contener texto, variables y sus combinaciones. Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas proxy_set_header definidas en el nivel actual. Por defecto, solo dos campos se redefinen:

```nginx
proxy_set_header Host       $proxy_host;
proxy_set_header Connection close;
```

Si el almacenamiento en caché está habilitado, los campos de cabecera `If-Modified-Since`, `If-Unmodified-Since`, `If-None-Match`, `If-Match`, `Range` y `If-Range` de la petición original no se pasan al servidor proxy.

Un campo de cabecera "Host" sin cambios puede pasarse así:

```nginx
proxy_set_header Host       $http_host;
```

Sin embargo, si este campo no está presente en una cabecera de petición del cliente, no se pasará nada. En tal caso es mejor usar la variable [$host](https://es.angie.software//angie/docs/configuration/modules/http/index.md#v-host) - su valor es igual al nombre del servidor en el campo de cabecera de petición "Host" o el nombre del servidor principal si este campo no está presente:

```nginx
proxy_set_header Host       $host;
```

Además, el nombre del servidor puede pasarse junto con el puerto del servidor proxy:

```nginx
proxy_set_header Host       $host:$proxy_port;
```

Si el valor de un campo de cabecera es una cadena vacía, entonces este campo no se pasará a un servidor proxy:

```nginx
proxy_set_header Accept-Encoding "";
```

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

<a id="proxy-socket-keepalive"></a>

### proxy_socket_keepalive

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

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

| `off`   | Por defecto, la configuración del sistema operativo está en efecto para el socket.   |
|---------|--------------------------------------------------------------------------------------|
| `on`    | La opción de socket SO_KEEPALIVE se activa para el socket.                           |

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

<a id="proxy-ssl-certificate"></a>

### proxy_ssl_certificate

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

Especifica un archivo con el certificado en formato PEM usado para autenticación a un servidor HTTPS proxy. Se pueden usar variables en el nombre del archivo.

Cuando [proxy_ssl_ntls](#proxy-ssl-ntls) está habilitado, la directiva acepta dos argumentos en lugar de uno:

```nginx
location /proxy {
    proxy_ssl_ntls  on;

    proxy_ssl_certificate      sign.crt enc.crt;
    proxy_ssl_certificate_key  sign.key enc.key;

    proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";

    proxy_pass https://backend:443;
}
```

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

<a id="proxy-ssl-certificate-cache"></a>

### proxy_ssl_certificate_cache

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_certificate_cache` `off`;<br/><br/>`proxy_ssl_certificate_cache` `max=`N [`inactive=`time] [`valid=`time];   |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_ssl_certificate_cache off;`                                                                                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                                                  |

Define una caché que almacena [certificados SSL](#proxy-ssl-certificate) y [claves secretas](#proxy-ssl-certificate-key) especificados usando variables.

La directiva admite los siguientes parámetros:

- `max` — establece el número máximo de elementos en la caché. Cuando la caché se desborda, se eliminan los elementos menos recientemente usados (LRU).
- `inactive` — define el tiempo tras el cual un elemento se elimina si no ha sido accedido. El valor por defecto es 10 segundos.
- `valid` — define el tiempo durante el cual un elemento en caché se considera válido y puede ser reutilizado. El valor por defecto es 60 segundos. Tras este período, los certificados se recargan o revalidan.
- `off` — deshabilita la caché.

Ejemplo:

```nginx
proxy_ssl_certificate       $proxy_ssl_server_name.crt;
proxy_ssl_certificate_key   $proxy_ssl_server_name.key;
proxy_ssl_certificate_cache max=1000 inactive=20s valid=1m;
```

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

<a id="proxy-ssl-certificate-key"></a>

### proxy_ssl_certificate_key

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

Especifica un archivo con la clave secreta en formato PEM usada para autenticación en un servidor HTTPS proxy.

El valor `engine:`name`:id` puede especificarse en lugar del archivo, lo cual carga una clave secreta con un id especificado desde el motor OpenSSL name.

Se pueden usar variables en el nombre del archivo.

Cuando [proxy_ssl_ntls](#proxy-ssl-ntls) está habilitado, la directiva acepta dos argumentos en lugar de uno:

```nginx
location /proxy {
    proxy_ssl_ntls  on;

    proxy_ssl_certificate      sign.crt enc.crt;
    proxy_ssl_certificate_key  sign.key enc.key;

    proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";

    proxy_pass https://backend:443;
}
```

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

<a id="proxy-ssl-ciphers"></a>

### proxy_ssl_ciphers

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

Especifica los cifrados habilitados para peticiones a un servidor HTTPS proxy. Los cifrados se especifican en el formato entendido por la librería OpenSSL.

La lista de cifrados depende de la versión de OpenSSL instalada.
La lista completa puede verse usando el comando `openssl ciphers`.

#### WARNING
La directiva `proxy_ssl_ciphers` *no* configura cifrados para TLS
1.3 cuando se usa OpenSSL. Para ajustar los cifrados TLS 1.3 con OpenSSL, use la
directiva [proxy_ssl_conf_command](#proxy-ssl-conf-command), que se añadió para soportar configuración
SSL avanzada.

- En LibreSSL, los cifrados TLS 1.3 *sí* pueden configurarse usando
  `proxy_ssl_ciphers`.
- En BoringSSL, los cifrados TLS 1.3 no pueden configurarse en absoluto.

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

<a id="proxy-ssl-conf-command"></a>

### proxy_ssl_conf_command

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

Define [comandos](https://docs.openssl.org/master/man3/SSL_CONF_cmd/) arbitrarios de configuración de OpenSSL al establecer una conexión con el servidor HTTPS proxy.

#### NOTE
La directiva es compatible cuando se usa OpenSSL 1.0.2 o superior.
Para configurar cifrados TLS 1.3 con OpenSSL, use el comando `ciphersuites`.

Se pueden especificar varias directivas proxy_ssl_conf_command en el mismo nivel. Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas proxy_ssl_conf_command definidas en el nivel actual.

#### WARNING
Tenga en cuenta que configurar OpenSSL directamente puede resultar en un comportamiento inesperado.

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

<a id="proxy-ssl-crl"></a>

### proxy_ssl_crl

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

Especifica un archivo con certificados revocados (CRL) en formato PEM usado para [verificar](#proxy-ssl-verify) el certificado del servidor HTTPS proxy.

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

<a id="proxy-ssl-name"></a>

### proxy_ssl_name

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_name` name;        |
|--------------------------------------------------------------------------------------------|-------------------------------|
| Predeterminado                                                                             | `proxy_ssl_name $proxy_host;` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location        |

Permite sobrescribir el nombre de servidor usado para [verificar](#proxy-ssl-verify) el certificado del servidor HTTPS proxy y para ser [pasado por SNI](#proxy-ssl-server-name) al establecer una conexión con el servidor HTTPS proxy.

Por defecto, se usa la parte de host de la URL de [proxy_pass](#proxy-pass).

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

<a id="proxy-ssl-ntls"></a>

### proxy_ssl_ntls

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

Habilita soporte del lado cliente para NTLS usando la librería TLS [TongSuo](https://github.com/Tongsuo-Project/Tongsuo).

```nginx
location /proxy {
    proxy_ssl_ntls  on;

    proxy_ssl_certificate      sign.crt enc.crt;
    proxy_ssl_certificate_key  sign.key enc.key;

    proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";

    proxy_pass https://backend:443;
}
```

#### NOTE
Angie debe compilarse con el parámetro de configuración `--with-ntls` y la librería SSL correspondiente con soporte NTLS

```default
./configure --with-openssl=../Tongsuo-8.3.0 \
            --with-openssl-opt=enable-ntls  \
            --with-ntls
```

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

<a id="proxy-ssl-password-file"></a>

### proxy_ssl_password_file

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

Especifica un archivo con contraseñas para [claves secretas](#proxy-ssl-certificate-key) donde cada contraseña se especifica en una línea separada. Las contraseñas se prueban en orden al cargar la clave.

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

<a id="proxy-ssl-protocols"></a>

### proxy_ssl_protocols

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_ssl_protocols` [`SSLv2`] [`SSLv3`] [`TLSv1`] [`TLSv1.1`] [`TLSv1.2`] [`TLSv1.3`];   |
|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_ssl_protocols TLSv1.2 TLSv1.3;`                                                     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                     |

#### Versionchanged
Distinto en la versión 1.2.0: Se añadió el parámetro `TLSv1.3` al conjunto predeterminado.

Habilita los protocolos especificados para peticiones a un servidor HTTPS proxy.

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

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

### proxy_ssl_server_name

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

Habilita o deshabilita el envío del nombre de servidor
definido por la directiva [proxy_ssl_name](#proxy-ssl-name)
mediante la extensión TLS
[Server Name Indication](http://en.wikipedia.org/wiki/Server_Name_Indication)
(SNI,
[RFC 6066](https://datatracker.ietf.org/doc/html/rfc6066.html))
al establecer una conexión con el servidor HTTPS proxy.

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

<a id="proxy-ssl-session-reuse"></a>

### proxy_ssl_session_reuse

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

Determina si se pueden reutilizar sesiones SSL al trabajar con el servidor proxy. Si aparecen errores "SSL3_GET_FINISHED:digest check failed" en los registros, intente deshabilitar la reutilización de sesiones.

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

<a id="proxy-ssl-trusted-certificate"></a>

### proxy_ssl_trusted_certificate

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

Especifica un archivo con certificados de CA de confianza en formato PEM usado para [verificar](#proxy-ssl-verify) el certificado del servidor HTTPS proxy.

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

<a id="proxy-ssl-verify"></a>

### proxy_ssl_verify

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

Habilita o deshabilita la verificación del certificado del servidor HTTPS proxy.

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

<a id="proxy-ssl-verify-depth"></a>

### proxy_ssl_verify_depth

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

Define la profundidad de verificación en la cadena de certificados del servidor HTTPS proxy.

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

<a id="proxy-store"></a>

### proxy_store

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

Habilita el guardado de archivos en disco.

| `on`   | guarda archivos según las rutas especificadas en las directivas [alias](https://es.angie.software//angie/docs/configuration/modules/http/index.md#alias) o [root](https://es.angie.software//angie/docs/configuration/modules/http/index.md#root)   |
|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `off`  | deshabilita el guardado de archivos                                                                                                                                                                                                                 |

El nombre del archivo puede definirse explícitamente usando una cadena con variables:

```nginx
proxy_store /data/www$original_uri;
```

La fecha de modificación de los archivos se establece según el campo de cabecera `Last-Modified` recibido en la respuesta. La respuesta se escribe primero en un archivo temporal y luego se renombra el archivo. El archivo temporal y el almacenamiento persistente de la respuesta pueden estar en diferentes sistemas de archivos. Sin embargo, tenga en cuenta que en este caso, en lugar de la operación barata de renombrado dentro de un sistema de archivos, el archivo se copia de un sistema de archivos a otro. Por lo tanto, se recomienda que para cualquier ubicación dada, tanto los archivos guardados como el directorio que contiene los archivos temporales, definido por la directiva [proxy_temp_path](#proxy-temp-path), se coloquen en el mismo sistema de archivos.

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

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

location /fetch/ {
    internal;

    proxy_pass         http://backend/;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    alias              /data/www/;
}
```

o así:

```nginx
location /images/ {
    root               /data/www;
    error_page         404 = @fetch;
}

location @fetch {
    internal;

    proxy_pass         http://backend;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    root               /data/www;
}
```

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

<a id="proxy-store-access"></a>

### proxy_store_access

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_store_access` users:permissions ...;   |
|--------------------------------------------------------------------------------------------|-----------------------------------------------|
| Predeterminado                                                                             | `proxy_store_access user:rw;`                 |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                        |

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

```nginx
proxy_store_access user:rw group:rw all:r;
```

Si se especifican permisos de acceso `group` o `all`, los permisos `user` pueden omitirse:

```nginx
proxy_store_access group:rw all:r;
```

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

<a id="proxy-temp-file-write-size"></a>

### proxy_temp_file_write_size

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

Limita el tamaño de los datos escritos en un archivo temporal a la vez, cuando está habilitado el almacenamiento en búfer de respuestas de servidores proxy en archivos temporales. Por defecto, el tamaño está limitado por dos búferes definidos por las directivas [proxy_buffer_size](#proxy-buffer-size) y [proxy_buffers](#proxy-buffers). El tamaño máximo de un archivo temporal se define con la directiva [proxy_max_temp_file_size](#proxy-max-temp-file-size).

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

<a id="proxy-temp-path"></a>

### proxy_temp_path

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `proxy_temp_path` path [level1 [level2 [level3]]]\`;                                                                                                                                |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `proxy_temp_path proxy_temp;`<br/>(la ruta depende de la [opción de compilación](https://es.angie.software//angie/docs/installation/sourcebuild.md#paths) `--http-proxy-temp-path`) |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                                                                                                              |

Define un directorio para almacenar archivos temporales con datos recibidos de servidores proxy. Puede usarse una jerarquía de subdirectorios de hasta tres niveles bajo el directorio especificado. Por ejemplo, en la siguiente configuración

```nginx
proxy_temp_path /spool/angie/proxy_temp 1 2;
```

un archivo temporal podría verse así:

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

Consulte también el parámetro `use_temp_path` de la directiva [proxy_cache_path](#proxy-cache-path).

<a id="built-in-variables-6"></a>

## Variables integradas

El módulo http_proxy admite variables integradas que pueden usarse para componer cabeceras con la directiva [proxy_set_header](#proxy-set-header):

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

### `$proxy_host`

nombre y puerto de un servidor proxy especificado en la directiva [proxy_pass](#proxy-pass);

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

### `$proxy_port`

puerto de un servidor proxy especificado en la directiva [proxy_pass](#proxy-pass), o el puerto predeterminado del protocolo;

<a id="v-proxy-add-x-forwarded-for"></a>

### `$proxy_add_x_forwarded_for`

el campo de cabecera de petición del cliente `X-Forwarded-For` con la variable [$remote_addr](https://es.angie.software//angie/docs/configuration/modules/http/index.md#v-remote-addr) añadida al final, separada por una coma. Si el campo `X-Forwarded-For` no está presente en la cabecera de petición del cliente, la variable [$proxy_add_x_forwarded_for](#v-proxy-add-x-forwarded-for) es igual a la variable [$remote_addr](https://es.angie.software//angie/docs/configuration/modules/http/index.md#v-remote-addr).
