nginx下rewrite的使用
rewrite 功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。
rewrite 只能放在 server{} , location{} , if{} 中,并且只能对域名后边的除去传递的参数外的字符串起作用
If 空格 (条件) {设定条件进行重写}
条件的语法:
1. “=” 来判断相等,用于字符比较
2. “~” 用正则来匹配(表示区分大小写), “~*” 不区分大小写
3. “-f -d -e” 来判断是否为文件、目录、是否存在
语法: return code;
停止处理并返回指定状态码给客户端。
if ($request_uri ~ *.sh ){
return 403
}
语法: set variable value;
定义一个变量并复制,值可以是文本、变量或者文本变量混合体
语法: rewrite regex replacement [flag]{last / break/ redirect 返回临时302/ permant 返回永久302}
last : 停止处理后续的rewrite指令集、 然后对当前重写的uri在rewrite指令集上重新查找
break : 停止处理后续的rewrite指令集 ,并不会重新查找
例1:
访问 192.168.10.68:8088 的请求会重定向到 http://www.baidu.com
例2:
表面看 rewrite 和 location 功能有点像,都能实现跳转,
主要区别在于 rewrite 是在同一域名内更改获取资源的路径,
而 location 是对一类路径做控制访问或反向代理,可以 proxy_pass 到其他机器。
很多情况下rewrite也会写在 location 里,它们的执行顺序是: