Digamos que eu tenha um servidor example.com
com nginx.
Quero criar um proxy que passe o URL fornecido como parte do URI da solicitação ou do parâmetro GET (pode conter uma string de consulta).
Por exemplo, quero que o nginx resolva http://www.google.pl/image.png?x=y
quando GET example.com/proxy/http://www.google.pl/image.png?x=y
a solicitação for feita.
Eu tentei algo assim:
location /proxy {
rewrite /proxy(.*) /$1 break;
resolver 8.8.8.8;
proxy_pass http://$arg_host/$arg_uri?$query_string;
}
Talvez eu queira redirecionar? Digamos que eu queira veicular imagens que estão em servidores diferentes dos meus (no meu domínio).
Responder1
Experimente isto:
location ~ /proxy/(http://.*) {
resolver 8.8.8.8;
proxy_pass http://$1$is_args$args;
}
Nenhuma reescrita explícita é necessária. $is_args
será definido como ?
se a linha da solicitação tiver argumentos, ou uma string vazia caso contrário, e $args
conterá os parâmetros na solicitação (excluindo ?
) ou uma string vazia se não houver parâmetros de consulta. $1
corresponderá à parte do URI incluída ( ... )
no regex de localização.