Скажем, у меня есть сервер example.com
с nginx.
Я хочу сделать прокси, который проксирует URL передачи, данный как часть запроса URI, или ПОЛУЧИТ параметр (это может содержать строку запроса).
Так, например, Я хочу, чтобы nginx решил http://www.google.pl/image.png?x=y
когда GET example.com/proxy/http://www.google.pl/image.png?x=y
запрос выполнен.
Я попробовал sth как это:
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, приложенной в ( ... )
в регексе местоположения.