Допустим, у меня есть сервер example.com
с nginx.
Я хочу создать прокси, который будет передавать URL-адрес, указанный как часть URI запроса или параметра GET (он может содержать строку запроса).
Так, например, Я хочу, чтобы nginx разрешил http://www.google.pl/image.png?x=y
когда GET example.com/proxy/http://www.google.pl/image.png?x=y
запрос сделан.
Я пробовал вот так:
location /proxy {
rewrite /proxy(.*) /$1 break;
resolver 8.8.8.8;
proxy_pass http://$arg_host/$arg_uri?$query_string;
}
Может я хочу перенаправить? Допустим, я хочу обслуживать изображения, которые находятся на другом сервере, поскольку они мои (в моем домене).
Попробуй это:
location ~ /proxy/(http://.*) {
resolver 8.8.8.8;
proxy_pass http://$1$is_args$args;
}
Никакого явного переписывания не требуется. $is_args
будет установлен на ?
если в строке запроса есть аргументы или пустая строка в противном случае, и $args
будет содержать параметры в запросе (исключая ?
) или пустую строку, если не было параметров запроса. $1
будет соответствовать части URI, заключенной в ( ... )
в регулярном выражении местоположения.