Rewrite跳转场景
URL看起来更加规范、合理
企业会将动态URL地址伪装成静态地址提供服务
网址换新域后,让旧的访问跳转到新的域名上
服务端某些业务调整
Rewrite实际场景
Nginx跳转需求的实现方式
使用rewrite进行匹配跳转
使用if匹配全局变量后跳转
使用location匹配在跳转
rewrite放在server{},if{},location{}段中
location只对域名后边的除去传递参数外的字符串起作用
对域名或参数字符串
使用if全局变量匹配
使用proxy pass反向代理
Rewrite命令
Rewrite命令语法
rewrite [flag];
flag标记说明
last: 相当于apache的[L]标记,表示完成write
break: 本条规则匹配完成即终止,不再匹配后的任何规则
redirect:返回302临时重定向,浏览器地址会显示添砖后的URL地址,爬虫不会更新url
permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL
last和break比较
last使用场景一般写在server和if中
break使用场景一般使用在location中
last的URL匹配不终止重写后的url匹配
break的URL终止重写url匹配
location分类
分类 location = patt{}[精准匹配]
location patt {} [一般匹配]
location ~ patt{}[正则表达式]
正则匹配的常用表达式
~ 执行一个正则匹配,区分大小写
~* 执行一个中则匹配,不分大小写
!~执行一个正则匹配,区分大小写不匹配
!~*执行一个正则表达式,不区分大小写不匹配
^~普通字符匹配;使用前缀匹配。如果匹配成功,则不再匹配其他location
= 普通字符精准匹配,也就是完全匹配
location优先级
相信类型的表达式,字符串长的会优先匹配
按优先级排列
=类型
^~类型表达式
正则表达式(和*)类型
常规字符串匹配类型,按前缀匹配
通用匹配(/),如果没有其他匹配,任何请求都会匹配到
location优先级规则
匹配某个具体文件
(location=完整路径)>(location^完整路径)>location*完整路径)= (location ~ 完整路径)>(location完整路径)>(location /)
用目录做匹配访问某个文件
(location=目录)>(location^目录/)>(locatioon目录)=(location~*目录)/>(location 目录)>(location /)
用目录做匹配做匹配访问某个文件
(location= 目录)>(location^~目录/)>(locatiom ~ 目录)=
(location~*目录·)>(location目录)>(location /)
rewrite和location
相同点
都能实现跳转
不同点
rewrite是在同一域名内更改获取资源的路径
location是一类路径做控制访问或反向代理,还可以proxy_pass到其他机器
rewrite会写在location里,执行顺序
执行server块里面的rewrite指令
执行location匹配
执行选定的location中rewite指令
安装Nginx服务
步骤
1.安装nginx源
2.安装nginx软件包
3.修改默认站点配置文件:/etc/nginx/conf.d/fefault.conf
4.启动nginx
注意
确定域名可以正常解析
做一下场景前,要删除上一个场景的配置
及时清除浏览器缓存
基于域名的跳转
公司旧域名www.Kgc.com,因业务需求有变更,需要使用新域名www.newkgc.com代替
不能废除旧域名
从旧域名跳转到新域名,且保持参数不变
基于客户端ip访问跳转
今天公司业务版本上线,所有ip访问任何内容都显示一个固定维护页面,只有公司ip访问正常