Proxy#
Permite hacer proxy de flujos de datos sobre TCP, UDP y sockets de dominio UNIX. Hace que las conexiones salientes a un servidor proxy se originen desde la dirección IP local especificada. El valor del parámetro puede contener variables. El valor especial El parámetro Para que este parámetro funcione,
los procesos worker de Angie normalmente deben ejecutarse
con privilegios de superusuario.
En Linux no es necesario:
si se especifica el parámetro Nota También debe configurarse la tabla de enrutamiento del kernel
para interceptar el tráfico de red desde el servidor proxy. Establece el tamaño del buffer usado para leer datos desde el servidor proxy. También establece el tamaño del buffer usado para leer datos desde el cliente. Define un tiempo de espera para establecer una conexión con un servidor proxy. Predeterminado stream, server Habilita la finalización de todas las sesiones hacia el servidor proxy después de que haya sido eliminado del grupo o marcado como permanentemente no disponible por un proceso reresolve o por el comando API Una sesión se termina cuando se procesa el siguiente evento de lectura o escritura tanto para el cliente como para el servidor proxy. Configurar tiempo habilita un tiempo de espera de finalización de sesión;
con Limita la velocidad de lectura de datos desde el servidor proxy. La desactiva la limitación de velocidad Nota El límite se establece por conexión, por lo que si Angie abre dos conexiones simultáneamente al servidor proxy, la velocidad total será el doble del límite especificado. El valor del parámetro puede contener variables. Puede resultar útil en casos donde la velocidad deba limitarse según una condición determinada: Habilita o deshabilita el cierre independiente de cada dirección de una conexión TCP ("TCP half-close"). Si está habilitado, el proxy sobre TCP se mantendrá hasta que ambas partes cierren la conexión. Cuando no se puede establecer una conexión con el servidor proxy, determina si la conexión del cliente se pasará al siguiente servidor en el grupo upstream. El paso de una conexión al siguiente servidor puede limitarse mediante el número de intentos y por tiempo. Predeterminado stream, server Limita el tiempo permitido para pasar una conexión al siguiente servidor. desactiva esta limitación Predeterminado stream, server Limita el número de intentos posibles para pasar una conexión al siguiente servidor. desactiva esta limitación Establece la dirección de un servidor proxy. La o como una ruta de socket de dominio UNIX: Si un nombre de dominio se resuelve en varias direcciones, todas se usarán en modo round-robin. Además, una dirección puede especificarse como un grupo de servidores. La dirección también puede especificarse usando variables: En este caso, el nombre del servidor se busca entre los grupos de servidores descritos y, si no se encuentra, se determina usando un resolver. Habilita el protocolo PROXY para conexiones a un servidor proxy. Establece el número de datagramas de cliente a partir del cual se elimina la asociación entre un cliente y una sesión de flujo UDP existente. Después de recibir el número especificado de datagramas, el siguiente datagrama del mismo cliente inicia una nueva sesión.
La sesión termina cuando todos los datagramas del cliente se transmiten a un servidor proxy y se recibe el número esperado de respuestas, o cuando se alcanza un timeout. Establece el número de datagramas esperados desde el servidor proxy en respuesta a un datagrama de cliente si se usa el protocolo UDP.
El número sirve como pista para finalizar la sesión. De manera predeterminada, el número de datagramas no está limitado. Si se especifica el valor cero, no se espera respuesta. Sin embargo, si se recibe una respuesta y la sesión aún no ha terminado, la respuesta será procesada. Predeterminado stream, server Configura el comportamiento de "TCP keepalive" para conexiones salientes a un servidor proxy. Por defecto, se aplican los ajustes del sistema operativo para el socket. La opción de socket SO_KEEPALIVE está activada para el socket. Habilita el protocolo SSL/TLS para conexiones a un servidor proxy. Especifica un archivo con el certificado en formato PEM usado para la autenticación con un servidor 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: Especifica un archivo con la clave privada en formato PEM usado para la autenticación con un servidor 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: Especifica las cifras habilitadas para las solicitudes a un servidor proxy. Las cifras se especifican en el formato reconocido por la biblioteca OpenSSL. La lista de cifras depende de la versión de OpenSSL instalada.
La lista completa puede visualizarse usando el comando Advertencia La directiva En LibreSSL, las cifras TLS 1.3 pueden configurarse usando
En BoringSSL, las cifras TLS 1.3 no pueden configurarse. Establece comandos de configuración arbitrarios de OpenSSL al establecer una conexión con el servidor proxy. Nota La directiva es compatible cuando se utiliza OpenSSL 1.0.2 o superior.
Para configurar las cifras 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 se definen directivas proxy_ssl_conf_command en el nivel actual. Advertencia Tenga en cuenta que configurar OpenSSL directamente puede provocar un comportamiento inesperado. Especifica un archivo con certificados revocados (CRL) en formato PEM usado para verificar el certificado del servidor proxy. Predeterminado stream, server Permite sobrescribir el nombre de servidor usado para verificar el certificado del servidor proxy y para ser enviado a través de SNI al establecer una conexión con el servidor proxy.
El nombre del servidor también puede especificarse usando variables. Por defecto, se utiliza el nombre de host de la dirección especificada en la directiva proxy_pass. Added in version 1.2.0. Habilita el soporte del lado cliente para NTLS al usar la biblioteca TLS TongSuo. Nota Angie debe compilarse usando el parámetro de configuración Especifica un archivo con contraseñas para claves privadas donde cada contraseña se indica en una línea separada.
Las contraseñas se prueban en orden al cargar la clave. Predeterminado stream, server Distinto en la versión 1.2.0: El parámetro Habilita los protocolos especificados para las solicitudes a un servidor proxy. Predeterminado stream, server Habilita o deshabilita el envío del nombre de servidor
especificado por la directiva proxy_ssl_name
a través de la extensión TLS
Server Name Indication
(SNI,
RFC 6066)
al establecer una conexión con el servidor proxy. Predeterminado stream, server Determina si las sesiones SSL pueden reutilizarse al trabajar con el servidor proxy.
Si en los registros aparecen errores "SSL3_GET_FINISHED:digest check failed", pruebe a desactivar la reutilización de sesiones. Especifica un archivo con certificados de CA confiables en formato PEM usado para verificar el certificado del servidor proxy. Habilita o deshabilita la verificación del certificado del servidor proxy. Establece la profundidad de verificación en la cadena de certificados del servidor proxy. Establece un tiempo de espera entre dos operaciones consecutivas de lectura o escritura en conexiones del cliente o del servidor proxy.
Si no se transmite ningún dato durante este tiempo, la conexión se cierra. Added in version 1.4.0: PRO Establece el tiempo máximo de inactividad para una conexión establecida con el servidor para comprobaciones de estado configuradas mediante la directiva upstream_probe (PRO); si se supera este límite, la conexión se cerrará. Limita la velocidad de lectura de datos desde el cliente.
La tasa se especifica en bytes por segundo. desactiva la limitación de velocidad Nota El límite se establece por conexión, por lo que si el cliente abre simultáneamente dos conexiones, la velocidad total será el doble del límite especificado. El valor del parámetro puede contener variables.
Esto puede ser útil en casos donde la tasa deba limitarse en función de una condición específica:Ejemplo de Configuración#
server {
listen 127.0.0.1:12345;
proxy_pass 127.0.0.1:8080;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:12345;
}
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns.example.com:53;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
Directivas#
proxy_bind#
off
cancela el efecto de la directiva proxy_bind heredada del nivel de configuración anterior, lo que permite que el sistema asigne automáticamente la dirección IP local.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_connect_timeout#
proxy_connection_drop#
proxy_connection_drop
tiempo | on
| off
;proxy_connection_drop off;
DELETE
.on
, las sesiones se cierran inmediatamente.proxy_download_rate#
velocidad
se especifica en bytes por segundo.0
map $slow $rate {
1 4k;
2 8k;
}
proxy_download_rate $rate;
proxy_half_close#
proxy_next_upstream#
proxy_next_upstream_timeout#
proxy_next_upstream_timeout
tiempo;proxy_next_upstream_timeout 0;
0
proxy_next_upstream_tries#
proxy_next_upstream_tries
número;proxy_next_upstream_tries 0;
0
proxy_pass#
dirección
puede especificarse como un nombre de dominio o dirección IP, y un puerto:proxy_pass localhost:12345;
proxy_pass unix:/tmp/stream.socket;
proxy_pass $upstream;
proxy_protocol#
proxy_requests#
proxy_responses#
proxy_socket_keepalive#
proxy_socket_keepalive
on
| off
;proxy_socket_keepalive off;
off
on
proxy_ssl#
proxy_ssl_certificate#
server {
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 backend:12345;
}
proxy_ssl_certificate_key#
server {
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 backend:12345;
}
proxy_ssl_ciphers#
openssl ciphers
.proxy_ssl_ciphers
no configura cifras para TLS 1.3 cuando
se usa OpenSSL. Para configurar cifras TLS 1.3 con OpenSSL, use la directiva
proxy_ssl_conf_command, que se añadió para la configuración avanzada
de SSL.proxy_ssl_ciphers
.proxy_ssl_conf_command#
ciphersuites
.proxy_ssl_crl#
proxy_ssl_name#
proxy_ssl_name
nombre;proxy_ssl_name
host de proxy_pass
;proxy_ssl_ntls#
server {
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 backend:12345;
}
--with-ntls
, con la biblioteca 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
se añadió 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_timeout#
upstream_probe_timeout (PRO)#
proxy_upload_rate#
0
map $slow $rate {
1 4k;
2 8k;
}
proxy_upload_rate $rate;