Nginx 프록시는 인수 가져오기에서 URL을 전달합니다.

Nginx 프록시는 인수 가져오기에서 URL을 전달합니다.

nginx가 있는 서버가 있다고 가정해 보겠습니다 example.com.

요청 URI 또는 ​​GET 매개변수(쿼리 문자열이 포함될 수 있음)의 일부로 제공된 URL을 프록시 전달하는 프록시를 만들고 싶습니다.

예를 들어 요청이 있을 http://www.google.pl/image.png?x=y때 nginx가 해결하기를 원합니다 .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설정되고 , 그렇지 않으면 빈 문자열로 설정되며, 요청의 매개변수( 제외 )를 포함하거나 쿼리 매개변수가 없는 경우 빈 문자열을 포함합니다. 위치 정규식에 포함된 URI 부분과 일치합니다 .?$args?$1( ... )

관련 정보