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 de la caché caducado, mientras se devuelve al cliente una respuesta en caché obsoleta.

Advertencia

El uso de una respuesta en caché 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 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 el almacenamiento en 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 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 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.

Una zona de un megabyte puede almacenar aproximadamente 8.000 claves.

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

Si la zona no puede restaurarse debido a un cambio de tamaño, incompatibilidad de versión 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 file esté especificada correctamente y tenga los permisos necesarios para que Angie la use, y esté protegida del acceso no autorizado; las rutas relativas se basan en el prefijo.

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.

Por defecto, inactive es 10 minutos.

Nota

Added in version 1.2.0: PRO

En Angie PRO, puede especificar 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 directiva. La selección entre directivas se basará en el parámetro path de la directiva 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. El proceso de eliminación funciona 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

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

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

El uso de una respuesta caducada de la caché 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 de la caché si se está actualizando en ese momento.

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

Nota

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_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 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 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 la solicitud correspondiente.

El procesamiento de uno o más de estos campos de cabecera de respuesta puede deshabilitarse usando 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 superar los 75 segundos.

proxy_connection_drop#

Sintaxis

proxy_connection_drop time | on | off;

Predeterminado

proxy_connection_drop off;

Contexto

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 o el comando API 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 de terminación de conexión; con on establecido, las conexiones se descartan 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 la versión 1.1 o superior para usar 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, que se usa para pruebas de interoperabilidad QUIC marten-seemann/quic-interop-runner en las que se basa Angie.

Advertencia

Habilita 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 la configuración de HTTP/3 y QUIC y define el número máximo de flujos de peticiones 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 define este valor para conexiones de servidor. Para evitar errores, el uso de la tabla dinámica se deshabilita cuando el cacheo está habilitado 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 buffer 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 la conexión con un servidor proxy debe cerrarse cuando un cliente cierra la conexión sin esperar una respuesta.

proxy_ignore_headers#

Sintaxis

proxy_ignore_headers field ...;

Predeterminado

Contexto

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:

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 del 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 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 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 establecidos por las directivas proxy_buffer_size y 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.

0

desactiva el buffering de respuestas a 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 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.

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 normalizado se pasa cuando se procesa el URI modificado:

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, y esta misma configuración se usa para procesar una 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 el URI completo modificado de la petición se pasa al servidor.

  • 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 al servidor tal como está, reemplazando el URI original de la petición.

El proxy de WebSocket requiere una configuración especial.

proxy_pass_header#

Sintaxis

proxy_pass_header field ...;

Predeterminado

Contexto

http, server, location

Permite pasar campos de cabecera deshabilitados de otro modo desde un servidor proxy a un cliente.

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 de la petición original se pasa 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 los campos de cabecera de la petición original se pasan 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 pasar campos trailer desde un servidor proxy a un cliente.

Una sección trailer 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

Establece el valor del parámetro de transporte active_connection_id_limit de QUIC. Este es el número máximo de IDs de conexión activos que se pueden mantener 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 por lotes optimizado para QUIC usando generic segmentation offload.

proxy_quic_host_key#

Sintaxis

proxy_quic_host_key file;

Predeterminado

Contexto

http, server

Establece un file con la clave secreta usada con QUIC para cifrar Stateless Reset y Address Validation tokens. 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 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.

proxy_redirect#

Sintaxis

proxy_redirect default;

proxy_redirect off;

proxy_redirect redirect replacement;

Predeterminado

proxy_redirect default;

Contexto

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:

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/

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

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 y proxy_pass. Por lo tanto, las dos configuraciones siguientes 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.

Una cadena replacement puede contener variables:

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

Un redirect también puede contener variables:

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:

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:

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:

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 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 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 buffer independientemente del valor de la directiva, salvo que HTTP/1.1 esté habilitado para el proxy.

proxy_send_lowat#

Sintaxis

proxy_send_lowat size;

Predeterminado

proxy_send_lowat 0;

Contexto

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

Establece un timeout para transmitir una petición al servidor proxy. El timeout 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.

proxy_set_body#

Sintaxis

proxy_set_body value;

Predeterminado

Contexto

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.

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

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 pasan 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 una cabecera de petición del cliente, no se pasará nada. En tal caso es mejor usar la variable $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:

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, entonces este campo no se pasará a un 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 "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.

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 autenticación a un servidor HTTPS proxy. Se pueden usar variables en el nombre del 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 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:

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 usado para autenticación a 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.

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 de OpenSSL instalada. 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, que se añadió para soportar configuración SSL avanzada.

  • En LibreSSL, los cifrados TLS 1.3 pueden configurarse usando 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 al establecer una conexión con el servidor HTTPS proxy.

Nota

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.

Advertencia

Tenga en cuenta que configurar OpenSSL directamente puede resultar en 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 una conexión con el servidor HTTPS proxy.

Por defecto, se usa la parte de host de la URL de 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 especifica en una línea separada. 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 predeterminado.

Habilita los protocolos especificados para peticiones a 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 definido por la directiva 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 aparecen errores "SSL3_GET_FINISHED:digest check failed" en los registros, intente deshabilitar 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 usado 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 especificadas 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 búfer de respuestas de servidores proxy en archivos temporales. 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 integradas que pueden usarse para componer cabeceras con la directiva proxy_set_header:

$proxy_host#

nombre y puerto de un servidor proxy especificado en la directiva proxy_pass;

$proxy_port#

puerto de un 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 del cliente, la variable $proxy_add_x_forwarded_for es igual a la variable $remote_addr.