Допустим, у меня есть сервер 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;
}
Может быть, я хочу перенаправление? Допустим, я хочу обслуживать изображения, которые находятся на другом сервере, как мои (на моем домене).
решение1
Попробуй это:
location ~ /proxy/(http://.*) {
resolver 8.8.8.8;
proxy_pass http://$1$is_args$args;
}
Явное переписывание не требуется. $is_args
будет установлено в ?
, если строка запроса имеет аргументы, или пустую строку в противном случае, и $args
будет содержать параметры в запросе (за исключением ?
) или пустую строку, если параметров запроса не было. $1
будет соответствовать части URI, заключенной ( ... )
в регулярном выражении местоположения.