目录
一、Nginx Rewrite
二、Rewrite的功能
1.Rewrite 跳转场景
2.Rewrite 跳转实现
3.Rewrite 实际场景
4.Rewrite 正则表达式
5.Rewrite 命令/语法格式
6.location 分类
7.location 优先级
8.Rewrite和location比较
9.根据以上了解,小案例来操作实现我们在企业跳转案例
三、Rewrite 跳转场景
五、Rewrite命令/语法
六、location分类
1.location 大致可以分为三类
2.location 常用的匹配规则
3.location 优先级
七、跳转案例
1.基于域名的跳转
①关闭防火墙和安全机制
②修改配置文件
③域名解析
④重启服务
⑤浏览器验证查看
2.基于客户端 IP 访问跳转
①修改配置文件
② 创建网页返回执行文件
③重启服务
④前往浏览器验证
编辑3.基于旧域名跳转到新域名后面加目录
①修改配置文件
②.域名解析
③重启服务
④浏览器测试
4.基于参数匹配的跳转
①.修改配置文件
②.重启服务
③.浏览器测试
5.基于目录下所有 php 结尾的文件跳转
①.修改配置文件
②.重启服务
③.浏览器测试
6.基于最普通一条 url 请求的跳转
① .修改配置文件
②.重启服务
③.浏览器测试
一、Nginx Rewrite
Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Nginx 前要编译安装 PCRE 库。Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。
rewrite和location的功能有点相像,都能实现跳转,主要区别在于rewrite常用于同一域名内更改获取资源的路径,而location是对一类路径做控制访问和反向代理,可以proxy_pass到其他服务器。
Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。
rewrite只能放在server{},location{},if{}中,
并且只能对域名后边的除去传递的参数外的字符串起作用。
二、Rewrite的功能
1.Rewrite 跳转场景
2.Rewrite 跳转实现
3.Rewrite 实际场景
4.Rewrite 正则表达式
5.Rewrite 命令/语法格式
6.location 分类
7.location 优先级
8.Rewrite和location比较
9.根据以上了解,小案例来操作实现我们在企业跳转案例
三、Rewrite 跳转场景
1.URL看起来更规范、合理
2.企业会将动态URL地址伪装成静态地址提供服务
3.网址换成新域名后,让旧的访问跳转到新的域名上
4.服务端某些业务调整
URL:就是一个具体路径/位置,指的就是一个拥有相同类型/特性的对象集合
URN:用名称定位
四、Nginx跳转需要的实现方式
使用Rewrite进行匹配跳转——>防盗链
使用if匹配全局变量后跳转——>centos系统的全局变量不是Nginx服务本身全局变量
使用location匹配再跳转——>匹配的访问URL路径,location可以匹配本地重写以及跨服务器跳转
Rewrite放在server{} , if{} , location{ } 段中
location只对域名后边的除去传递参数外的字符串起作用
对域名或参数字符串
使用if全局变量匹配
使用proxy_pass反向代理
五、Rewrite命令/语法
Rewrite <regex> <replacement> [flag];
正则 跳转后的内容 Rewrite支持flag标记
flag标记说明
标记
last 相当于Apache的[L]标记,表示完成Rewrite,在本条规则完成后,继续向下匹配新 的location URL规则,一般在server和if当中
break 本条规则匹配完成即终止,不再匹配后面规则
redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新URL
permanent 返回301永久重定向,浏览器地址会显示跳转后URL地址,爬虫更新URL
break和last类似,但是不会重新发起一次处理过程,而是直接放回处理结果
redirect 该标记表示当前规则匹配成功后立即进行重定向操作
permanent 该标记和redirect类似,但是永久重定向
set 标记表示当前规则匹配成功设置一个变量,并把变量传入下一条规则
六、location分类
1.location 大致可以分为三类
精准匹配:location = / {...}
一般匹配:location / {...}
正则匹配:location ~ / {...}
2.location 常用的匹配规则
= :进行普通字符精确匹配,也就是完全匹配。 location = yudh www.kgc.com/yudh
^~ :表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 location。
~ :区分大小写的匹配。
~* :不区分大小写的匹配。
!~ :区分大小写的匹配取非。
!~* :不区分大小写的匹配取非。
3.location 优先级
首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰的前缀匹配
最后是交给 / 通用匹配
七、跳转案例
1.基于域名的跳转
①关闭防火墙和安全机制
②修改配置文件
vim /usr/local/nginx/conf/nginx.conf
③域名解析
echo "192.168.146.110www.kgc.com www.benet.com" >> /etc/hosts
④重启服务
systemctl restart nginx
⑤浏览器验证查看
2.基于客户端 IP 访问跳转
①修改配置文件
vim /usr/local/nginx/conf/nginx.conf
② 创建网页返回执行文件
mkdir -p /var/www/html/
echo "<h1>We are maintaining now!</h1>" > /var/www/html/weihu.html
③重启服务
systemctl restart nginx
④前往浏览器验证
本机浏览器
用另一台不同IP地址的浏览器测试
3.基于旧域名跳转到新域名后面加目录
①修改配置文件
vim /usr/local/nginx/conf/nginx.conf
②.域名解析
③重启服务
systemctl restart nginx
④浏览器测试
使用浏览器访问 http://bbs.kgc.com/post/1.html 跳转到 http://www.kgc.com/bbs/post/1.html
4.基于参数匹配的跳转
①.修改配置文件
vim /usr/local/nginx/conf/nginx.conf
②.重启服务
systemctl restart nginx
③.浏览器测试
使用浏览器访问 http://www.kgc.com/100-200-100.html 或 http://www.kgc.com/100-100-100.html 跳转到http://www.kgc.com页面。
5.基于目录下所有 php 结尾的文件跳转
①.修改配置文件
vim /usr/local/nginx/conf/nginx.conf
②.重启服务
systemctl restart nginx
③.浏览器测试
浏览器访问 http://www.kgc.com/upload/123.php 跳转到http://www.kgc.com页面。
6.基于最普通一条 url 请求的跳转
① .修改配置文件
vim /usr/local/nginx/conf/nginx.conf
②.重启服务
③.浏览器测试
浏览器访问 http://www.kgc.com/abc/123.html 跳转到http://www.kgc.com页面。