第五十五集 Nginx服务的跳转Rewrite和正则表达式


Rewrite实际场景

配置跳转的原因

为了让URL看起来更规范、合理
企业会将动态URL地址伪装成静态地址提供服务
网址换新域名后,期望用户可以通过旧的访问跳转到新的域名上
服务端某些业务调整

Nginx跳转需求的实现方式

使用rewrite进行匹配跳转(主要匹配的是具体的路径)
使用if匹配全局变量后跳转,结合布尔值时间true和fales的跳转
使用location匹配再跳转(可以匹配后执行proxy_pass,将请求跳转到其他服务上)

rewrite如何实现跳转

nginx服务基于http协议rewrite重写mudule模块
nginx:主从URL重写,其中有一个布尔值:返回值的结果只有true或者false;同时特性:只支持if单分支语句
跳转:循环最多可以执行10次,超过后nginx将返回500错误
PCRE支持:perl兼容正则表达式的语法规则匹配
重写模块set指令:自己设置即可以使用布尔值
如下:标志位参数:$1:具体的路径,即标志位
www.baidu.com/bbs/install/index.php ##URL
www.baidu.com ##URI $0
/bbs/install/index.php ## $1

rewrite功能

rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。
比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求

rewrite生效位置

rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,
例如http:/ /www.da.com/a/we/ index。php?id=1&u=str 只对/a/we/ index . php重写

Nginx正则表达式元字符

^ :匹配输入字符串的其实位置
$ :匹配输入字符串的结束位置
* :匹配前面额字符零次或多次
+ :匹配前面的字符一次或多次
? :匹配前面的字符零次或一次
. :表示任意单个字符
\ :转义符
\d:匹配纯数字
\w :匹配字母、数字、下划线、汉字
\s :匹配任意空白符
\b :匹配单词的开始或结束
{n} :重复n次
{n,} :重复n次或更多次
[c] :匹配单个字符c
[a-z] :匹配a-z小写字母的任意一个
[a-zA-Z] :匹配a-z小写字母或A-Z大写字母的任意一个
() :表达式的开始和结束位置
| :或运算符

Rewrite命令

rewrite [flag];
#regex :正则
#replacement :跳转后的内容
#flag :rewrite支持的flag标记,对此条匹配结果进行标记

flag标记说明

last :相当于Ppache的[L]标记,表示完成rewrite
break :本条规则匹配完成即终止,不再匹配后面的任何规则
redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新url
permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫更新url
last和break的区别:

使用场景: last一般写在server和if中,break一般使用再location中
URL匹配: last不终止重写后的url匹配,break终止重写后的url匹配,配置文件中有多个location匹 配,其中last不影响后面的匹配,而break则终止后面的匹配,其匹配顺序有优先级

rewrite执行顺序

http {
	server {
		rewrite								#优先级为1,最先执行
	  location ~*\.(jpg|gif|swf)$ {			
	  	rewrite								#优先级为2
	  		vald_referers none blocked *.whd.com whd.com;
	  		if ( $infalid_referer ) {
	  			rewrite ^/ http://www.whd.com/crror.png;		#优先级为3
	  			}
	  		}
	  	}
	  }

location分类

精准匹配:location = / {…} 示例:location = patt {} PS: 精确匹配字符串
一般匹配:location / {…} 示例:location patt {} PS:只要包含patt的字符串即可
正则匹配: location ~ / {…} 示例:location~patt{}PS:按照正则表达式的方式匹配
~:表达的意思首先是可以支持正则表达式,其次是区分大小写

location 优先级

:精确匹配
^~:前缀匹配
和*:按文件中的顺序的正则匹配;这里区分匹配是文件还是目录
文件:优先级高于
目录:优先级高于

普通匹配:以xxx路径为前缀的匹配
/:通用匹配

Rewrite和Location的小结

相同点:都能实现跳转
不同点:
rewrite是在同一域名内更改获取资源的路径
location是对一类路径做控制访问或反向代理,还可以 proxy_ pass到其他机器
rewrite会写在location里,执行顺序
执行server块里面的rewrite指令
执行location匹配
执行选定的location中的rewrite指令

基于域名的跳转

vim /etc/hosts		#添加映射
192.168.8.151 www.zsx.com www.cc.com
mkdir -p /var/log/nginx/
vim /usr/local/nginx/conf/nginx.conf		##修改配置文件
server {
      	  listen       80;
      	  server_name  www.zsx.com;		##域名修改
#charset koi8-r;
 access_log  /var/log/nginx/www.zsx.com-access.log;		##开启并对日志保存路径进行修改
location / {						##在原有location位置插入
     		   if ($host = 'www.zsx.com'){	##$host为rewrite全局变量,代表请求主机头字段或主机名
           	     rewrite ^/(.*)$ http://www.cc.com/$1 permanent; ##$1为匹配的位置变量,即域名后面的字符串,同时永久跳转;(.*)
             	   }
        	    root   html;
         	   index  index.html index.htm;
     	   }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值