Nginx配置详细解释:(5)rewrite重写功能

rewrite重写功能,在编译安装时需要有相应的模块,ngx_http_rewritte_module模块指令中,有if指令,return,set,break等指令。

1.ngx_http_rewrite_module模块指令

1.if指令

if指令在nginx配置中,用于条件判断,且仅支持单词判断,不支持使用if else或者if elif多重判断。

用法:

if (条件判断){

        action;

}

使用正则表达式对变量进行匹配,匹配方式有=,!=,~,!~,~*等方式,如果匹配成功,就是true,否则为false。

测试是否为https和http方式:

前提是要有echo模块,在上一节nginx第三方模块详细解释

在location中:

scheme是指url前面的协议,如http://URL 或https://URL,就是指http或https

如果浏览器是http访问的,那么就输出这个scheme(http),如果是https访问的,那么就输出scheme(https)

重启:nginx -s reload,测试:

2.return指令

在loction添加一行:

格式:return code ; #返回给客户指定的HTTP状态码

return code [text]; #返回给客户端的状态码及响应报文的实体内容

return code url; #返回给客户端的URL地址

例子1:

当使用http访问时,执行return指令,如果执行return指令,那么就不会继续往下执行了

例子2:

访问:就会报404错误。

这是可以自定义的错误。403也可以

例子3:

这里默认为text/plain定义成文本格式后图形浏览器也可以看到

使用的浏览器通常是图形浏览器:此时再次访问:

例子4:

访问/test3转到百度的网页。

实现效果:我在浏览器上输入的是192.168.114.10/test3。它会自动跳转到百度的首页。

301永久重定向。 缓存在磁盘上,我们即使关闭nginx服务器。服务器不需要每次向客户提供新的url,客户访问过后会记录在自己的缓存中,即使nginx服务器死机,客户在一定时间内也可以继续访问

302 临时重定向。 没有缓存,服务器断开无法重定向

3.set指令

set指令与变量的用法类似,格式为:set $变量名 变量值;

如set $name linx; 

echo $name;输出的是linx。

这里设置变量名为name,变量值为linx。取服务端的端口号作为值,赋给变量my_port

输出$name值为linx,my_port为80.

4.break指令

break用于中断当前相同作用域中的Nginx配置。在break前面的配置命令生效,在后面的配置,如果是ngx_http_rewrite_module模块中的指令则不再生效,其余的生效。

如果break指令在location块中后续指令还会继续执行,只是不执行ngx_http_rewrite_module模块的指令了,其他还是会执行的。

有以下location配置:

可以发现,break前面可以输出值linx,在break后面有两条打印输出,set指令属于ngx_http_rewrite_module模块中的指令,则不执行,echo "hello"属于第三方模块,会正常执行。验证:

2.rewrite指令

例如访问192.168.114.10/bj,不知道是访问北京还是访问宝鸡,使用rewrite指定是beijing还是baoji。

重写bj,例如访问192.168.114.10/bj/xxxxxxx,访问北京,(.*)代表任意个字符。那么就自动跳转到192.168.114.10/beijing/xxxxxxx,以/bj开头的,跳转到/beijing/$1,$1是后项引用,

rewrite有四种不同的flag,分别是redirect(临时重定向302)和permanent(永久重定向301),break和last。前两种是跳转型的flag,后两种是代理型。

主站点:

浏览器中输入192.168.114.10/bj。跳转到了192.168.114.10/beijing:

3.实现http转https的功能

https的配置在前面文章高级配置中第6个知识点有教程,这里不再赘述

在location中写入rewrite指令:

 写一个全站跳转的,访问192.168.114.10时,默认是http,rewrite重写跳转到https。另一个是/login,访问/login时,跳转到https。浏览器要清楚缓存,否则会用影响。

验证1:192.168.114.10

验证2:192.168.114.10/login

4.防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链

在主页面html拖进来一个图片,网图(zyy.jpg),

 在Node2上安装httpd:

[root@Node2 ~]#:yum install -y httpd

[root@Node2 ~]#:systemctl start httpd

[root@Node2 ~]#:cd /var/www/html/

vim index.html

<html>
<body>
<h1>this is zyy  </h1>
<img src="http://192.168.114.10/zyy.jpg"/>
</body>
</html>

我们使用浏览器访问Node2:192.168.114.20

盗链,通过链接网站的图片,而不是打开了网站的整个页面

在location模块中,写入:

 valid_referes中合法的值,none为空,blocked无效值或*.pc.com,pc.com,如果不是合法的,就返回一个403

可以发现已经获取不到了

-------end-------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/347193.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Huggingface-cli 登录最新版(2024)

安装Huggingface-cli pip install -U "huggingface_hub[cli]"设置好git的邮箱和用户名和huggingface的github账号一致 git config --global user.mail xxx git config --global user.name xxx登录 复制token&#xff0c;划红线的地方&#xff0c;在命令行中点击右…

迷宫最短路径求解--c++

【代码】 #include<iostream> #include<queue> #include<stack> using namespace std; #define ROW 8 #define COL 8 //测试迷宫数据 int maze[ROW][COL] {{0,0,0,1,0,0,0,0},{0,1,0,1,0,1,0,1},{0,1,0,0,0,1,0,1},{0,1,0,1,1,1,0,1},{0,1,0,1,1,0,0,0},{0…

Fiddler抓包工具详细使用教程

各位做测试的同学想必对抓包工具fiddler并不陌生&#xff0c;但是很多同学可能没有总结过它的用法&#xff0c;下面我总结了fiddler一些常用的用法。 Web端抓包配置 打开Fiddler&#xff0c;Tools -> Fiddler Options -> HTTPS 配置完后记得要重启Fiddler 选中Decrpt …

34.打印K型

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/76 题目描述 小爱想用 * 打出一个大写的 K。…

6.11 作业

以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲解员&…

使用fvm切换flutter版本

切换flutter版本 下载fvm 1、dart pub global activate fvm dart下载fvm 2、warning中获取下载本地的地址 3、添加用户变量path&#xff1a; 下载地址 终端查看fvm版本 fvm --version 4、指定fvm文件缓存地址 fvm config --cache-path C:\src\fvm&#xff08;自定义地址&…

《精通ChatGPT:从入门到大师的Prompt指南》附录A:常用Prompt示例

附录A&#xff1a;常用Prompt示例 在《精通ChatGPT&#xff1a;从入门到大师的Prompt指南》的附录A中&#xff0c;我们将展示一系列常用的Prompt示例&#xff0c;帮助读者更好地理解和应用Prompt技术。每个示例将包含Prompt的描述、使用场景、预期结果以及实际输出。希望这些示…

调试环境搭建(Redis 6.X 版本)

今儿&#xff0c;我们来搭建一个 Redis 调试环境&#xff0c;目标是&#xff1a; 启动 Redis Server &#xff0c;成功断点调试 Server 的启动过程。使用 redis-cli 启动一个 Client 连接上 Server&#xff0c;并使用 get key 指令&#xff0c;发起一次 key 的读取。 视频可见…

公司面试题总结(二)

7. 说说 JavaScript 中的数据类型&#xff1f;存储上的差别&#xff1f; • 基本类型&#xff1a; o Number o String o Boolean o Undefined o null o symbol • 引用类型 o Object o Array o Function • 声明变量时不同的内存地址分配&#xff1a; o 简单类型的…

Excel最基本的常用函数

最基本最常用的函数&#xff0c;掌握了可以解决大部分问题。 (笔记模板由python脚本于2024年06月11日 19:05:56创建&#xff0c;本篇笔记适合熟悉excel的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣…

小白学RAG:大模型 RAG 技术实践总结

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…

【设计模式】行为型设计模式之 策略模式学习实践

介绍 策略模式&#xff08;Strategy&#xff09;&#xff0c;就是⼀个问题有多种解决⽅案&#xff0c;选择其中的⼀种使⽤&#xff0c;这种情况下我们 使⽤策略模式来实现灵活地选择&#xff0c;也能够⽅便地增加新的解决⽅案。⽐如做数学题&#xff0c;⼀个问题的 解法可能有…

【STM32】基于I2C协议的OLED显示(利用U82G库)

【STM32】基于I2C协议的OLED显示(利用U82G库) 文章目录 【STM32】基于I2C协议的OLED显示(利用U82G库)一、实验背景二、U8g2介绍&#xff08;一&#xff09;获取&#xff08;二&#xff09;简介 三、实践&#xff08;一&#xff09;CubexMX配置&#xff08;二&#xff09;U8g2配…

SPSS 27.0.1 IF026 软件安装教程

软件介绍 SPSS是一款统计产品与服务解决方案的软件&#xff0c;最初软件全称为“社会科学统计软件包”(SolutionsStatistical Package for the Social Sciences) 下载链接 https://pan.quark.cn/s/fb683999be3e 安装步骤 1、双击运行点击解压 2、进入解压后文件 3、右键管…

流批一体计算引擎-9-[Flink]中的数量窗与时间窗

1 数量窗 1.1 数量滚动窗口 0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows) 1.1.1 代码分析 Tumbling Count Windows是指按元素个数计数的滚动窗口。 滚动窗口是指没有元素重叠的窗口。 (1)构造了一个KeyedStream&#xff0c;用于存储word_count_data中的数据。…

铸铁机械5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

铸铁机械5G智能工厂工业物联数字孪生平台&#xff0c;推进制造业数字化转型。工业物联数字孪生平台以5G技术为基础&#xff0c;通过工业物联网连接铸铁机械生产过程中的各个环节&#xff0c;运用数字孪生技术构建虚拟工厂&#xff0c;实现生产过程的实时监测、模拟与优化&#…

【因果推断python】28_面板数据和固定效应2

目录 固定效应 固定效应 为了方面后面更正式地讲述&#xff0c;让我们首先看一下我们拥有的数据。按照我们的例子&#xff0c;我们将尝试估计婚姻对收入的影响。我们的数据包含多年以来多个个体 (nr) 的这两个变量&#xff0c;married 和lwage。请注意&#xff0c;工资采用对数…

java之IO流和集合框架的笔记

1 File类的使用 1.1 概述 File类及本章下的各种流&#xff0c;都定义在java.io包下。 一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录&#xff08;俗称文件夹&#xff09;&#xff0c;与平台无关。&#xff08;体会万事万物皆对象&#xff09; File 能新建、删…

10_Transformer预热---注意力机制(Attention)

1.1 什么是注意力机制(attention) 注意力机制&#xff08;Attention Mechanism&#xff09;是一种在神经网络中用于增强模型处理特定输入特征的能力的技术。它最早被应用于自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;特别是在机器翻译中&#xff0c;如Google的…

Shell脚本和变量

文章目录 Shell脚本shell的解释器Shell的作用Shell脚本的构成Shell的执行方式 重定向操作变量变量的类型&#xff1a;变量名的规范变量值的规范整数运算 &#xff0b; &#xff0d; / %小数运算 小数运算 Shell脚本 脚本就是可运行的代码的集合&#xff0c;脚本语言&#xff…