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

时间:2015-02-02 09:21:01

标签: nginx

代理应用代理其他应用,nginx.conf的位置块中有一些正则表达式。例如,对于名为proxy-signup-app的注册应用。

这有效,但它有3个位置块:

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

它应该代理

  1. /signup
  2. /signup/
  3. /signup/rainyday
  4. /signup/rainyday/
  5. 代理应用程序将在proxy_regex上收到:

    1. $ 1 =''
    2. $ 1 =''
    3. $ 1 ='rainyday'
    4. $ 1 ='rainyday'(不是/rainyday/rainyday//rainyday
    5. 不应重定向

      • /signups

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

1 个答案:

答案 0 :(得分:0)

不确定这是否是最佳方式,但它应该有效

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