nginx 수정 매개변수 다시 쓰기

nginx 수정 매개변수 다시 쓰기

외부 API용 JSON/JSONP 프록시를 생성하려고 합니다. 지금까지 내 구성은 다음과 같습니다.

server {
        listen          80;
        server_name     api.example.com;
        location /api/ {
                if ( $arg_callback ) {
                        echo_before_body '$arg_callback(';
                        echo_after_body ');';
                }
                if ($args ~ (.*)callback=[^&]*(.*)) {
                        set $args $1$2;
                }
                proxy_pass      http://api.external.com;
                rewrite ^/api/(.*)$ /external/api/$1?api_key=MY_KEY$is_args$args break;
        }
}

프록시는 매개변수 없이도 잘 작동하며 callback유효한 JSON을 반환합니다. 그러나 를 포함하면 callback콜백을 래핑하지 않고 여전히 JSON만 반환합니다. callback요청에 인식할 수 없는 옵션이 포함되어 있으면 오류를 반환하기 때문에 외부 API를 호출하기 전에 매개변수를 제거해야 합니다 . 요청을 전달하기 전에 요청에서 콜백 매개변수를 제거하지만(존재하는 경우) JSONP를 생성하는 데 계속 사용하려면 어떻게 해야 합니까?

답변1

읽어 봤니만약에 악하다?

래퍼 없이 여전히 JSON만 반환합니다.

여기 포장지는 무엇입니까? 첫 번째/두 번째 경우 또는 둘 다?

편집하다:

정규식이 유효한지 테스트하기 위해 간단한 디버깅을 수행하겠습니다(무슨 일이 일어나고 있는지 확인하려면 로그 수준을 높이세요)(솔루션은 테스트되지 않았습니다).

server {
        listen          80;
        server_name     api.example.com;
        location /api/ {


                rewrite ^/(.*)callback=[^&]*(.*)$ /testurl/$1/$2 last;  
        }

        location /testurl  {
           return 200;
        }


}

이 단계 후에 두 번째 IF - 문을 삽입하고 이것이 작동하면 마침내 첫 번째 문이 됩니다.

해당 콜백 매개변수를 사용하면 URL이 어떻게 생겼나요?

관련 정보