Proxy#

Permite reenviar solicitudes a otro servidor (proxy).

Ejemplo de Configuración#

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

Directivas#

proxy_bind#

Sintaxis

proxy_bind address [transparent] | off;

Predeterminado

Contexto

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:

proxy_bind $remote_addr transparent;

Para que este parámetro funcione, normalmente es necesario ejecutar los procesos worker de Angie con privilegios de superusuario. 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.

Nota

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

proxy_buffer_size#

Sintaxis

proxy_buffer_size size;

Predeterminado

proxy_buffer_size 4k|8k;

Contexto

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.

proxy_buffering#

Sintaxis

proxy_buffering on | off;

Predeterminado

proxy_buffering on;

Contexto

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 y proxy_buffers. Si la respuesta completa no cabe en memoria, parte de ella puede guardarse en un archivo temporal en disco. La escritura en archivos temporales está controlada por las directivas proxy_max_temp_file_size y proxy_temp_file_write_size.

off

La respuesta se pasa al cliente de forma síncrona, inmediatamente a medida que se recibe. Angie no intentará leer la respuesta completa del servidor proxy. El tamaño máximo de datos que Angie puede recibir del servidor en un momento está definido por la directiva proxy_buffer_size.

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

Sintaxis

proxy_buffers number size;

Predeterminado

proxy_buffers 8 4k | 8k;

Contexto

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

proxy_busy_buffers_size#

Sintaxis

proxy_busy_buffers_size size;

Predeterminado

proxy_busy_buffers_size 8k | 16k;

Contexto

http, server, location

Cuando el 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 y proxy_buffers.

proxy_cache#

Sintaxis

proxy_cache zone | off [path=path];

Predeterminado

proxy_cache off;

Contexto

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.

Added in version 1.2.0: PRO

En Angie PRO, se pueden especificar múltiples directivas 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 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 y se espera que use variables, incluidas aquellas que contienen información de la respuesta.

Si la respuesta se toma de la caché, el path no se reevalúa; por lo tanto, una respuesta en caché conserva su path original hasta que sea eliminada de la caché.

Esto permite seleccionar la ruta de caché necesaria aplicando directivas map o scripts a las respuestas del backend. Ejemplo con Content-Type:

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.

Nota

Al usar proxy_cache, normalmente también necesita establecer la directiva 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.

proxy_cache_background_update#

Sintaxis

proxy_cache_background_update on | off;

Predeterminado

proxy_cache_background_update off;

Contexto

http, server, location

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

Advertencia

El uso de una respuesta obsoleta mientras se actualiza debe estar permitido.

proxy_cache_bypass#

Sintaxis

proxy_cache_bypass ...;

Predeterminado

Contexto

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 tipo cadena no está vacío y no es igual a "0", entonces la respuesta no se tomará de la caché:

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

Sintaxis

proxy_cache_convert_head on | off;

Predeterminado

proxy_cache_convert_head on;

Contexto

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é debe incluir la $request_method.

proxy_cache_key#

Sintaxis

proxy_cache_key string;

Predeterminado

proxy_cache_key $scheme$proxy_host$request_uri;

Contexto

http, server, location

Define una clave para la caché, por ejemplo:

proxy_cache_key "$host$request_uri $cookie_user";

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

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

proxy_cache_lock#

Sintaxis

proxy_cache_lock on | off;

Predeterminado

proxy_cache_lock off;

Contexto

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, 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_age#

Sintaxis

proxy_cache_lock_age time;

Predeterminado

proxy_cache_lock_age 5s;

Contexto

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.

proxy_cache_lock_timeout#

Sintaxis

proxy_cache_lock_timeout time;

Predeterminado

proxy_cache_lock_timeout 5s;

Contexto

http, server, location

Define un tiempo de espera para proxy_cache_lock. Cuando expira el tiempo, la solicitud se enviará al servidor proxy, sin embargo, la respuesta no se almacenará en la caché.

proxy_cache_max_range_offset#

Sintaxis

proxy_cache_max_range_offset number;

Predeterminado

Contexto

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

proxy_cache_methods#

Sintaxis

proxy_cache_methods GET | HEAD | POST ...;

Predeterminado

proxy_cache_methods GET HEAD;

Contexto

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

Sintaxis

proxy_cache_min_uses number;

Predeterminado

proxy_cache_min_uses 1;

Contexto

http, server, location

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

proxy_cache_path#

Sintaxis

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

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

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:

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

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

/data/angie/cache/c/29/b7f54b2df7773722d382f4809d65029c

Una respuesta cacheada primero se escribe en un archivo temporal y luego se renombra. 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 una operación de renombrado económico. Por tanto, se recomienda que tanto la caché como el directorio que contiene archivos temporales estén en el mismo sistema de archivos.

use_temp_path=on | off

Define el directorio para archivos temporales

on

Si este parámetro se omite o se establece en on, se usará el directorio definido por la directiva proxy_temp_path para el location correspondiente.

off

Los archivos temporales se colocarán directamente en el directorio de la 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.

Una zona de un megabyte puede almacenar unas 8.000 claves.

Cuando se usa el parámetro opcional file con keys_zone, Angie guarda el contenido de esta zona en disco al salir el proceso maestro, e intenta restaurarlo en la misma dirección de memoria al siguiente inicio o tras una actualización binaria, para lograr mayor persistencia y mejorar el tiempo de carga de la caché.

Si la zona no puede restaurarse debido a un cambio de tamaño, incompatibilidad binaria u otras razones, Angie registrará una advertencia (failed to restore zone at address) y no usará el mecanismo de restauración de zona. En su lugar, el archivo incompatible se renombrará a .old; puede eliminarlo o restaurar su nombre y revertir Angie a la configuración y versión donde se creó originalmente.

Advertencia

Asegúrese de que la ruta del file esté especificada correctamente y tenga los permisos necesarios para que Angie pueda usarla, y que esté protegida contra accesos no autorizados; las rutas relativas se basan en el prefijo.

inactive

Si los datos de la caché no se acceden durante el tiempo especificado por este parámetro, los datos se eliminan independientemente de su vigencia.

Por defecto, inactive es 10 minutos.

Nota

Added in version 1.2.0: PRO

En Angie PRO, se pueden especificar múltiples directivas proxy_cache_path con el mismo valor de keys_zone. El tamaño de la zona de memoria compartida solo puede especificarse en la primera directiva. La selección entre directivas se basará en el parámetro path de la directiva proxy_cache correspondiente.

Un proceso especial cache manager monitoriza el tamaño máximo de la caché y el espacio libre mínimo en el sistema de archivos con la caché, eliminando los datos menos utilizados cuando se supera el tamaño máximo o cuando hay espacio insuficiente. El proceso de eliminación funciona en iteraciones.

max_size

valor máximo de tamaño de caché

min_free

valor mínimo de 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

Por defecto: 100.

manager_threshold

limita la duración de una iteración

Por defecto: 200 milisegundos.

manager_sleep

configura una pausa entre iteraciones

Por defecto: 50 milisegundos.

Un minuto después de iniciar Angie, se activa un proceso especial cache loader. Este escanea el sistema de archivos en busca de datos previamente almacenados en caché y carga esta información en la zona de caché. El proceso trabaja iterativamente; cada iteración procesa un número limitado de elementos definido por el parámetro loader_files, asegura no superar loader_threshold, y 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

Por defecto: 100

loader_threshold

limita la duración de una iteración

Por defecto: 200 milisegundos

loader_sleep

configura una pausa entre iteraciones

Por defecto: 50 milisegundos

Nota

Especificar el file para el parámetro keys_zone no afecta al funcionamiento del cargador de caché.

proxy_cache_revalidate#

Sintaxis

proxy_cache_revalidate on | off;

Predeterminado

proxy_cache_revalidate off;

Contexto

http, server, location

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

proxy_cache_use_stale#

Sintaxis

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

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.

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

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

  • La extensión stale-while-revalidate del campo de cabecera Cache-Control permite usar una respuesta caducada si se está actualizando.

  • La extensión stale-if-error del campo de cabecera Cache-Control permite usar una respuesta caducada en caso de error.

Nota

Esto tiene menor prioridad que los parámetros definidos en 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_valid#

Sintaxis

proxy_cache_valid [code ...] time;

Predeterminado

Contexto

http, server, location

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

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é:

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:

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

Nota

Los parámetros de almacenamiento en caché también pueden establecerse directamente en la cabecera de respuesta. Esto tiene mayor prioridad que el tiempo de caché definido en 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 la solicitud correspondiente.

El procesamiento de uno o más de estos campos de cabecera de respuesta puede deshabilitarse mediante la directiva proxy_ignore_headers.

proxy_connect_timeout#

Sintaxis

proxy_connect_timeout time;

Predeterminado

proxy_connect_timeout 60s;

Contexto

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 los 75 segundos.

proxy_connection_drop#

Sintaxis

proxy_connection_drop time | on | off;

Predeterminado

proxy_connection_drop off;

Contexto

http, server, location

Habilita la finalización de todas las conexiones con el servidor proxy después de que se haya eliminado del grupo o se haya marcado como permanentemente no disponible mediante un proceso de reresolve o el comando API DELETE.

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

Definir time habilita un tiempo de espera para la finalización de la conexión; con on, las conexiones se cierran inmediatamente.

proxy_force_ranges#

Sintaxis

proxy_force_ranges on | off;

Predeterminado

proxy_force_ranges off;

Contexto

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.

proxy_headers_hash_bucket_size#

Sintaxis

proxy_headers_hash_bucket_size size;

Predeterminado

proxy_headers_hash_bucket_size 64;

Contexto

http, server, location

Define el tamaño del bucket para las tablas hash usadas por las directivas proxy_hide_header y proxy_set_header. Los detalles de la configuración de tablas hash se describen por separado.

proxy_headers_hash_max_size#

Sintaxis

proxy_headers_hash_max_size size;

Predeterminado

proxy_headers_hash_max_size 512;

Contexto

http, server, location

Define el tamaño máximo de las tablas hash usadas por las directivas proxy_hide_header y proxy_set_header. Los detalles de la configuración de tablas hash se describen por separado.

proxy_hide_header#

Sintaxis

proxy_hide_header field;

Predeterminado

Contexto

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

Sintaxis

proxy_http_version 1.0 | 1.1 | 3;

Predeterminado

proxy_http_version 1.0;

Contexto

http, server, location, if in location, limit_except

Define la versión del protocolo HTTP para el proxy. Por defecto, se usa la versión 1.0. Se recomienda usar la versión 1.1 o superior junto con conexiones keepalive.

proxy_http3_hq#

Sintaxis

proxy_http3_hq on | off;

Predeterminado

proxy_http3_hq off;

Contexto

http, server

Activa el modo especial de negociación hq-interop, usado para las pruebas de interoperabilidad de QUIC en las que Angie participa.

Advertencia

Active este modo solo para ejecutar pruebas especializadas que lo requieran explícitamente.

proxy_http3_max_concurrent_streams#

Sintaxis

proxy_http3_max_concurrent_streams number;

Predeterminado

proxy_http3_max_concurrent_streams 128;

Contexto

http, server

Inicializa los parámetros de HTTP/3 y QUIC, y define el número máximo de flujos de solicitudes HTTP/3 concurrentes en una conexión. Requiere habilitar conexiones keepalive.

proxy_http3_max_table_capacity#

Sintaxis

proxy_http3_max_table_capacity number;

Predeterminado

proxy_http3_max_table_capacity 4096;

Contexto

http, server, location

Define la capacidad de la tabla dinámica para conexiones proxy.

Nota

Una directiva similar, http3_max_table_capacity, establece este valor para las conexiones de servidor. Para evitar errores, el uso de tablas dinámicas se desactiva cuando la caché está habilitada en modo proxy.

proxy_http3_stream_buffer_size#

Sintaxis

proxy_http3_stream_buffer_size size;

Predeterminado

proxy_http3_stream_buffer_size 64k;

Contexto

http, server

Define el tamaño del búfer usado para leer y escribir flujos QUIC.

proxy_ignore_client_abort#

Sintaxis

proxy_ignore_client_abort on | off;

Predeterminado

proxy_ignore_client_abort off;

Contexto

http, server, location

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

proxy_ignore_headers#

Sintaxis

proxy_ignore_headers field ...;

Predeterminado

Contexto

http, server, location

Desactiva el procesamiento de ciertos campos de cabecera de respuesta provenientes 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:

proxy_intercept_errors#

Sintaxis

proxy_intercept_errors on | off;

Predeterminado

proxy_intercept_errors off;

Contexto

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.

proxy_limit_rate#

Sintaxis

proxy_limit_rate rate;

Predeterminado

proxy_limit_rate 0;

Contexto

http, server, location

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

0

desactiva la limitación de velocidad

Nota

El límite se aplica por petición, por lo que si Angie abre dos conexiones simultáneamente al servidor proxy, la velocidad total será el doble del límite especificado. Esta limitación solo funciona si el buffering de respuestas del servidor proxy está habilitado.

proxy_max_temp_file_size#

Sintaxis

proxy_max_temp_file_size size;

Predeterminado

proxy_max_temp_file_size 1024m;

Contexto

http, server, location

Cuando el buffering de respuestas del servidor proxy está habilitado y la respuesta completa no cabe en los búferes definidos por las directivas proxy_buffer_size y proxy_buffers, una parte de la respuesta puede guardarse en un archivo temporal. Esta directiva define el tamaño máximo del archivo temporal. El tamaño de los datos escritos al archivo temporal en una sola operación se controla mediante la directiva proxy_temp_file_write_size.

0

desactiva el almacenamiento en archivos temporales

Nota

Esta restricción no se aplica a las respuestas que serán cacheadas o almacenadas en disco.

proxy_method#

Sintaxis

proxy_method method;

Predeterminado

Contexto

http, server, location

Especifica el método HTTP que se usará en las solicitudes enviadas al servidor proxy en lugar del método de la solicitud del cliente. El valor del parámetro puede contener variables.

proxy_next_upstream#

Sintaxis

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

http, server, location

Especifica en qué casos una petición debe pasarse al siguiente servidor en el grupo 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 (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.

Nota

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 de comunicación con un servidor.

error

timeout

invalid_header

siempre considerados intentos fallidos, aunque no estén en la directiva

http_500

http_502

http_503

http_504

http_429

considerados intentos fallidos solo si están especificados en la directiva

http_403

http_404

nunca considerados intentos fallidos

El reenvío a otro servidor puede limitarse mediante el número de intentos y el tiempo.

proxy_next_upstream_timeout#

Sintaxis

proxy_next_upstream_timeout time;

Predeterminado

proxy_next_upstream_timeout 0;

Contexto

http, server, location

Limita el tiempo durante el cual una petición puede reenviarse al siguiente servidor.

0

desactiva esta limitación

proxy_next_upstream_tries#

Sintaxis

proxy_next_upstream_tries number;

Predeterminado

proxy_next_upstream_tries 0;

Contexto

http, server, location

Limita el número de intentos posibles de reenviar una petición al siguiente servidor.

0

desactiva esta limitación

proxy_no_cache#

Sintaxis

proxy_no_cache string ...;

Predeterminado

Contexto

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:

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

Sintaxis

proxy_pass uri;

Predeterminado

Contexto

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:

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:

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.

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.

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 que coincide con la ubicación se reemplaza por el URI especificado en la directiva:

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 y normalizado si se procesó un URI reescrito:

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

En algunos casos, la parte del URI a reemplazar no puede determinarse:

  • Cuando location se especifica usando una expresión regular o dentro de un location con nombre. En estos casos, proxy_pass debe especificarse sin URI.

  • Cuando el URI se modifica dentro de un location con proxy usando la directiva rewrite y esa misma configuración se usa para procesar la petición (break):

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 se pasa el URI completo modificado.

  • Cuando se usan variables en proxy_pass:

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

En este caso, si se especifica un URI en la directiva, se pasa tal cual, reemplazando el URI original.

El proxying de WebSocket requiere una configuración especial.

proxy_pass_header#

Sintaxis

proxy_pass_header field ...;

Predeterminado

Contexto

http, server, location

Permite pasar al cliente cabeceras de respuesta de un servidor proxy que de otro modo estarían deshabilitadas.

proxy_pass_request_body#

Sintaxis

proxy_pass_request_body on | off;

Predeterminado

proxy_pass_request_body on;

Contexto

http, server, location

Indica si el cuerpo original de la petición se reenvía al servidor proxy.

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 y proxy_pass_request_headers.

proxy_pass_request_headers#

Sintaxis

proxy_pass_request_headers on | off;

Predeterminado

proxy_pass_request_headers on;

Contexto

http, server, location

Indica si las cabeceras de la petición original se reenvían al servidor proxy.

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 y proxy_pass_request_body.

proxy_pass_trailers#

Sintaxis

proxy_pass_trailers on | off;

Predeterminado

proxy_pass_trailers off;

Contexto

http, server, location

Permite reenviar trailers desde el servidor proxy al cliente.

Una sección de trailers en HTTP/1.1 se habilita explícitamente.

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

    proxy_pass ...;
}

proxy_quic_active_connection_id_limit#

Sintaxis

proxy_quic_active_connection_id_limit number;

Predeterminado

proxy_quic_active_connection_id_limit 2;

Contexto

http, server

Define el valor del parámetro de transporte active_connection_id_limit para QUIC. Este es el número máximo de IDs de conexión activos que pueden mantenerse por servidor.

proxy_quic_gso#

Sintaxis

proxy_quic_gso on | off;

Predeterminado

proxy_quic_gso off;

Contexto

http, server

Activa el envío de datos en modo optimizado para QUIC usando generic segmentation offload.

proxy_quic_host_key#

Sintaxis

proxy_quic_host_key file;

Predeterminado

Contexto

http, server

Define un file con la clave secreta usada con QUIC para cifrar Stateless Reset y Address Validation.

Por defecto, se genera una clave aleatoria en cada reinicio. Los tokens generados con claves antiguas no son aceptados.

proxy_read_timeout#

Sintaxis

proxy_read_timeout time;

Predeterminado

proxy_read_timeout 60s;

Contexto

http, server, location

Define un timeout para leer la respuesta del servidor proxy. El tiempo se aplica únicamente entre dos operaciones de lectura consecutivas, no a la transmisión completa. Si el servidor no transmite nada dentro de este tiempo, la conexión se cierra.

proxy_redirect#

Sintaxis

proxy_redirect default; proxy_redirect off; proxy_redirect redirect replacement;

Predeterminado

proxy_redirect default;

Contexto

http, server, location

Define el texto que debe modificarse en las cabeceras "Location" y "Refresh" de una respuesta del servidor proxy.

Por ejemplo, si el servidor devolvió:

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

La directiva

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

reescribirá esta cadena a:

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

El nombre de servidor puede omitirse en la cadena de replacement:

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

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

El reemplazo por defecto especificado por el parámetro default usa los parámetros de las directivas location y proxy_pass. Por lo tanto, las siguientes configuraciones son equivalentes:

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

Advertencia

El parámetro default no está permitido si proxy_pass se especifica usando variables.

La cadena replacement puede contener variables:

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

También redirect puede contener variables:

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

La directiva puede especificarse con expresiones regulares. En este caso, redirect debe comenzar con "~" para coincidencia sensible a mayúsculas o con "~*" para coincidencia insensible. La expresión regular puede contener capturas con nombre y posicionales, y replacement puede referenciarlas:

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

Se pueden definir varias directivas proxy_redirect en el mismo nivel:

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

Si varias directivas pueden aplicarse a las cabeceras de respuesta de un servidor proxy, se elegirá la primera que coincida.

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

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

proxy_redirect / /;

proxy_request_buffering#

Sintaxis

proxy_request_buffering on | off;

Predeterminado

proxy_request_buffering on;

Contexto

http, server, location

Habilita o deshabilita el buffering del cuerpo de la petición del cliente.

on

se lee el cuerpo completo de la petición del cliente antes de enviarla al servidor proxy.

off

el cuerpo de la petición se envía inmediatamente al servidor proxy conforme se recibe. En este caso, la petición no puede ser reenviada al siguiente servidor si Angie ya empezó a enviar el cuerpo.

Cuando se usa codificación de transferencia fragmentada (chunked transfer encoding) HTTP/1.1 para enviar el cuerpo de la petición original, este será almacenado en buffer independientemente del valor de la directiva, salvo que HTTP/1.1 esté habilitado para el proxying.

proxy_send_lowat#

Sintaxis

proxy_send_lowat size;

Predeterminado

proxy_send_lowat 0;

Contexto

http, server, location

Si se define 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, o la opción de socket SO_SNDLOWAT, con el tamaño especificado.

Nota

Esta directiva se ignora en Linux, Solaris y Windows.

proxy_send_timeout#

Sintaxis

proxy_send_timeout time;

Predeterminado

proxy_send_timeout 60s;

Contexto

http, server, location

Define un timeout para la transmisión de una petición al servidor proxy. El tiempo se aplica solo entre dos operaciones de escritura consecutivas, no a la transmisión completa. Si el servidor proxy no recibe nada dentro de este tiempo, la conexión se cierra.

proxy_set_body#

Sintaxis

proxy_set_body value;

Predeterminado

Contexto

http, server, location

Permite redefinir el cuerpo de la petición que se envía al servidor proxy. El valor puede contener texto, variables y sus combinaciones.

proxy_set_header#

Sintaxis

proxy_set_header field value;

Predeterminado

proxy_set_header Host $proxy_host;

Contexto

http, server, location

Permite redefinir o añadir campos a la cabecera de la petición enviada al servidor proxy. El value puede contener texto, variables y sus combinaciones. Estas directivas se heredan del nivel de configuración anterior solo si no hay directivas proxy_set_header definidas en el nivel actual.

Por defecto, solo dos campos se redefinen:

proxy_set_header Host       $proxy_host;
proxy_set_header Connection close;

Si el caching 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 envían al servidor proxy.

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

proxy_set_header Host       $http_host;

Sin embargo, si este campo no está presente en la cabecera de la petición del cliente, no se enviará nada. En tal caso, es mejor usar la variable $host, cuyo valor corresponde al nombre de servidor en la cabecera "Host" o al nombre del servidor principal si no está presente:

proxy_set_header Host       $host;

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

proxy_set_header Host       $host:$proxy_port;

Si el valor de un campo de cabecera es una cadena vacía, dicho campo no se enviará al servidor proxy:

proxy_set_header Accept-Encoding "";

proxy_socket_keepalive#

Sintaxis

proxy_socket_keepalive on | off;

Predeterminado

proxy_socket_keepalive off;

Contexto

http, server, location

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

off

Por defecto, se aplican los parámetros del sistema operativo para el socket.

on

Se activa la opción de socket SO_KEEPALIVE.

proxy_ssl_certificate#

Sintaxis

proxy_ssl_certificate file [file];

Predeterminado

Contexto

http, server, location

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

Added in version 1.2.0.

Cuando proxy_ssl_ntls está habilitado, la directiva acepta dos argumentos en lugar de uno:

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

proxy_ssl_certificate_cache#

Sintaxis

proxy_ssl_certificate_cache off; proxy_ssl_certificate_cache max=N [inactive=time] [valid=time];

Predeterminado

proxy_ssl_certificate_cache off;

Contexto

http, server, location

Define una caché que almacena certificados SSL y claves secretas especificados mediante variables.

La directiva admite los siguientes parámetros:

  • max — número máximo de elementos en la caché. Cuando se sobrepasa, se eliminan los menos usados (LRU).

  • inactive — tiempo tras el cual un elemento se elimina si no ha sido accedido. Valor por defecto: 10 segundos.

  • valid — tiempo durante el cual un elemento en caché se considera válido y reutilizable. Valor por defecto: 60 segundos. Tras este periodo, los certificados se recargan o revalidan.

  • off — desactiva la caché.

Ejemplo:

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;

proxy_ssl_certificate_key#

Sintaxis

proxy_ssl_certificate_key file [file];

Predeterminado

Contexto

http, server, location

Especifica un archivo con la clave secreta en formato PEM usada para autenticarse ante un servidor HTTPS proxy.

Puede usarse el valor engine:`name`:id en lugar de un archivo, lo cual carga una clave secreta con el id especificado desde el motor OpenSSL indicado.

Se pueden usar variables en el nombre de archivo.

Added in version 1.2.0.

Cuando proxy_ssl_ntls está habilitado, la directiva acepta dos argumentos en lugar de uno:

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

proxy_ssl_ciphers#

Sintaxis

proxy_ssl_ciphers ciphers;

Predeterminado

proxy_ssl_ciphers DEFAULT;

Contexto

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 instalada de OpenSSL. La lista completa puede verse usando el comando openssl ciphers.

Advertencia

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, añadida para soportar configuración avanzada de SSL.

  • En LibreSSL, los cifrados TLS 1.3 pueden configurarse con proxy_ssl_ciphers.

  • En BoringSSL, los cifrados TLS 1.3 no pueden configurarse en absoluto.

proxy_ssl_conf_command#

Sintaxis

proxy_ssl_conf_command name value;

Predeterminado

Contexto

http, server, location

Define comandos arbitrarios de configuración de OpenSSL (SSL_CONF_cmd) al establecer una conexión con el servidor HTTPS proxy.

Nota

La directiva es compatible con OpenSSL 1.0.2 o superior. Para configurar cifrados TLS 1.3 en OpenSSL, use el comando ciphersuites.

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

Advertencia

Configurar OpenSSL directamente puede provocar un comportamiento inesperado.

proxy_ssl_crl#

Sintaxis

proxy_ssl_crl file;

Predeterminado

Contexto

http, server, location

Especifica un archivo con certificados revocados (CRL) en formato PEM usado para verificar el certificado del servidor HTTPS proxy.

proxy_ssl_name#

Sintaxis

proxy_ssl_name name;

Predeterminado

proxy_ssl_name $proxy_host;

Contexto

http, server, location

Permite sobrescribir el nombre de servidor usado para verificar el certificado del servidor HTTPS proxy y para ser pasado por SNI al establecer la conexión.

Por defecto, se usa la parte de host de la URL en proxy_pass.

proxy_ssl_ntls#

Added in version 1.2.0.

Sintaxis

proxy_ssl_ntls on | off;

Predeterminado

proxy_ssl_ntls off;

Contexto

http, server

Habilita soporte del lado cliente para NTLS usando la librería TLS TongSuo.

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

Nota

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

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

proxy_ssl_password_file#

Sintaxis

proxy_ssl_password_file file;

Predeterminado

Contexto

http, server, location

Especifica un archivo con contraseñas para claves secretas, donde cada contraseña se define en una línea independiente. Las contraseñas se prueban en orden al cargar la clave.

proxy_ssl_protocols#

Sintaxis

proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];

Predeterminado

proxy_ssl_protocols TLSv1.2 TLSv1.3;

Contexto

http, server, location

Distinto en la versión 1.2.0: Se añadió el parámetro TLSv1.3 al conjunto por defecto.

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

proxy_ssl_server_name#

Sintaxis

proxy_ssl_server_name on | off;

Predeterminado

proxy_ssl_server_name off;

Contexto

http, server, location

Habilita o deshabilita el envío del nombre de servidor configurado con proxy_ssl_name mediante la extensión TLS Server Name Indication (SNI, RFC 6066) al establecer una conexión con el servidor HTTPS proxy.

proxy_ssl_session_reuse#

Sintaxis

proxy_ssl_session_reuse on | off;

Predeterminado

proxy_ssl_session_reuse on;

Contexto

http, server, location

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

proxy_ssl_trusted_certificate#

Sintaxis

proxy_ssl_trusted_certificate file;

Predeterminado

Contexto

http, server, location

Especifica un archivo con certificados de CA de confianza en formato PEM usados para verificar el certificado del servidor HTTPS proxy.

proxy_ssl_verify#

Sintaxis

proxy_ssl_verify on | off;

Predeterminado

proxy_ssl_verify off;

Contexto

http, server, location

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

proxy_ssl_verify_depth#

Sintaxis

proxy_ssl_verify_depth number;

Predeterminado

proxy_ssl_verify_depth 1;

Contexto

http, server, location

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

proxy_store#

Sintaxis

proxy_store on | off | string;

Predeterminado

proxy_store off;

Contexto

http, server, location

Habilita el guardado de archivos en disco.

on

guarda archivos según las rutas definidas en las directivas alias o root

off

prohíbe el guardado de archivos

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

proxy_store /data/www$original_uri;

La fecha de modificación se establece según la cabecera de respuesta Last-Modified. La respuesta se escribe primero en un archivo temporal y luego se renombra. Archivos temporales y almacenamiento persistente pueden ubicarse en diferentes sistemas de ficheros, pero en ese caso el archivo se copiará entre sistemas, en lugar de una operación barata de renombrado. Por ello, se recomienda que en un mismo location tanto los archivos guardados como el directorio de temporales (definido con proxy_temp_path) estén en el mismo sistema de ficheros.

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

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í:

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

proxy_store_access#

Sintaxis

proxy_store_access users:permissions ...;

Predeterminado

proxy_store_access user:rw;

Contexto

http, server, location

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

proxy_store_access user:rw group:rw all:r;

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

proxy_store_access group:rw all:r;

proxy_temp_file_write_size#

Sintaxis

proxy_temp_file_write_size size;

Predeterminado

proxy_temp_file_write_size 8k|16k;

Contexto

http, server, location

Limita el tamaño de los datos escritos en un archivo temporal en una sola operación, cuando está habilitado el almacenamiento en archivos temporales de respuestas desde el servidor proxy. Por defecto, el tamaño está limitado por dos búferes definidos en las directivas proxy_buffer_size y proxy_buffers. El tamaño máximo del archivo temporal se define con la directiva proxy_max_temp_file_size.

proxy_temp_path#

Sintaxis

proxy_temp_path path [level1 [level2 [level3]]]`;

Predeterminado

proxy_temp_path proxy_temp; (la ruta depende de la opción de compilación --http-proxy-temp-path)

Contexto

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:

proxy_temp_path /spool/angie/proxy_temp 1 2;

un archivo temporal podría tener el siguiente aspecto:

/spool/angie/proxy_temp/7/45/00000123457

Consulte también el parámetro use_temp_path de la directiva proxy_cache_path.

Variables Integradas#

El módulo http_proxy admite variables internas que pueden usarse para componer cabeceras con la directiva proxy_set_header:

$proxy_host#

nombre y puerto del servidor proxy especificado en la directiva proxy_pass;

$proxy_port#

puerto del servidor proxy especificado en la directiva proxy_pass, o el puerto por defecto del protocolo;

$proxy_add_x_forwarded_for#

el campo de cabecera de la petición de cliente X-Forwarded-For con la variable $remote_addr añadida, separada por una coma. Si el campo X-Forwarded-For no está presente en la cabecera de la petición, la variable $proxy_add_x_forwarded_for es igual a la variable $remote_addr.