从 IIS 重写转换为 nginx

从 IIS 重写转换为 nginx

我需要将 IIS 重写规则转换为 NGinX 重写。我取得了一点进展,因为我不知道如何转换 IIS 规则的部分内容。这是我的 IIS 配置:

  • 匹配模式:^(.*)$
  • 重写 URL:index.html 并附加查询字符串
  • 条件:全部匹配
    • REQUEST_URI 与模式“/api(.*)$ 忽略大小写”不匹配
    • REQUEST_FILENAME 不是文件

到目前为止,我在 NGinX 上所做的是

location / {
    root   html;
    index  index.html index.htm;
    if ($request_uri !~ "/api(.*)$")
    {
      rewrite ^(.*)$ index.html
    }
}

我认为我必须使用变量 $request_filename,但是我不知道如何使用它来像在 IIS 上一样过滤文件并将其放入 AND 逻辑运算中的 if 条件中。

答案1

这是前端控制器模式的典型示例,其在 nginx 中的实现如下:

location / {
    try_files $uri $uri/ /index.html$is_args$args;
}

这将使 nginx 首先查找文件,如果未找到文件,则它会发送请求/index.html并附加可能的查询参数。

/api然后为您的URI指定不同的规则:

location /uri {
    ... API handling rules ...
}

如果没有更多信息,这就是我能写的最多答案。

相关内容