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

Linux服务:Nginx服务重写功能

目录

一、重写功能

1、重写功能作用

2、rewrite指令

①if指令

②return指令

③ set指令

④break指令

3、rewrite标志 

①redirect标志

②permanent标志

③break标志

④last标志

⑤rewrite标志实验


一、重写功能

1、重写功能作用

        重写功能(rewrite)用于实现URL的重写,URL的重写是非常有用的功能,比如它可以在我们改变网站结构之后,不需要客户端修改原来的书签,也无需其他网站修改我们的链接,就可以设置为访问,另外还可以在一定程度上提高网站的安全性。

2、rewrite指令

①if指令

        用于条件匹配判断,并根据条件判断结果选择不同的Nginx配置,可以配置在server或location块中进行配置,Nginx的if语法仅能使用if做单次判断可以在server模块和location模块,不支持使用if else或者if elif这样的多重判断,用法如下:

 if (   [连接符]   条件匹配  ){

执行动作;

}

条件匹配连接符:

= 比较变量和字符串是否相等,相等为true。

!= 比较变量和字符串是否不相等,不相等为true。

~ 区分大小写,判断字符是否匹配,匹配为true。

~* 不区分大小写,判断字符是否匹配,匹配为true。

-f 和 !-f #判断请求的文件是否存在和是否不存在。

-d 和 !-d #判断请求的目录是否存在和是否不存在。

-x 和 !-x #判断文件是否可执行和是否不可执行。

-e 和 !-e #判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接) 。

举例:
location /main {index index.html;default_type text/html;
#定义文件类型if ( $scheme = http ){
#如果用户访问的协议是http,$scheme变量表示用户来访问使用的协议。       echo "if-----> $scheme";
#则输出if --->协议 }if ( $scheme = https ){
#如果用户访问的协议是https,$scheme变量表示用户来访问使用的协议。 echo "if ----> $scheme";
#则输出if --->协议 }

②return指令

        return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置。

使用格式:        

return code :返回状态码

return code [text]:返回状态码可以选择性加一个文本

return code url :返回某个状态码直接跳转到某个url

举例:访问/test文件直接返回403报错
server {
#server模块listen 80;
#监听所有80端口server_name www.kgc.com;
#虚拟主机www.kgc.com        root /data/nginx/pc;
#定义根目录位置location /test{return 403;
#location模块访问根下的/test即返回403错误
}
}

③ set指令

设置变量,例如set $name kgc 设置name变量值为kgc。

location /main {root /data/nginx/html/pc;index index.html;default_type text/html;set $name kgc;
#定义变量name的值为kgcreturn $name;
#返回name变量的值   
}

④break指令

只跳出 rewrite中的(if , set ,return)指令,其他不跳出,如server模块内的不跳出。

location /main {root /data/nginx/html/pc;index index.html;default_type text/html;set $name kgc;
#定义name变量为kgcreturn $name;
#返回name变量值break; 
#location块中break后面指令还会执行,只会跳过rewrite中4个指令的内容,其他内容继续执行set $my_port $server_port;echo $my_port;
#输出为空,因为跳过了set指令的执行内容。echo命令需要安装第三方模块}

3、rewrite标志 

 格式: rewrite 客户输入的(可用原始url正则表示)   你想让客户访问的 (可用url正则表示)     标志(即动作)

. 表示任意字符

\d 表示匹配数字

* 表示任意长度字符包括0次

.* 表示任意长度字符不包括0次

①redirect标志

redirect 等于302即临时重定向,不会在浏览器中缓存。

②permanent标志

permanent 等于301即永久重定向,会在浏览器中缓存。

③break标志

break标志会重定向,但是不会显示跳转后的域名,只显示用户输入的域名。

④last标志

last标志,重写完成后,停止对当前URI在当前location中后续的其它重写操作,而后对新的URL启动新一轮重写检查,不建议在location中使用。

⑤rewrite标志实验

1、首先在主配置文件中创建2个虚拟主机,www.bj.com和www.beijing.com并且使用rewrite指令使得访问www.bj.com时跳转到www.beijing.com。

redirect、permanent实例,访问www.bj.com跳转到www.beijing.com
配置文件中添加:
server {listen 80;
#监听80端口server_name www.bj.com;
#虚拟主机www.bj.comroot /data/nginx/bj;
#虚拟主机1根目录location / {root /data/nginx/bj;
#虚拟主机1根目录rewrite /  http://www.beijing.com  permanent;
#访问虚拟主机1 www.bj.com时使用rewrite永久重定向到www.beijing.com。注意此处协议写全
}}
server {listen 80;
#监听80端口server_name www.beijing.com;
#虚拟主机2 www.beijing.comroot /data/nginx/beijing;
#虚拟主机2根目录
}
nging -t
#检查配置文件是否有错误
nginx  -s reload
#热加载nginx配置文件

2、创建虚拟主机1和虚拟主机2的根目录并在虚拟主机1即www.bj.com的index.html中写入内容“this  is  bj”在虚拟主机2的根目录即www.beijing.com的index.html中写入内容“this is bj jump beijing” 

mkdir -p /data/nginx/bj
#创建www.bj.com的根目录
mkdir -p /data/nginx/beijing
#创建www.beijing.com的根目录
echo "this is bj">/data/nginx/bj/index.html
#将this is bj 写入www.bj.com的根目录文件index.html中
echo "this is bj  jump beijing">/data/nginx/beijing/index.html
#将this is bj  jump  beijing 写入www.beijing.com的根目录文件index.html中

3、使用另外一台机器在/etc/hosts中添加本机ip对应www.bj.com和www.beijing.com。然后使用curl访问查看是否为302永久重定向提示,然后使用curl 域名  -L,查看跳转后的网页内容。

vim /etc/hosts
#编辑hosts文件
#添加内容:
192.168.30.11  www.bj.com  www.beijing.com
#此处ip为自己ip

4、redirect临时重定向和break使用只需要将配置文件中的permanent改为对应标志即可。 

 

 

 

  


      

相关文章:

Linux服务:Nginx服务重写功能

目录 一、重写功能 1、重写功能作用 2、rewrite指令 ①if指令 ②return指令 ③ set指令 ④break指令 3、rewrite标志 ①redirect标志 ②permanent标志 ③break标志 ④last标志 ⑤rewrite标志实验 一、重写功能 1、重写功能作用 重写功能(rewrite)用于实现URL的重…...

3.知识图谱概念和相关技术简介[知识抽取、知识融合、知识推理方法简述],典型应用案例介绍国内落地产品介绍。一份完整的入门指南,带你快速掌握KG知识,芜湖起飞!

1. 知识图谱(KG)的概念 知识图谱(KG)得益于Web的发展(更多的是数据层面),有着来源于KR、NLP、Web、AI多个方面的基因。知识图谱是2012年后的提法,基础还是语义网和本体论。 知识图谱的本质包含: 知识表示——Knowledge Representation基于知识表示的知识库——Knowledge…...

iOS 绿幕技术

绿幕(green screen)技术,又称 chroma key effect,实际上是将图片上指定颜色设置为透明的图形处理技术,这些透明区域也可以被任意背景图片替换。 这种技术在 视频合成中被广泛使用。iOS 中,通过 CoreImage …...

git 的使用方法(上 - 指令)

目录前言:一、Git 是什么?二、SVN与Git的最主要的区别?三、Git 安装四、git 配置1. 创建仓库 - repository2. 配置3. 工作流与基本操作五、Git 的使用流程1. 仓库中创建 1.txt文件2. 查看工作区的文件状态3. 添加工作区文件到暂存区4. 创建版…...

Windows 平台 oracle11g 单机 打补丁(33883353)

一、从oracle官网下载最新补丁包和打包工具 二、 对数据库及软件作全备 略 三、解压p33883353_112040_MSWIN-x86-64.zip 在33883353文件夹中打开README.html 2.1 OPatch Utility You must use the OPatch utility version 11.2.0.3.34 or later to apply this patch. 必须…...

1个寒假能学会多少网络安全技能?

现在可以看到很多标题都声称三个月内就可以转行网络安全领域,并且成为月入15K的网络工程师。那么,这个寒假的时间能学多少网络安全知识?是否能入门网络安全工程师呢? 答案是肯定的。 虽然网络完全知识是一门广泛的学科&#xff…...

六、肺癌检测-训练指标和数据增强

上一篇文章讲了训练过程和tensorboard可视化,这一篇文章记录下训练指标和数据增强的东西。 五、肺癌检测-数据集训练 training.py model.py_wxyczhyza的博客-CSDN博客 一、目标 1. 记录精度、召回率、F1分数 2. 样本均衡和样本随机化 3. 数据增强 二、要点 1…...

儿童饰品发夹发卡出口美国办理什么认证?

亚马逊美国站上传新产品,很多时候都是需要类目审核的,后台给出要求提供认证,产品类目不同,所需要提供的认证证书是不一样,儿童产品需要提交的是CPC认证,玩具,母婴用品,儿童书包&…...

Hive---Hive语法(一)

Hive语法(一) 文章目录Hive语法(一)Hive数据类型基本数据类型(与SQL类似)集合数据类型Hive数据结构数据库操作创建库使用库删除库表操作创建表指定分隔符默认分隔符(可省略 row format&#xff…...

微信小程序日记、微信小程序个人空间、个人日记

一.简述 个人比较喜欢微信小程序,因为小程序所追求的用户体验、代码质量、美观的样式,简单方便丰富的api、样式封装等,同时又与普通的前端开发非常相似,让人很容易就上手。 这篇博客介绍的是一款记录个人/家庭日常记录的微信小程…...

CentOS 8利用Apache安装部署下载服务器

1:部署的目的是做一个类似下面开源镜像网站,把一些软件或者资料上传到服务器上面,减少用户在互联网上下载资料,提高效率,减少病毒。 2:使用下面的命令配置本机的IP地址主机名等信息。后期使用IP地址进行访问…...

【数据结构与算法】顺序表增删查改的实现(动态版本+文件操作)附源码

目录 一.前言 二.顺序表 1.概念及结构 2.顺序表结构体的定义 3.初始化顺序表,销毁顺序表和打印 3.接口 a.尾插 SepListpushback 头插 SepListpushfront b.尾删 SepListpopback 头删 SepListpopfront c.查询 SepListsearch d.修改 SepListmodify 三…...

【虹科】基于Lidar的体积监控实现高效的库存管理

迄今为止,很多物料厂家测量库存的结果数据仍然不准确,会存在很大的误差,导致供应链效率低下——这个问题可以通过Lidar技术轻松解决。近年来,全球供应链的脆弱性已经多次得到证明。无论是油轮被困在苏伊士运河,阻塞海峡…...

一口吃不成ChatGPT,复旦版MOSS服务器被挤崩后续

ChatGPT 是目前最先进的 AI,由于 ChatGPT 的训练过程所需算力资源大、标注成本高,此前国内暂未出现对大众开放的同类产品。 适逢ChatGPT概念正火,2 月 21 日,复旦团队发布首个中国版类 ChatGPT 模型「MOSS」,没想到瞬时…...

html初识

HTML认知 文章目录HTML认知语法规范注释标签组成和关系标签的关系标签学习排版系列标签**标题标签****段落标签**换行标签水平线标签文本格式化标签媒体标签图片标签src 目标图片的路径alt 替换文本title 图片的标题width 宽度 / height 高度路径绝对路径相对路径(常…...

BFC的概念与作用

本篇详细介绍FC的概念,以及BFC的作用:FC的全称是Formatting Context,元素在标准流里面都是属于一个FC的.块级元素的布局属于Block Formatting Context(BFC) -也就是block level box都是在BFC中布局的; 行内…...

谷歌留痕代发技术指南_谷歌留痕怎么霸屏的?

本文主要分享谷歌留痕技术的一些常见问题,霸屏的原理是什么。 本文由光算创作,有可能会被修改和剽窃,我们佛系对待这种行为吧。 谷歌留痕也叫谷歌搜索留痕,那么谷歌搜索留痕的霸屏原理是什么? 答案是:利…...

SCG failure information

我们知道5G网络有独立组网和非独立组网,独立组网中不论是核心网还是接入网都是5G,但是部署成本高;非独立组网也就是双连接(MRDC)也是目前比较流行的一种方式,其中的ENDC,即E-UTRA-NRDual Connectivity,是将…...

Idea修改Git账号及密码的方法

IDEA修改git账号及密码的方法:1、file->settings->passwords2、重启IDEA3、执行一次提交或更新当执行提交或更新之后,idea会自动提示输入账号、密码,如下:4、以上如果还修改不了,请尝试如下方式解决办法&#xf…...

leaflet 设置右键菜单,配置相应的功能(090)

第090个 点击查看专栏目录 本示例的目的是介绍如何在vue+leaflet中设置右键菜单,配置相应的功能。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共109行)安装插件相关API参考:专栏目标示例效果 配置方式 1)…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​,覆盖应用全生命周期测试需求,主要提供五大核心能力: ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...