URL de paso de proxy de Nginx desde obtener argumento

URL de paso de proxy de Nginx desde obtener argumento

Digamos que tengo un servidor example.comcon nginx.

Quiero crear un proxy que pase la URL proporcionada como parte del URI de solicitud o el parámetro GET (puede contener una cadena de consulta).

Entonces, por ejemplo, quiero que nginx se resuelva http://www.google.pl/image.png?x=ycuando GET example.com/proxy/http://www.google.pl/image.png?x=yse realiza la solicitud.

He probado algo como esto:

location /proxy {
    rewrite /proxy(.*) /$1 break;

  resolver 8.8.8.8;
  proxy_pass http://$arg_host/$arg_uri?$query_string;
}

¿Quizás quiero redirigir? Digamos que quiero publicar imágenes que están en un servidor diferente al mío (en mi dominio).

Respuesta1

Prueba esto:

location ~ /proxy/(http://.*) {
    resolver 8.8.8.8;
    proxy_pass http://$1$is_args$args;
}

No es necesaria una reescritura explícita. $is_argsse establecerá en ?si la línea de solicitud tiene argumentos, o una cadena vacía en caso contrario, y $argscontendrá los parámetros de la solicitud (excluyendo ?) o una cadena vacía si no había parámetros de consulta. $1coincidirá con la parte del URI incluida ( ... )en la expresión regular de ubicación.

información relacionada