只是另一个Apache的Nginx重写问题

我有以下的Apache重写指令:

RewriteCond %{REQUEST_URI} ^/proxy(/|$) [NC] RewriteCond %{QUERY_STRING} (^|&)uri=(.*?)(&|$) [NC] RewriteRule .* /api/vs1.0/%2 [NC,L] 

而我正在尝试nginx,所以试图将重写转移。 我想出了…

 rewrite ^/proxy(/|$) /api/vs1.0/$2 last; rewrite (^|&)uri=(.*?)(&|$) /api/vs1.0/$2 last; 

这可能是非常不正确的。 我只是一个纯粹的networking开发者,所以我想知道是否有人可以在这里伸出援助之手。 我会非常感激。 我看到我忽略了查询string规范,但是我认为这不应该有问题。 我只是对原来的重写是完成了一个模糊的概念,所以我没有太多的希望在这里提出一些体面的,尽pipe读了两个服务器的相关文件。

尝试这个:

 location ~* ^/proxy(/|$) { if ($args ~* "(^|&)uri=(.*?)(&|$)") { set $arg_uri $2; rewrite .* /api/vs1.0/$arg_uri last; } } 
  • ~* :用于不区分大小写的匹配
  • $args :请求中的GET参数