Proxy#
Permite reenviar solicitudes a otro servidor (proxy). 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 El parámetro 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 Nota Es necesario configurar la tabla de enrutamiento del kernel para interceptar el tráfico de red desde el servidor proxy. 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. Habilita o deshabilita el buffering de respuestas desde el servidor proxy. 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. 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 Predeterminado 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). Predeterminado 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. Predeterminado 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. 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 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 Aquí hay dos rutas de caché y un mapeo variable para distinguir entre ellas.
Si 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: La cabecera La cabecera La cabecera 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. Predeterminado 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. 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é: Puede usarse junto con la directiva proxy_no_cache. Predeterminado 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. Predeterminado http, server, location Define una clave para el almacenamiento en caché, por ejemplo: Por defecto, el valor de la directiva es cercano a la cadena: 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. Predeterminado 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. Predeterminado 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é. 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é. Predeterminado 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. Predeterminado http, server, location Define el número de solicitudes tras el cual la respuesta se almacenará en caché. Predeterminado — 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é. 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: Los nombres de archivo en caché tendrán este aspecto: 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. Define el directorio para archivos temporales Si este parámetro se omite o se establece al valor Los archivos temporales se colocarán directamente en el directorio de caché. 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 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 ( 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. 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, Nota Added in version 1.2.0: PRO En Angie PRO, puede especificar múltiples directivas proxy_cache_path con el mismo valor 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. valor umbral máximo para el tamaño de la caché valor umbral mínimo para el espacio libre en el sistema de archivos con la caché número máximo de elementos de caché a eliminar en una iteración Por defecto: limita la duración de una iteración Por defecto: configura una pausa entre iteraciones Por defecto: 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 número máximo de elementos de caché a cargar en una iteración Por defecto: limita la duración de una iteración Por defecto: configura una pausa entre iteraciones Por defecto: Nota Especificar el file para el parámetro Predeterminado http, server, location Habilita la revalidación de los elementos de caché expirados usando solicitudes condicionales con los campos de cabecera Predeterminado 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. permite usar una respuesta caducada de la caché si no puede seleccionarse un servidor proxy para procesar una solicitud. 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 La extensión stale-if-error del campo de cabecera 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. Define el tiempo de almacenamiento en caché para diferentes códigos de respuesta. Por ejemplo, las directivas 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é, entonces solo las respuestas 200, 301 y 302 se almacenan en caché. Además, se puede especificar el parámetro 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 Si la cabecera no incluye el campo Si la cabecera incluye el campo Si la cabecera incluye el campo El procesamiento de uno o más de estos campos de cabecera de respuesta puede deshabilitarse usando la directiva proxy_ignore_headers. Predeterminado 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. Predeterminado 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 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 Predeterminado http, server, location Habilita el soporte de rangos de bytes para respuestas cacheadas y no cacheadas desde el servidor proxy, independientemente del campo Predeterminado 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. Predeterminado 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. De forma predeterminada, Angie no pasa los campos de cabecera Predeterminado 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. Activa el modo especial de negociación Advertencia Habilita este modo solo para ejecutar pruebas especializadas que lo requieran explícitamente. Predeterminado 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. Predeterminado 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. Predeterminado http, server Define el tamaño del buffer usado para leer y escribir
flujos QUIC. Predeterminado 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. Desactiva el procesamiento de ciertos campos de cabecera de respuesta del servidor proxy. Los siguientes campos pueden ignorarse: Si no se desactiva, el procesamiento de estos campos de cabecera tiene los siguientes efectos: Predeterminado 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. Limita la velocidad de lectura de la respuesta del servidor proxy.
El rate se especifica en bytes por segundo y puede contener variables. 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. Predeterminado 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. 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. 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. Predeterminado http, server, location Especifica en qué casos una petición debe pasarse al siguiente servidor en el grupo upstream: ocurrió un error al establecer la conexión, al enviar la petición o al leer la cabecera de respuesta. ocurrió un tiempo de espera al establecer la conexión, al enviar la petición o al leer la cabecera de respuesta. el servidor devolvió una respuesta vacía o inválida. el servidor devolvió un código 500. el servidor devolvió un código 502. el servidor devolvió un código 503. el servidor devolvió un código 504. el servidor devolvió un código 403. el servidor devolvió un código 404. el servidor devolvió un código 429. normalmente, las solicitudes con métodos no idempotentes ( 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. siempre considerados intentos fallidos, aunque no estén en la directiva considerados intentos fallidos solo si están especificados en la directiva nunca considerados intentos fallidos El reenvío a otro servidor puede limitarse mediante el número de intentos y el tiempo. Predeterminado http, server, location Limita el tiempo durante el cual una petición puede reenviarse al siguiente servidor. desactiva esta limitación Predeterminado http, server, location Limita el número de intentos posibles de reenviar una petición al siguiente servidor. desactiva esta limitación 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: Puede usarse junto con la directiva proxy_cache_bypass. 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 o como una ruta de socket de dominio UNIX especificada tras la palabra 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 Si En algunos casos, la parte del URI de la petición a reemplazar no puede determinarse: Cuando En estos casos, Cuando el URI se modifica dentro de un 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 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. Permite pasar campos de cabecera deshabilitados de otro modo desde un servidor proxy a un cliente. Predeterminado http, server, location Indica si el cuerpo de la petición original se pasa al servidor proxy. Véase también las directivas proxy_set_header y proxy_pass_request_headers. Predeterminado http, server, location Indica si los campos de cabecera de la petición original se pasan al servidor proxy. Véase también las directivas proxy_set_header y proxy_pass_request_body. Predeterminado 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. Predeterminado http, server Establece el valor del parámetro de transporte Activa el envío de datos en
modo por lotes optimizado para QUIC usando
generic segmentation offload. 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. 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. Predeterminado 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: La directiva reescribirá esta cadena a: Se puede omitir el nombre del servidor en la cadena replacement: entonces se insertará el nombre del servidor principal y el puerto, si es diferente de 80. El reemplazo predeterminado especificado por el parámetro Advertencia El parámetro Una cadena replacement puede contener variables: Un redirect también puede contener variables: 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: Se pueden especificar varias directivas proxy_redirect en el mismo nivel: 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 Usando esta directiva, también es posible añadir nombres de host a las redirecciones relativas emitidas por un servidor proxy: Predeterminado http, server, location Habilita o deshabilita el buffering del cuerpo de la petición del cliente. se lee el cuerpo completo de la petición del cliente antes de enviar la petición al servidor proxy. 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. 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. 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. Permite redefinir el cuerpo de la petición pasado al servidor proxy. El valor puede contener texto, variables y su combinación. Predeterminado 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: Si el caching está habilitado, los campos de cabecera Un campo de cabecera "Host" sin cambios puede pasarse así: 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: Además, el nombre del servidor puede pasarse junto con el puerto del servidor proxy: Si el valor de un campo de cabecera es una cadena vacía, entonces este campo no se pasará a un servidor proxy: Predeterminado http, server, location Configura el comportamiento "TCP keepalive" para conexiones salientes a un servidor proxy. Por defecto, la configuración del sistema operativo está en efecto para el socket. La opción de socket SO_KEEPALIVE se activa para el socket. 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: Predeterminado http, server, location Define una caché que almacena certificados SSL y claves secretas especificados usando variables. La directiva admite los siguientes parámetros: Ejemplo: Especifica un archivo con la clave secreta en formato PEM usado para autenticación a un servidor HTTPS proxy. El valor 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: Predeterminado 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 Advertencia La directiva En LibreSSL, los cifrados TLS 1.3 sí pueden configurarse usando
En BoringSSL, los cifrados TLS 1.3 no pueden configurarse en absoluto. 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 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. Especifica un archivo con certificados revocados (CRL) en formato PEM usado para verificar el certificado del servidor HTTPS proxy. 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. Added in version 1.2.0. Habilita soporte del lado cliente para NTLS usando la librería TLS TongSuo. Nota Angie debe compilarse con el parámetro de configuración 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. Predeterminado http, server, location Distinto en la versión 1.2.0: Se añadió el parámetro Habilita los protocolos especificados para peticiones a un servidor HTTPS proxy. Predeterminado 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. Predeterminado 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. Especifica un archivo con certificados de CA de confianza en formato PEM usado para verificar el certificado del servidor HTTPS proxy. Habilita o deshabilita la verificación del certificado del servidor HTTPS proxy. Predeterminado http, server, location Define la profundidad de verificación en la cadena de certificados del servidor HTTPS proxy. Habilita el guardado de archivos en disco. guarda archivos según las rutas especificadas en las directivas alias o root prohíbe el guardado de archivos El nombre del archivo puede definirse explícitamente usando una cadena con variables: La fecha de modificación se establece según la cabecera de respuesta Esta directiva puede usarse para crear copias locales de archivos estáticos inmutables, por ejemplo: o así: Predeterminado http, server, location Define permisos de acceso para los archivos y directorios recién creados, por ejemplo: Si se especifican permisos de acceso Predeterminado 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. Predeterminado 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 un archivo temporal podría tener el siguiente aspecto: Consulte también el parámetro use_temp_path de la directiva proxy_cache_path. El módulo http_proxy admite variables integradas que pueden usarse para componer cabeceras con la directiva proxy_set_header: nombre y puerto de un servidor proxy especificado en la directiva proxy_pass; puerto de un servidor proxy especificado en la directiva proxy_pass, o el puerto por defecto del protocolo; el campo de cabecera de la petición de cliente 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#
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.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;
transparent
, los procesos worker heredan la capacidad CAP_NET_RAW del proceso maestro.proxy_buffer_size#
proxy_buffering#
on
off
X-Accel-Buffering
. Esta capacidad puede deshabilitarse mediante la directiva proxy_ignore_headers.proxy_buffers#
proxy_buffers
number size;proxy_buffers 8 4k | 8k;
proxy_busy_buffers_size#
proxy_busy_buffers_size
size;proxy_busy_buffers_size 8k | 16k;
proxy_cache#
proxy_cache
zone | off
[path=
path];proxy_cache off;
off
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=
pathContent-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;
}
}
Content-Type
empieza con text/
, se elegirá la primera ruta;
de lo contrario, la segunda.X-Accel-Expires
(máxima prioridad).Cache-Control
con los parámetros max-age
o s-maxage
.Expires
.proxy_cache_background_update#
proxy_cache_background_update
on
| off
;proxy_cache_background_update off;
proxy_cache_bypass#
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
proxy_cache_convert_head#
proxy_cache_convert_head
on
| off
;proxy_cache_convert_head on;
proxy_cache_key#
proxy_cache_key
string;proxy_cache_key $scheme$proxy_host$request_uri;
proxy_cache_key "$host$request_uri $cookie_user";
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
proxy_cache_lock#
proxy_cache_lock_age#
proxy_cache_lock_age
time;proxy_cache_lock_age 5s;
proxy_cache_lock_timeout#
proxy_cache_lock_timeout
time;proxy_cache_lock_timeout 5s;
proxy_cache_max_range_offset#
proxy_cache_methods#
proxy_cache_methods
GET
| HEAD
| POST
...;proxy_cache_methods GET HEAD;
proxy_cache_min_uses#
proxy_cache_min_uses
number;proxy_cache_min_uses 1;
proxy_cache_path#
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];levels
proxy_cache_path /data/angie/cache levels=1:2 keys_zone=one:10m;
/data/angie/cache/c/29/b7f54b2df7773722d382f4809d65029c
use_temp_path=on
| off
on
on
, se usará el directorio establecido por la directiva proxy_temp_path para la ubicación dada.off
keys_zone
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é.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.inactive
inactive
es 10 minutos.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.max_size
min_free
manager_files
100
.manager_threshold
200
milisegundos.manager_sleep
50
milisegundos.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
100
loader_threshold
200
milisegundosloader_sleep
50
milisegundoskeys_zone
no afecta al funcionamiento del cargador de caché.proxy_cache_revalidate#
proxy_cache_revalidate
on
| off
;proxy_cache_revalidate off;
If-Modified-Since
y If-None-Match
.proxy_cache_use_stale#
proxy_cache_use_stale
error
| timeout
| invalid_header
| updating
| http_500
| http_502
| http_503
| http_504
| http_403
| http_404
| http_429
| off
...;proxy_cache_use_stale off;
error
updating
Cache-Control
permite usar una respuesta caducada de la caché si se está actualizando en ese momento.Cache-Control
permite usar una respuesta caducada de la caché en caso de error.proxy_cache_valid#
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid 5m;
any
para cachear cualquier respuesta:proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
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é.X-Accel-Expires
, los parámetros de caché pueden establecerse en los campos de cabecera Expires
o Cache-Control
.Set-Cookie
, esa respuesta no se almacenará en caché.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.proxy_connect_timeout#
proxy_connect_timeout
time;proxy_connect_timeout 60s;
proxy_connection_drop#
proxy_connection_drop
time | on
| off
;proxy_connection_drop off;
DELETE
.on
establecido, las conexiones se descartan inmediatamente.proxy_force_ranges#
proxy_force_ranges
on
| off
;proxy_force_ranges off;
Accept-Ranges
en dichas respuestas.proxy_headers_hash_bucket_size#
proxy_headers_hash_bucket_size
size;proxy_headers_hash_bucket_size 64;
proxy_headers_hash_max_size#
proxy_headers_hash_max_size
size;proxy_headers_hash_max_size 512;
proxy_hide_header#
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#
proxy_http_version
1.0
| 1.1
| 3
;proxy_http_version 1.0;
proxy_http3_hq#
hq-interop
,
que se usa para
pruebas de interoperabilidad QUIC
marten-seemann/quic-interop-runner
en las que se basa Angie.proxy_http3_max_concurrent_streams#
proxy_http3_max_concurrent_streams
number;proxy_http3_max_concurrent_streams 128;
proxy_http3_max_table_capacity#
proxy_http3_max_table_capacity
number;proxy_http3_max_table_capacity 4096;
proxy_http3_stream_buffer_size#
proxy_http3_stream_buffer_size
size;proxy_http3_stream_buffer_size 64k;
proxy_ignore_client_abort#
proxy_ignore_client_abort
on
| off
;proxy_ignore_client_abort off;
proxy_ignore_headers#
X-Accel-Redirect
, X-Accel-Expires
, X-Accel-Limit-Rate
, X-Accel-Buffering
, X-Accel-Charset
, Expires
, Cache-Control
, Set-Cookie
y Vary
.X-Accel-Expires
, Expires
, Cache-Control
, Set-Cookie
y Vary
establecen los parámetros del caché de respuesta;X-Accel-Redirect
realiza una redirección interna a la URI especificada;X-Accel-Limit-Rate
establece el límite de velocidad para la transmisión de una respuesta al cliente;X-Accel-Buffering
habilita o deshabilita el almacenamiento en búfer de una respuesta;X-Accel-Charset
establece el charset deseado de una respuesta.proxy_intercept_errors#
proxy_intercept_errors
on
| off
;proxy_intercept_errors off;
proxy_limit_rate#
0
proxy_max_temp_file_size#
proxy_max_temp_file_size
size;proxy_max_temp_file_size 1024m;
0
proxy_method#
proxy_next_upstream#
proxy_next_upstream
error
| timeout
| invalid_header
| http_500
| http_502
| http_503
| http_504
| http_403
| http_404
| http_429
| non_idempotent
| off
...;proxy_next_upstream error timeout;
error
timeout
invalid_header
http_500
http_502
http_503
http_504
http_403
http_404
http_429
non_idempotent
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
error
timeout
invalid_header
http_500
http_502
http_503
http_504
http_429
http_403
http_404
proxy_next_upstream_timeout#
proxy_next_upstream_timeout
time;proxy_next_upstream_timeout 0;
0
proxy_next_upstream_tries#
proxy_next_upstream_tries
number;proxy_next_upstream_tries 0;
0
proxy_no_cache#
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma $http_authorization;
proxy_pass#
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/;
unix
y encerrada entre dos puntos:proxy_pass http://unix:/tmp/backend.socket:/uri/;
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/;
}
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;
}
location
se especifica usando una expresión regular, y también dentro de un location
con nombre.proxy_pass
debe especificarse sin un URI.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;
}
proxy_pass
:location /name/ {
proxy_pass http://127.0.0.1$request_uri;
}
proxy_pass_header#
proxy_pass_request_body#
proxy_pass_request_body
on
| off
;proxy_pass_request_body on;
location /x-accel-redirect-here/ {
proxy_method GET;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_pass ...;
}
proxy_pass_request_headers#
proxy_pass_request_headers
on
| off
;proxy_pass_request_headers on;
location /x-accel-redirect-here/ {
proxy_method GET;
proxy_pass_request_headers off;
proxy_pass_request_body off;
proxy_pass ...;
}
proxy_pass_trailers#
proxy_pass_trailers
on
| off
;proxy_pass_trailers off;
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#
proxy_quic_active_connection_id_limit
number;proxy_quic_active_connection_id_limit 2;
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#
proxy_quic_host_key#
proxy_read_timeout#
proxy_redirect#
proxy_redirect
default
;proxy_redirect
off
;proxy_redirect
redirect replacement;proxy_redirect default;
Location: http://localhost:8000/two/some/uri/
proxy_redirect http://localhost:8000/two/ http://frontend/one/;
Location: http://frontend/one/some/uri/
proxy_redirect http://localhost:8000/two/ /;
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/;
}
default
no está permitido si proxy_pass se especifica usando variables.proxy_redirect http://localhost:8000/ http://$host:$server_port/;
proxy_redirect http://$proxy_host:8000/ /;
proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
proxy_redirect ~*/user/([^/]+)/(.+)$ http://$1.example.com/$2;
proxy_redirect default;
proxy_redirect http://localhost:8000/ /;
proxy_redirect http://www.example.com/ /;
off
cancela el efecto de las directivas proxy_redirect heredadas del nivel de configuración anterior.proxy_redirect / /;
proxy_request_buffering#
proxy_request_buffering
on
| off
;proxy_request_buffering on;
on
off
proxy_send_lowat#
proxy_send_timeout#
proxy_set_body#
proxy_set_header#
proxy_set_header
field value;proxy_set_header Host $proxy_host;
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
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.proxy_set_header Host $http_host;
proxy_set_header Host $host;
proxy_set_header Host $host:$proxy_port;
proxy_set_header Accept-Encoding "";
proxy_socket_keepalive#
proxy_socket_keepalive
on
| off
;proxy_socket_keepalive off;
off
on
proxy_ssl_certificate#
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#
proxy_ssl_certificate_cache
off
;proxy_ssl_certificate_cache
max=
N [inactive=
time] [valid=
time];proxy_ssl_certificate_cache off;
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é.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#
engine:`name`:id
puede especificarse en lugar del archivo, lo cual carga una clave secreta con un id especificado desde el motor OpenSSL name.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#
proxy_ssl_ciphers
ciphers;proxy_ssl_ciphers DEFAULT;
openssl ciphers
.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.proxy_ssl_ciphers
.proxy_ssl_conf_command#
ciphersuites
.proxy_ssl_crl#
proxy_ssl_name#
proxy_ssl_ntls#
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;
}
--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#
proxy_ssl_protocols#
proxy_ssl_protocols
[SSLv2
] [SSLv3
] [TLSv1
] [TLSv1.1
] [TLSv1.2
] [TLSv1.3
];proxy_ssl_protocols TLSv1.2 TLSv1.3;
TLSv1.3
al conjunto predeterminado.proxy_ssl_server_name#
proxy_ssl_server_name
on
| off
;proxy_ssl_server_name off;
proxy_ssl_session_reuse#
proxy_ssl_session_reuse
on
| off
;proxy_ssl_session_reuse on;
proxy_ssl_trusted_certificate#
proxy_ssl_verify#
proxy_ssl_verify_depth#
proxy_ssl_verify_depth
number;proxy_ssl_verify_depth 1;
proxy_store#
on
off
proxy_store /data/www$original_uri;
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.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/;
}
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#
proxy_store_access
users:permissions ...;proxy_store_access user:rw;
proxy_store_access user:rw group:rw all:r;
group
o all
, los permisos de usuario pueden omitirse:proxy_store_access group:rw all:r;
proxy_temp_file_write_size#
proxy_temp_file_write_size
size;proxy_temp_file_write_size 8k|16k;
proxy_temp_path#
proxy_temp_path
path [level1 [level2 [level3]]]`;proxy_temp_path proxy_temp;
(la ruta depende de la opción de compilación --http-proxy-temp-path
)proxy_temp_path /spool/angie/proxy_temp 1 2;
/spool/angie/proxy_temp/7/45/00000123457
Variables integradas#
$proxy_host
#$proxy_port
#$proxy_add_x_forwarded_for
#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.