这只是另一个 apache 到 nginx 重写的问题

这只是另一个 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;

这可能完全不正确。我只是一个普通的 Web 开发人员,所以我想知道是否有人可以在这里帮忙。我将不胜感激。我明白我忽略了查询字符串规范,但我认为这不应该有关系。我对原始重写要完成的任务只有一个模糊的概念,因此尽管阅读了两个服务器的相关文档,但我并不希望在这里想出一些像样的东西。

答案1

尝试这个:

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

相关内容