Linux

使用 Nginx 規則將現有 API 請求重定向到新的 API 格式

  • October 16, 2019

Q1:我有一個在 sub1 子域上使用格式*https://sub1.domain.com/whatever?tes* ​​t=yes的現有 API ,但現在我想切換到 sub2 子域和*https://sub2之類的格式.domain.com/v2/page/embed?new=1*

舊的請求應該仍然有效,但會被“轉發”或“重定向”到新的請求格式和不同的子域。理想情況下,這將無縫發生(透明地在幕後)並且不需要 cURL 跟隨重定向,除非它是不可避免的。

Q2:或者,我可以妥協於使用相同的格式回復對https://sub1.domain.com/whatever?tes ​​t=yes 的 API 請求,但“轉發”或“重定向”到新的子域,例如https://sub2 .domain.com/whatever?tes​​t=yes

關鍵是 25,000 多名使用舊格式的使用者不必更新他們的程式碼以最終從 sub2 上的新伺服器獲得服務,並且最好使用新格式(無需維護兩組 API 參數)。

感謝您對此的支持。謝謝!

更新:

我可以自己找到答案。這將對將來的某人有所幫助。

對於第一季度:

location / {

  if ($arg_test ~* yes) {

      return 301 https://sub2.domain.com/v2/page/embed?new=1;

  }

}

對於第二季度:

location / {

  if ($arg_test ~* yes) {

      rewrite ^(.*)$ https://sub2.domain.com$1;

  }

}

我可以自己找到答案。這將對將來的某人有所幫助。

對於第一季度:

location / {

  if ($arg_test ~* yes) {

      return 301 https://sub2.domain.com/v2/page/embed?new=1;

  }

}

對於第二季度:

location / {

  if ($arg_test ~* yes) {

      rewrite ^(.*)$ https://sub2.domain.com$1;

  }

}

您可以使用:

server {
# Permanent redirect to an individual page
rewrite ^/oldpage$ newpage permanent;
}

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