将 3 个重定向规则转换为一个

Convert 3 redirect rules into one

代理应用程序在 nginx.conf 的位置块中使用一些正则表达式代理其他应用程序。例如,一个名为 proxy-signup-app.

的注册应用程序

这可行,但它有 3 个位置块:

location ~* ^/signup/(.*)/$ {
  proxy_pass https://proxy-signup-app.herokuapp.com/?proxy_regex=;
}
location ~* ^/signup/(.*)$ {
  proxy_pass https://proxy-signup-app.herokuapp.com/?proxy_regex=;
}
location ~* ^/signup$ {
  proxy_pass https://proxy-signup-app.herokuapp.com/?proxy_regex=;
} 

应该代理

  1. /signup
  2. /signup/
  3. /signup/rainyday
  4. /signup/rainyday/

代理应用程序将在 proxy_regex 接收的位置:

  1. $1 = ''
  2. $1 = ''
  3. 1 美元 = 'rainyday'
  4. $1 = 'rainyday'(不是 /rainyday/rainyday//rainyday

它不应该重定向

如何将这些位置块合并为一个?

不确定这是否是最好的方法,但应该可行

location ~* ^/signup(/(.*?)/?|)$ {
  proxy_pass https://proxy-signup-app.herokuapp.com/?proxy_regex=;
}