背景:为了服务器文件的安全,不能将服务器的文件保存路径设计暴露出来,可以使用nginx的rewrite功能隐藏文件的真实路径
1.例子
rewrite “/pic/([0-9]{2})-([0-9]{2})-([0-9]{1,2})-C-([0-9]*).(png|gif|jpg|jpeg)$” /storage/bidding/20$1-$2/$3/Certification/$4.$5 last;
2.说明:
rewrite为固定关键字,表示开始进行rewrite匹配规则
第一个regex部分是 ([0-9]{2}) ,这是一个正则表达式,匹配域名后面的路径地址,对应后面的第一个参数$1
replacement部分 $1,是取自regex部分()里的内容。匹配成功后跳转到的路径。
flag部分 last标识重写匹配结束。
3.regex 常用正则表达式说明字符描述
\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$”
^ 匹配输入字符串的起始位置
$ 匹配输入字符串的结束位置
* 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+ 匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o”
? 匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,"?"等效于"{0,1}"
. 匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式。
(pattern) 匹配括号内pattern并可以在后面获取对应的匹配,常用$0...$9属性获取小括号中的匹配内容,要匹配圆括号字符需要\(Content\)
4.rewrite 广泛的应用场景
Nginx的rewrite功能在企业里应用非常广泛:
可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。
为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com
根据特殊变量、目录、客户端的信息进行URL调整等