当前位置: 首页 > news >正文

nginx rewrite if 浏览器分离 防盗链

nginx rewrite if 浏览器分离 防盗链

一、Rewrite

和apache等web服务软件一样,rewrite的主要功能是实现URL地址的重定向。Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的。默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持

Rewirte功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。

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

URL:就是具体路径/位置

URI:指的是一个拥有相同类型/特性的对象集合

在这里插入图片描述

Nginx:通过ngx_http_rewrite_module模块支持URL重写,支持if条件判断,但不支持else。

跳转:从一个location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误。

PCRE支持:perl兼容正则表达式的语法规则匹配

重写模块set指令:创建新的变量并设其值

//语法格式:

rewrite [flag];

regex:表示正则匹配规则

replacement:表示跳转后的内容

flag:表示rewrite支持的flag标记

//flag标记说明:

last:本条规则匹配完成后,继续向下匹配新的location URL规则,一般用在server和if中。

break:本条规则匹配完成即终止,不在匹配后面的任何规则,一般使用在location中。

redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址

permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。

匹配正则的标识符和意义

^ 必须以^后的实体开头

$ 必须以$前的实体结尾

. 匹配任意单个字符

[] 匹配指定字符集的任意字符

[^] 匹配任何不包括在指定字符集内的任意字符串

| 匹配|之前或之后的实体

() 分组,组成一组用于匹配的实体,通常会有|来协助

\ 转义

* 匹配前面的字符出现零次或者多次,如“ab*”能匹配a、ab、abb

+ 匹配前面的字符出现一次或者多次,如“ab+”能匹配ab、abb,但是不能匹配a

? 匹配前面的字符出现零次或者一次,如“ab(cd)?”能匹配ab、abcd

(pattern) 匹配括号内pattern并可以在后面获取对应的匹配,常用$0-9属性获取小括号中匹配的内容。如(hello∣chenyu)9属性获取小括号中匹配的内容。如^(hello | chenyu)9属性获取小括号中匹配的内容。(hellochenyu) //字符串为“hello chenyu”,可以捕获的结果为:

$1=hello$2=chenyu 这些被捕获的数据,在后面就可以当作变量一样进行使用了

一、nginx的rewrite功能在企业里应用非常广泛

1、可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求

2、为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态的URL地址伪装成静态地址提供服务

3、网址更新域名后,让旧的访问跳转到新的域名上,例如访问京东的360buy.com会跳转到jd.com

4、根据特殊变量、目录、客户端的信息进行URL调整等。

三、rewrite配置

//nginx访问自定义网页

[root@ws ~]# cd /usr/local/nginx
[root@ws nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@ws nginx]# cd html/
[root@ws html]# ls
50x.html  imgs  index.html
[root@ws html]# cd imgs/
[root@ws imgs]# ls
linux.jpg
[root@ws imgs]# nginx -s reload

在这里插入图片描述

//浏览器访问

在这里插入图片描述

1、flag标记–break

[root@ws html]# mv imgs/ images
[root@ws html]# ls
50x.html  images  index.html
[root@ws html]# 

再次访问会发现404找不到网页

在这里插入图片描述

//需要写rewrite

[root@ws html]# nginx -s reload

在这里插入图片描述

//再次浏览器访问访问,路径不变http://192.168.110.10/imgs/linux.jpg

在这里插入图片描述

//还可以使用break,让我们访问得站点跳转到百度得首页

在这里插入图片描述

//浏览器访问http://192.168.110.10/imgs/linux.jpg

在这里插入图片描述

2、flag标记-last

在这里插入图片描述

//也可以实现跳转到百度

在这里插入图片描述

2、flag标记–redirect

在这里插入图片描述

3.flag标记–permanent

在这里插入图片描述

四、if判断

可以使用在server段和location段

语法:

if (condition) {…}

常见的condition:

(1)变量名

(2)以变量名为操作数构成的比较表达式(可使用=,!=类似的比较符进行测试)

(3)正则表达式的模式匹配操作
区分大小写的模式匹配检查

~* 不区分大小写的模式检查

(4)测试指定路径为文件的可能性(-f !-f)

(5)测试指定路径为目录的可能性(-d !-d)

(6)测试文件的存在性(-e !-e)

检查文件是否有执行权限(-x !-x)

1、配置基于域名跳转

假如现在公司旧的域名www.cy.com有业务需求,需要使用新的域名www.chenyu.com代替,但是旧域名不能废除,需要跳转到新的域名上,而且后面的参数保持不变

真机的浏览器访问的前提

!-f)

(5)测试指定路径为目录的可能性(-d !-d)

(6)测试文件的存在性(-e !-e)

检查文件是否有执行权限(-x !-x)

1、配置基于域名跳转

假如现在公司旧的域名www.cy.com有业务需求,需要使用新的域名www.chenyu.com代替,但是旧域名不能废除,需要跳转到新的域名上,而且后面的参数保持不变

真机的浏览器访问的前提

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

http://www.dtcms.com/a/462159.html

相关文章:

  • 网站规划文档知乎关键词搜索排名
  • 订餐网站模板下载三亚市住房和城乡建设局网站
  • IT 服务自动化的时代:让效率与体验共进
  • 【学习篇】什么是分布式系统
  • paper.js 实现图片简单框选标注功能
  • 磁悬浮轴承的非线性特性深度解析:从理论到实践的挑战与突破
  • 怎样设计网站静态页面我要发布招聘信息
  • Shape-Guided Diffusion with Inside-Outside Attention
  • MySQL实战篇1:慢查询优化实战-4道题的真实优化记录
  • 怎样建立自己的网站卖东西个人网站备案填写要求
  • term.everything‌ 通过终端运行任意GUI应用程序
  • 去噪自编码器(DAE)
  • 形象设计公司网站建设方案书营销公司的营业范围
  • 关于网站备案的44个问题wordpress 发表文章
  • 做网站定金是多少网站开发项目外包
  • 中国制造网官方网站入口网址秦皇岛黄页大全秦皇岛本地信息网
  • Linux 文件打开函数 `open()` 深入解析
  • ESP8266实现mqtt
  • 初识MYSQL —— 表的约束
  • mysql存储微信Emoji表情问题
  • DzzOffice 通知功能(notification_add)调用
  • 西安手机网站建设公司排名安徽房产网站建设
  • 杭州强龙网站建设电话广西桂林天气预报7天
  • autosar
  • LinkMate 智能会议室系统:基于 Qt / QML / WebRTC / FFmpeg / Whisper / OpenGL 的实时音视频会议平台
  • JavaScript编程工具有哪些?老前端的实用工具清单与经验分享
  • 企业营销网站服务器1g够wordpress 电影网站
  • 360°全景视频 数据集Dataset
  • 项目愿景缺乏共识会带来哪些风险
  • 网站服务器vps温州做网站哪里好