Nginx

從 IIS 重寫轉換為 nginx

  • July 30, 2018

我需要將 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 條件中。

這是前端控制器模式的典型案例,在 nginx 中實現如下:

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

這將使 nginx 首先查找文件,如果找不到文件,則將請求發送到/index.html並附加可能的查詢參數。

/api然後為URI指定不同的規則:

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

沒有更多資訊,這是我能寫的最多的答案。

引用自:https://serverfault.com/questions/923660