线上有个老系统要下线,发现有个老的接口还有人在用。其实之前这个接口也只是根据URL中的target参数进行一个跳转。这个直接在nginx里面做也是比较简单的,直接从$arg_target里把匹配的目标地址(包括参数)都提取出来,然后放到rewrite里面就OK。因为对应的参数实际已经被匹配下来了(只有GET请求,没有POST的),所以rewrite语句里面加了一个‘?“避免自动把之前的$args加到后面。
location =/redir.do {
root /home/nginx/webpages/;
set $to_url 'www.xxx.net';
if ( $arg_target ~* 'https?://(.*)' ) {
set $to_url $1;
}
if ( $arg_target ~* 'https?%2F(.*)' ) {
set $to_url $1;
}
rewrite ^ http://$to_url? break;
}