nginx переписать изменить параметр
Я пытаюсь создать прокси JSON/JSONP для внешнего API. Вот мой конфиг на данный момент:
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;
}
}
после этого шага я бы вставил 2-е оператор IF - и, если это сработает, первый, наконец,
как выглядит ваш URL с этими callback-параметрами?