nginx重写修改参数

我正在尝试为外部API创buildJSON / JSONP代理。 这是我的configuration到目前为止:

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之前,我必须去掉callback参数,因为如果请求包含无法识别的选项,它将返回一个错误。 在传递请求之前,如何将callback参数从请求中除去(如果存在),但是仍然使用它来创buildJSONP?

你读过如果是邪恶 ?

它仍然只返回没有包装的JSON。

这是什么包装给你? 第一/第二还是两者?

编辑:

我会做简单的debugging来testing,如果你的正则expression式是有效的(增加日志级别,看看发生了什么)(解决scheme未经testing)

 server { listen 80; server_name api.example.com; location /api/ { rewrite ^/(.*)callback=[^&]*(.*)$ /testurl/$1/$2 last; } location /testurl { return 200; } } 

在这一步之后,我会放入第二个IF语句,如果这个语句有效的话,那么最后一个语句

你的url如何看起来像callback参数?