Nginx【Nginx核心指令(rewrite指令、实战rewrite 、if指令、set和break指令】(六)-全面详解(学习总结---从入门到深化)

news2024/11/15 8:48:50

 

目录

Nginx核心指令_rewrite指令

Nginx核心指令_实战rewrite 

Nginx核心指令_if指令

Nginx核心指令_set和break指令


Nginx核心指令_rewrite指令

 地址重写与地址转发

地址重写

地址重写是实际上是为了实现址标准化,就像访问www.baidu.cn可 以出现www.baidu.com的首页,服务器会把www.baidu.cn重写成 www.baidu.com,浏览器的地址栏也会显示www.baidu.com。

地址转发 

地址转发一般发生在同一站点项目内,而地址重写则没有限制。

总结:

  • 地址转发后客户端浏览器地址栏中的地址显示是不改变的;而地址重写后客户端浏览器地址栏 中的地址改变为服务器选择确定的地址。
  • 在一次地址转发整个过程中,只产生一次网络请求;而一次地址重写一般会产生两次请求。地 址转发一般发生在同一站点项目内;而地址重写没有该限制。
  • 地址转发的速度较地址重定向快。
  • 地址转发过程中,可以将客户端请求的request范围内的属性传递给新的页面,但地址重写不 可以。

rewrite常用全局变量 

rewrite指令 

该指令通过正则表达式的使用来改变URI。可以同时存在一个或者多个指令,按照顺序依次对URL进行匹配和处理。

 

 该指令可以在server快或者location块中配置,其语法结构为:

rewrite regex replacement [flag];

关键字   正则   替代内容     flag标记

注意:

regex,用于匹配URI的正则表达式。使用括号 "()" 标记要截 取的内容。 

rewrite参数的标签段位置: 

server,location,if

常用正则表达式 

rewrite 最后一项flag参数: 

示例1 

无论/search 后面跟什么内容,最后都会被永久重定向到百度页面

location /search {
   rewrite   ^/(.*)   http://baidu.com
permanent;
}

示例2

创建三个文件夹,每个文件夹下有个1.html文件;

location /images {
   rewrite /images/(.*) /pics/$1;          
//•将URL /images/1.html 重写为 /pics/1.html
}
location /pics {
   rewrite /pics/(.*) /photos/$1;     //•将URL /pics/1.html 重写为 /photos/1.html
}
location /photos {
}

 示例3

将URL /images/1.html 重写为 /pics/1.html, 并且不再匹配其他 location段

location /images {
   rewrite /images/(.*) /pics/$1 break;
}

示例4

将URL /images/1.html 重写为 /pics/1.html, 重新进入server段后 匹配了/pics location段,然后又被重写。

location /images {
   rewrite /images/(.*) /pics/$1 last;
}

实时效果反馈

1. 下列描述Nginx全局变量$request_method正确的是。

A 请求资源的方式

B 主机头,也就是域名

C 客户端的公网ip

D 请求的协议

2. Nginx核心指令Rewrite的主要作用是____。

A 定位资源文件

B 地址重定向

C 终止请求

D 条件判断

Nginx核心指令_实战rewrite 

Nginx的rewrite功能在企业里应用非常广泛: 

  • 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。
  • 网址换新域名后,让旧的访问跳转到新的域名上。
  • 根据特殊变量、目录、客户端的信息进行URL调整等。

域名跳转 

旧域名www.test.com直接跳转到新域名www.tong.com

server {
   listen     80;
   server_name test.com;
   rewrite ^/(.*) http://www.tong.com/$1 permanent;
   }
   server {
       listen       80;
       server_name www.tong.com;
       location / {
           root   html;
           index index.html index.htm;
       }
       access_log logs/brian.log main gzip buffer=128k flush=5s;
       error_page   500 502 503 504 /50x.html;
       location = /50x.html {
           root   html;
       }
 }

 实时效果反馈

1. Nginx核心配置文件中rewrite指令可以出现的标签段位置不包括____。

A server

B location

C http

D if

Nginx核心指令_if指令

该指令用来支持条件判断,并根据条件判断结果选择不同的Nginx配置,可以在server块或locatio块中配置该指令。 

语法结构:

if (condition) { ... }

其中,花括号代表一个作用域,形成一个if配置块,是条件为真时的 Nginx配置。condition为判断条件( true/false ),它可以支持以下 几种设置方法: 

变量名-如果变量的值为空字符串或者“0”开头的任意字符串,if指令认为条件为false,其他情况为 true,比如:

if ($slow) {   .....  

       #Nginx配置

使用 "="(等于) 和 "!=" (不等于) 比较变量和字符串是否相等,相等时if指令为条件为true,反之为 false。

if ($request_method = POST) {
   return 405;
}

 注意: 这里的字符串不需要加引号。

变量与正则表达式

~ 表示匹配过程对大小写敏感

~* 表示匹配过程对大小写不敏感

!~ 表示匹配失败是if指令认为条件为true否则为false 

if ($http_user_agent ~ MSIE) {
   # $http_user_agent 的值中是否包含MSIE字符串,如果包含,为   true
}

 示例

判断ip地址是否为192.168.66.10如果是返回“test if ok in Url /serach”

location /search {
 if ($remote_addr = "192.168.66.10"){
     return 200 "test if ok in url search"
 }
}

 示例

不允许谷歌浏览器访问,如果时候谷歌浏览器放回500

if ($http_user_agent ~ Chrome){
   return 500;
}

实时效果反馈

1. Nginx核心配置文件中下列描述if指令正确的是____。

A 条件判断

B url重定向

C 终止请求

D 资源文件定位

Nginx核心指令_set和break指令

set指令 

该指令用于设置一个新的变量。

语法结构

set variable value

variable,为变量的名称。注意要用符号“$”作为变量的第一个字符,且变量不能与Nginx服务器预 设的全局变量同名。

value,为变量的值,可以是字符串、其他变量或变量的组合等。

break指令 

该指令用于中断当前相同作用域中的其他Nginx配置。

语法结构

break;

示例

location / {
 if ($slow){
   set $id $1 ; # 处于break指令之前,配置生效
   break;      
   limit_rate 10k; #处于break指令之后,配置无效
 }
}

实时效果反馈

1. Nginx核心配置文件中last标记在rewrite规则内表示含义是 ____。

A 向http重新发起请求

B 向server重新发起请求

C 终止请求

D 无意义

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云企业邮箱标准版用户数功能说明

阿里云企业邮箱标准版不同用户数费用表,标准版企业邮箱不限制账号容量、20GB共享网盘容量、5GB个人网盘容量,默认5个账号数540元一年,原价是600元一年,年付9折、多年付8折,阿里云百科分享企业邮箱标准版不同账号数收费…

软件测试技能,JMeter压力测试教程,请求body自动签名带上sign参数(二十一)

一、前言 接口请求body带有sign签名参数,sign签名是根据请求body除去sign本身参数后,拼接请求参数最后md5加密生成的 使用 jmeter 测试接口,我们希望在请求之前修改 post body 里面的 sign 参数的值为签名的值 二、sign签名 签名一篇的实…

Alibaba Sentinel | 熔断规则详解

文章目录 简介熔断策略-慢调用比例结论:流程图:熔断结果详细解释 熔断策略-异常比例结论:详细解释 熔断策略-异常数结论:详细解释 统计异常数、比例的方法编码加注解RuntimeException 总结 简介 熔断是一种保护机制,用…

Redis持久化(RDB、AOF)

Redis持久化(RDB、AOF) 一、Redis高可用二、Redis持久化三、Redis的RDB持久化1、触发条件1.1 手动触发1.2 自动触发1.3 其它自动触发机制 2、执行流程3、启动时加载RED文件(恢复) 四、Redis的AOF持久化1、开启AOF2、执行流程2.1 命令追加(app…

杂记:逆向一块FPGA核心板

最近太热了,实在无心看书。阵列书丢一边看不进去,还买了几本统计信号的甚至都没开始看(笑),躺在床上玩玩手机摆烂,看到某黄色APP上有老板卖拆机的板子,价格美丽,美中不足的是没有资料…

JavaFX布局详解与代码实例

JavaFX布局详解与代码实例 一、JavaFX布局的原理1.1 JavaFX布局容器1.2 布局约束 二、常用JavaFX布局2.1 VBox和HBox布局2.2 GridPane布局2.3 BorderPane布局 三、JavaFX布局代码实例四、总结与展望 正文: 引言: JavaFX是一种功能强大的用户界面&#xf…

SFP6012-ASEMI代理MHCHXM(海矽美)二极管SFP6012

编辑:ll SFP6012-ASEMI代理MHCHXM(海矽美)二极管SFP6012 型号:SFP6012 品牌:MHCHXM(海矽美) 封装:TO-247AB 恢复时间:≤75ns 正向电流:30A 反向耐压&a…

Excel表格转换

原始数据 1部 2部 3部 4部 5部 6部 7部 8部 9部 郈思 王瑾 郈思 许嘉 郈思 施眉 郈思 王瑾 郈思 许嘉 郈思 许嘉 吕倩倩 孙帮菊 夏侯瑾 孙帮菊 吕倩倩 孙痴梦 孙帮菊 姜佳 王瑾 孙痴梦 王瑾 许嘉 施眉 施眉 杨婕 施眉 施眉 孙帮菊 杨孝洁 施眉 吕倩倩 孙痴梦 郈思 夏侯瑾 李文…

NR 吞吐量测试

前言 参考文档: 5G NR TBS (Transport Block size) Calculator | 5G-Tools.com 5G NR Transport Block Size (TBS) Calculation - Techplayon 5G MCS _ 搜索结果_哔哩哔哩_Bilibili 4/5G无线资源和数据调度流程:CQI上报、基站AMC调度、调度信息DCI下发、CQI到MCS的对…

网络控制地址转换管理技术

网络控制&地址转换&管理技术 一、网络控制技术ACL1.1、ACL应用场景1.2、ACL分类1.3、ACL规则1.4、基本ACL配置1.5、高级ACL配置1.6、总结 二、网络地址转换NAT2.1、NAT应用场景2.2、静态NAT2.3、静态NAT配置2.4、动态NAT2.5、动态NAT配置12.6、动态NAT配置22.7、NAPT2.…

【C语言督学训练营 第十六天】考研中常考的排序大题(上)---- 冒泡排序、插入排序、快速排序

文章目录 前言经典的冒泡插入排序快速排序 前言 今天要介绍的部分是排序算法,在很久很久之前学习过十大排序,当时自我感觉非常良好,知道今天才知道我认为的大错特错。有些排序算法会考代码题,有些只会考小题只需要理解思想即可&a…

火山引擎DataLeap数据质量解决方案和最佳实践(二):解决方案

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 DataLeap流批数据质量解决方案 产品功能架构 火山引擎DataLeap流批数据质量解决方案有 4 个大的功能: 离线数据质量监控:解决批和微批监控…

Spring Boot 中的 CD 工具

Spring Boot 中的 CD 工具 在现代软件开发中,持续交付(Continuous Delivery,简称 CD)已经成为了一个非常重要的开发模式。CD 工具可以帮助我们自动化构建、测试、部署和发布软件,提高软件交付的速度和质量。在 Spring…

接口增量改动,研发经常忘通知测试,如何解决?

不知道大家有没有同感,做接口测试麻烦的不是测试本身,而是接口它会变,更麻烦的不是接口变了,而是它变了而你不知道。等到你测完,开发才悠悠跟你说 ——“那个接口我改了点东西,你再看一眼哈”。 我那是看一…

el-menu嵌套路由高亮

1、配置路由 2、一级导航页面配置 计算属性定义方法 3、二级导航页面

mysql知识点总结

MySQL的binlog有有几种录入格式?分别有什么区别? 有三种格式,statement,row和mixed. statement模式下,记录单元为语句.即每一个sql造成的影响会记录.由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制. row级别…

环境变量编程

问题 main 函数 (默认进程入口) int main(int argc, char* argv[], char* env[]) argc - 命令行参数个数argv[] - 命令行参数数组env[] - 环境变量数组 (最后一个元素为 NULL) 什么是环境变量? 环境变量是进程运行过程中可能用到的 "键值对" (NAME VA…

使用Bert,ERNIE,进行中文文本分类

GitHub - 649453932/Bert-Chinese-Text-Classification-Pytorch: 使用Bert,ERNIE,进行中文文本分类使用Bert,ERNIE,进行中文文本分类. Contribute to 649453932/Bert-Chinese-Text-Classification-Pytorch development by creatin…

centos通过源文件的方式安装node-red

centos通过源文件的方式安装node-red 一、下载源文件1.1 查看系统信息1.2 下载 二、安装配置2.1 安装nodejs2.2 安装node-red 三、pm2管理node-red进程3.1 pm23.2 node-red设置开机自启动 四、更多 [回到目录] 一、下载源文件 1.1 查看系统信息 查看你的Linux系统是32位还是6…

三、1如何运用设计原则之SOLID原则写出高质量代码?

你好我是程序员雪球。接下来我们学习一些经典的设计原则。其中包括SOLID,KISS,YAGNI,DRY,LOD等。其实这些设计原则从字面意思理解并不难。但是“看懂”和“会用”是两回事,而“用好”就难上加难了。 先来了解SOLID原则…