作用域
如果你愿意帮助hiproxy编写文档,请联系zdying@live.com, 谢谢!
If you are willing to help hiproxy to write documentation, please contact zdying@live.com, thank you!
代码块
hiproxy的代码块,分为三类:
- 全局块 :所有的配置文件中不在其他块的代码,都在全局块中;
- domain块 :位于全局块中;
- location块 :位于domain块中;
作用域
hiproxy 配置文件中涉及到的作用域有5种:
- 全局作用域 : 全局块 对应的作用域。这里的变量可以在任何地方访问到;
- domain作用域 : domain块 对应的作用域。
- location作用域 : location块 对应的作用域。
- request作用域 :隐式作用域,不对应具体的代码块,这些作用域中的指令,可以分布在任何代码块中。
- response作用域 :隐式作用域,不对应具体的代码块,这些作用域中的指令,可以分布在任何代码块中。
代码块层级关系
global |- domain |- location |- location |- ... |- domain |- location |- location |- ...
变量查找
当前作用域中查找变量的规则为:
- 如果当前作用域有这个变量, 返回 这个变量的值。
- 查找上一级作用域,如果上一级作用域中有这个变量, 返回 这个变量的值。
- 否则,如果上一级作用域是全局作用域, 返回 变量名称(包括
$符号)。 - 重复步骤 [2-3] 。
指令执行
代码块中的指令在对应的时机(request/response)会自动执行,此外,还会执行上一级代码块中的指令,比如:
www1.test.com => { # 1 proxy_set_header Host www.test.com; location / { # 2 proxy_pass http://52.88.88.88/; } location /index.html { # 3 proxy_pass http://127.0.0.1:8800/girl/view/index.html; } location ~ /\/(native|gallery|picture|font)\/(.*)/ { # 4 proxy_pass http://88.88.88.88/$1/$2; }}
上面的配置中,在执行#2、#3和#4处的指令同时,都会执行配置在#1处的指令,也就是说:
/、/index.html和/\/(native|gallery|picture|font)\/(.*)/对应的请求,都会加上请求头部Host,值为www.test.com
