Nginx从入门到入土
Rewrite 规则
Rewrite规则可以实现对url的重写,以及重定向
指令语法:rewrite regex replacement [flag];
regex : 是代表要匹配的正则表达式,可以通过正则表达式提取变量
replacement : 要替换的url地址
flag : 是我们进行完替换之后,要进行的操作
常用正则表达式
字符 | 描述 |
---|---|
\ | 将后面接着的字符标记为一个特殊字符或者一个原义字符或一个向后引用 |
^ | 匹配输入字符串的起始位置 |
$ | 匹配输入字符串的结束位置 |
* | 匹配前面的字符零次或者多次 |
+ | 匹配前面字符串一次或者多次 |
? | 匹配前面字符串的零次或者一次 |
. | 匹配除“\n”之外的所有单个字符 |
(pattern) | 匹配括号内的pattern |
flag参数
标记符号 | 说明 |
---|---|
last | 本条规则匹配完成后继续向下匹配新的location URI规则 |
break | 本条规则匹配完成后终止,不在匹配任何规则 |
redirect | 返回302临时重定向 |
permanent | 返回301永久重定向 |
应用举例重写url路径
处理前:http://127.0.0.1:20001/rest/api/kernel
处理后:http://127.0.0.1:20001/api/kernel
location /rest {
proxy_pass http://127.0.0.1:20001;
proxy_connect_timeout 600;
proxy_read_timeout 600;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' '*';
add_header 'Access-Control-Allow-Headers' 'Authorization,AppInfo,Sign,X-Requested-With,*';
if ($request_method = 'OPTIONS') {
return 204;
}
rewrite "^/rest/(.*)$" /$1 break;
}
说明:()内为提取的变量,第一个提取的变量是$1