Digamos que tengo un servidor example.com
con 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=y
cuando GET example.com/proxy/http://www.google.pl/image.png?x=y
se 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_args
se establecerá en ?
si la línea de solicitud tiene argumentos, o una cadena vacía en caso contrario, y $args
contendrá los parámetros de la solicitud (excluyendo ?
) o una cadena vacía si no había parámetros de consulta. $1
coincidirá con la parte del URI incluida ( ... )
en la expresión regular de ubicación.