O proxy Nginx passa o URL do argumento get

O proxy Nginx passa o URL do argumento get

Digamos que eu tenha um servidor example.comcom 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=yquando GET example.com/proxy/http://www.google.pl/image.png?x=ya 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_argsserá definido como ?se a linha da solicitação tiver argumentos, ou uma string vazia caso contrário, e $argsconterá os parâmetros na solicitação (excluindo ?) ou uma string vazia se não houver parâmetros de consulta. $1corresponderá à parte do URI incluída ( ... )no regex de localização.

informação relacionada