一、if指令
if 空格 (条件) {
xxx
}
“=”来判断相等, 用于字符串比较
“~” 用正则来匹配(此处的正则区分大小写)
~* 不区分大小写的正则
-f (判断请求的文件是否存在);
-d (请求的目录是否存在) ;
-e (文件或目录是否存在) ;
-x (文件是否可执行)。
二、设置变量
set $var "hello"
三、有正则表达式匹配时,并且表达式有(),则$1、$2依次是第一个()中匹配的值和第二个()中匹配的值
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 50M;
server {
listen 8080;
resolver xxx.xxx.xxx.xxx;
if ( $request_uri ~ ^/([^/]+)/(.*)$ ) {
set $proxy_ip $1;
set $proxy_url $2;
}
location / {
proxy_pass https://$proxy_ip/$proxy_url;
}
}
}
假设请求的为http://ip:8080/zzz.yyy.xxx/v1.0/login ,正则表达式是:^/([^/]+)/(.*)$
则$proxy_ip为zzz.yyy.xxx,对应于([^/]+)匹配的内容,$proxy_url为v1.0/login ,对应于(.*)的内容
注意:要及时将$1和$2赋值给变量,否则,当后面再有表达式时,$1和$2的值会改变
resolver 域名解析