Nginx跳转模块之rewrite

一.location与rewrite模块的区别

rewrite:对访问的域名或者域名内的URL路径地址重写
location:对访问的路径做访问控制或者代理转发

二.rewrite模块基本内容

1.功能

通过正则表达式的匹配来改变URI,可以同时存在一个或多个指令,按照顺序依次对URI进行匹配,rewrite主要是针对用户请求的URL或者是URI做具体处理

2.跳转场景

Rewrite 跳转场景主要包括以下几种

(1)可以调整用户浏览的 URL,看起来更规范,合乎开发及产品人员的需求
(2)为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态 URL 地址伪装成静态地址提供服务
(3)网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的 360buy.com会跳转到 jd.com
(4)根据特殊变量、目录、客户端的信息进行 URL 调整等。

3.跳转实现

(1)Nginx:通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断,但不支持else
(2)跳转:从一个 location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误
(3)从一个 location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误
(4)重写模块 set 指令:创建新的变量并设其值

4.执行顺序

首先  执行 server 块里面的 rewrite 指令。
其次  执行 location 匹配。
最后  执行选定的 location 中的 rewrite 指令

5.格式

rewrite <regex> <replacement> [flag];
regex :表示正则匹配规则。
replacement :表示跳转后的内容。
flag :表示 rewrite 支持的 flag 标记。

flag标记说明

(1)last :本条规则匹配完成后,不终止重写后的url匹配,一般用在 server 和 if 中。
(2)break :本条规则匹配完成即终止,终止重写后的url匹配,一般使用在 location 中。
(3)redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址。
(4)permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。

三.rewrite实验

1.基于域名跳转

现在公司旧域名www.6.com有业务需求变更,需要使用新域名www.9.com代替,但是旧域名不能废除,需要跳转到新域名上,而且后面的参数保持不变。
(1)修改主配置文件
vim /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  www.6.com;										#域名修改	charset utf-8;access_log  /var/log/nginx/www.6.com-access.log;		        #日志修改location / {													#添加域名重定向if ($host = 'www.6.com'){									#$host为rewrite全局变量,代表请求主机头字段或主机名rewrite ^/(.*)$ http://www.9.com/$1 permanent;		#$1为正则匹配的内容,即域名后边的字符串}root   html;index  index.html index.htm;}
}

(2)创建所需目录与文件
#创建日志文件夹,检查语法
mkdir -p /var/log/nginx
nginx -t#创建网页test目录与文件1.html
mkdir -p /usr/local/nginx/html/test
vim /usr/local/nginx/html/test/1.html
------------------------------------------
<h1 font color=red>
Here is the content of test
<img src="1.jpg"/>
</h1
-------------------------------------------#上传1.jpg图片文件
cd /usr/local/nginx/html/test
rz -E

(3)添加域名与IP地址映射关系
#添加映射关系
echo "192.168.227.100 www.6.com www.9.com" >> /etc/hosts#重启服务
systemctl restart nginx					

(4)网页验证
#打开浏览器输入
www.6.com/test/1.html会发现重定向到www.9.com/test/1.html

2.基于客户端IP访问跳转

公司业务新版本上线,要求所有 IP 访问任何内容都显示一个固定维护页面,只有公司 IP :192.168.227.100访问正常。
(1)修改主配置文件
vim /usr/local/nginx/conf/nginx.conf
--------------------------------------------------------------
server {listen       80;server_name  www.6.com;												#域名修改	charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;				#日志修改#设置是否合法的IP标记set $rewrite true;							#设置变量$rewrite,变量值为boole值true#判断是否为合法IPif ($remote_addr = "192.168.227.100"){		#当客户端IP为192.168.80.200时,将变量值设为false,不进行重写set $rewrite false;}#除了合法IP,其它都是非法IP,进行重写跳转维护页面if ($rewrite = true){						#当变量值为true时,进行重写rewrite (.+) /weihu.html;				#重写在访问IP后边插入/weihu.html,例如192.168.80.11/weihu.html}location = /weihu.html {root /var/www/html;						#网页返回/var/www/html/weihu.html的内容}location / {root   html;index  index.html index.htm;}
}

(2)设置维护界面并重启服务
mkdir -p /var/www/html/
vim /var/www/html/weihu.html
-----------------------------------
<h1>
Sorry!
We are busy now!
See you tomorrow!
</h1>
-----------------------------------systemctl restart nginx

(3)网页验证
#本机网页浏览器输入
www.6.com
访问应正常#在其他设备浏览器访问测试首先修改映射文件
echo "192.168.277.100 www.6.com" >>/etc/hosts#浏览器测试
www.6.com

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

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

相关文章

第九节HarmonyOS 常用基础组件26-Radio

1、描述 单选框&#xff0c;提供相应的用户交互选择项。 2、接口 Radio(options:{value:string, group:string}) 3、参数 参数名 参数类型 必填 描述 value string 是 当前单选框的值。 group string 是 当前单选框的所属组名称&#xff0c;相同group的Radio只能…

AI误导游戏——LLM的危险幻觉

在当今科技高速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为日常生活和工作中不可或缺的一部分。特别是大语言模型&#xff08;LLM&#xff09;如GPT-4等&#xff0c;它们的智能表现令人惊叹&#xff0c;广泛应用于文本生成、语言翻译、情感分析等多个领域…

重大更新:GPT-4 API 现全面向公众开放!

重大更新&#xff1a;GPT-4 API 现全面向公众开放&#xff01; 在 AIGC&#xff08;人工智能生成内容&#xff09;领域内&#xff0c;我们一直致力于跟踪和分析如 OpenAI、百度文心一言等大型语言模型&#xff08;LLM&#xff09;的进展及其在实际应用中的落地情况。我们还专注…

浅谈密码学

文章目录 每日一句正能量前言什么是密码学对称加密简述加密语法Kerckhoffs原则常用的加密算法现代密码学的原则威胁模型&#xff08;按强度增加的顺序&#xff09; 密码学的应用领域后记 每日一句正能量 人生在世&#xff0c;谁也不能做到让任何人都喜欢&#xff0c;所以没必要…

数据结构——链表OJ题

目录 1.给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 2.给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点…

LeetCode 102. 二叉树的层序遍历

题目链接https://leetcode.cn/problems/binary-tree-level-order-traversal/description/ 通过队列实现层序遍历 class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res new ArrayList<>();Queue<…

【实战篇】Redis单线程架构的优势与不足

前言 01 Redis中的多线程02 I/O多线程03 Redis中的多进程问题 04 结论 很多人都遇到过这么一道面试题&#xff1a;Redis是单线程还是多线程&#xff1f;这个问题既简单又复杂。说他简单是因为大多数人都知道Redis是单线程&#xff0c;说复杂是因为这个答案其实并不准确。 难道R…

易宝OA DownloadFile 任意文件读取漏洞复现

0x01 产品简介 易宝OA系统是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台,具有信息管理、 流程管理 、知识管理(档案和业务管理)、协同办公等多种功能。 0x02 漏洞概述 易宝OA系统DownloadFile接口处存在任意文件读取漏洞,未授权的攻击者可以利用此漏洞…

java集合--List集合的基本用法

一、ArrayList集合 1.ArrayList集合的特点 2.ArrayList集合的一些方法 ①.add(Object element) 向列表的尾部添加指定的元素。 ②.size() 返回列表中的元素个数。 ③.get(int index) 返回列表中指定位置的元素&#xff0c;index从0开始。 public class Test {public static …

【Docker】构建pytest-playwright镜像并验证

Dockerfile FROM ubuntu LABEL maintainer "langhuang521l63.com" ENV TZAsia/Shanghai #设置时区 #安装python3依赖与下载安装包 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \&& apt update \&&…

大模型+影像:智能手机“上春山”

这个春节假期&#xff0c;一首《上春山》火了。吃瓜群众热热闹闹学了一个假期的“春山学”&#xff0c;了解了抢占C位的各种技巧。 假期过去&#xff0c;开工大吉&#xff0c;手机行业开始抢占今年的C位。那么问题来了&#xff0c;今年智能手机最大的机会点在哪里&#xff1f;答…

C++ string常见用法 + 练手习题

部分内容摘抄自http://t.csdnimg.cn/BM0jO 目录 温故&#xff1a;C库函数中和字符串有联系的函数知新&#xff1a;C string常见用法string的初始化 1.常见初始化方式string对象的操作 1.用cin获取键盘输入的值 2.用getline读取一整行 3.string对…

布隆过滤器笔记

课程地址 布隆过滤器由一个很长的二进制向量和一系列哈希函数组成 特性&#xff1a;布隆过滤器可以告诉我们 “某样东西一定不存在或者可能存在”&#xff0c;也就是说布隆过滤器说这个数不存在则一定不存在&#xff0c;布隆过滤器说这个数存在可能不存在。这个特性能很好地被…

如何避免软件测试的遗漏或重复?

在实际软件测试中&#xff0c;经常遇到遗漏测试点&#xff0c;测试不充分&#xff1b;或者重复测试&#xff0c;造成资源浪费的情况。因此如何避免软件测试遗漏或重复&#xff0c;非常重要。 1、实施过程 首先&#xff0c;通过梳理某个领域的相关项目&#xff0c;分析相关业务规…

【鸿蒙 HarmonyOS 4.0】UIAbility、页面及组件的生命周期

一、背景 主要梳理下鸿蒙系统开发中常用的生命周期 二、UIAbility组件 UIAbility组件是一种包含UI界面的应用组件&#xff0c;主要用于和用户交互。 UIAbility组件是系统调度的基本单元&#xff0c;为应用提供绘制界面的窗口&#xff1b;一个UIAbility组件中可以通过多个页…

STL用法

参考原文&#xff1a;C中STL用法超详细总结&#xff08;收藏级&#xff09; - 知乎 1 什么是STL&#xff1f; STL&#xff08;Standard Template Library&#xff09;&#xff0c;即标准模板库&#xff0c;是一个具有工业强度的&#xff0c;高效的C程序库。它被容纳于C标准程…

【Python笔记-设计模式】前端控制器模式

一、说明 常作为MVC&#xff08;Model-View-Controller&#xff09;模式的一部分&#xff0c;用来处理用户请求并将其分发给相应的处理程序&#xff08;即路由匹配&#xff09;。 (一) 解决问题 将请求的处理流程集中管理&#xff0c;统一处理所有的请求 (二) 使用场景 需…

HTML5技术实现的小钢琴

HTML5技术实现的小钢琴 用HTML5实现的小钢琴&#xff0c;按下钢琴键上的相应字母用或用鼠标点击钢琴键发声&#xff0c;源码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"v…

数据库管理-第154期 Oracle Vector DB AI-06(20240223)

数据库管理154期 2024-02-23 数据库管理-第154期 Oracle Vector DB & AI-06&#xff08;20240223&#xff09;1 环境准备创建表空间及用户TNSNAME配置 2 Oracle Vector的DML操作创建示例表插入基础数据DML操作UPDATE操作DELETE操作 3 多Vector列表4 固定维度的向量操作5 不…

【MATLAB】 EWT信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 EWT分解算法 EWT分解算法是一种基于小波变换的信号分解算法&#xff0c;它可以将信号分解为一系列具有不同频率特性的小波分量。该算法的基本思想是将信号分解为多个不同尺度的小波分量&#xff0c;并对…