Nginx条件中的或、与
在公司的编程马拉松中前端项目部署在NG
的镜像中,其中有个需求是通过浏览器访问时,若请求是前端资源则返回前端页面,如果请求的是后端接口则返回后端响应。如:浏览器访问 http://abc.com/apis/name 时,有可能是前端页面路径,也有可能为后端接口路径。通过NG的条件判断可以实现此需求。
正则匹配
符号 | 描述 |
---|---|
= | 字符串比较相等 |
!= | 字符串比较不相等 |
~ | 符合指定正则表达式时返回true (匹配时区分大小写) |
~* | 符合指定正则表达式时返回true (匹配时不区分大小写) |
!~ | 不符合指定正则表达式时返回true (匹配时区分大小写) |
!~* | 不符合指定正则表达式时返回true (匹配时不区分大小写) |
NG
中的表达式和大多数语言一样
1 | if (<condition1>) { |
- 不支持多条件表达式
- 不支持嵌套
- 不支持else
在NG的条件表达式中没有表达式没有直接”或“、“与”的语法,需要存储变量的状态
来实现“或”、“与”的效果。
或
场景一
1 | # 设置flag的初始值 |
上述条件表达式类似Java
中的
1 | if (<condition1> || <condition2>) { |
场景二
在判断变量值时,可以直接用|
判断
1 | # 请求方式为GET、POST、PUT、DELETE其中一种 |
与
1 | # 设置flag的初始值 |
条件组合
1 | # 设置flag的初始值 |
flag初始值为空值,若想执行do something逻辑。
- 或:condition0、condition1只需满足一项;
- 与:condition2、condition3需要同时满足;
例
回到文章描述的需求,可以做如下配置即可实现:当请求前端域名时,满足一定条件直接负载到后端接口获取响应。
1 | location / { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 彩虹马的博客!
评论