Nginx proxy interceptar redireccionamiento y pasar redireccionamiento personalizado al cliente
Tengo una aplicación web que quiere acceder a archivos de un sitio de terceros sin CORS habilitado. Las solicitudes pueden ser a un dominio arbitrario con parámetros arbitrarios. Estoy enviando una solicitud a mi dominio que contiene el objetivo codificado como un parámetro GET, es decir.
GET https://www.example.com/proxy/?url=http%3A%2F%2Fnginx.org%2Fen%2Fdocs%2Fhttp%2Fngx_http_proxy_module.html
Entonces en Nginx hago
location /proxy/ {
resolver 8.8.8.8;
set_unescape_uri $dst $arg_url;
proxy_pass $dst;
}
Esto funciona para archivos individuales, pero el servidor de destino a veces devuelve un encabezado de ubicación, que quiero interceptar y modificar para que el cliente vuelva a intentarlo.
Básicamente me gustaría escapar de $ sent_http_location, agregarlo ahttps://www.example.com/proxy/?url= y devuélvelo al navegador para volver a intentarlo.
He intentado hacer
set_escape_uri $tmp $sent_http_location;
proxy_redirect $sent_http_header /pass/?v=$tmp;
Pero esto no funciona. También he intentado guardar el encabezado de ubicación y luego ignorar el encabezado entrante con
proxy_hide_header
y reemplazarlo con el mío
proxy_set_header
pero ignorarme hace que pierda la variable que la guarda.
¿Cómo puedo configurar Nginx para lograr este manejo de redireccionamientos para que pueda pasar una URL codificada que se devolverá al usuario cuando el sitio proxy redirige?