nginx rewrite地址重写

常用的nginx正则表达式

^匹配以...开头的字符串
$匹配以...结尾的字符串
^$^$表示空行
*匹配前面的字符0次或者多次(通配符*表示任意数量的任意字符)
+匹配前面的字符1次或多次
?匹配前面的字符0次或1次
.匹配除了“\n”之外的任意单个字符,[.\n]表示匹配包括“\n”在内的任意字符
.*匹配前面的任意1个字符,字符可以不存在
.+匹配前面的任意1个字符,字符必须存在
\将后面接着的字符记为一个特殊字符或者一个原意字符或一个向后引用
\n匹配换行符 
\t匹配制表符
\r匹配回车符
\d匹配纯数字
\w 匹配任意字母、数字或下划线
\s匹配任意空白符
{n}表示匹配前面的字符n次
{n,}匹配前面的字符至少n次
{n,m}匹配前面的字符n-m次
|表示或
()表示表达式整体

location和rewrite的区别

  • location 通过前缀或正则匹配用户的URL访问路径做页面跳转、访问控制和代理转发
  • rewrite 对用户的URL访问路径进行重写,再重定向跳转访问重写后的路径http://www.xy101.com/scj.jgp  ->  http://www.xy101.com/error.png

一、location

1.location常用匹配类型

精准匹配、一版匹配、正则匹配

  • location  URL路径       一般前缀匹配
  • location = URL路径      精准匹配
  • location ^~ URL路径     前缀匹配
  • location ~ URL路径      正则匹配,区分大小写
  • location ~* URL路径     正则匹配,不分区大小写
  • location !~ URL路径     正则匹配取反
  • location !~* URL路径    正则匹配取反,不分区大小写

2.location匹配机制

优先级:精准匹配 =  >  最长前缀匹配 ^~  >  正则匹配 ~ ~* !~ !~*  >  一般前缀匹配 /XXXX  >  通用匹配 /

在没有合适的精准匹配的情况下,先看前缀匹配的长度,取最长匹配的location(如果此最长匹配是带有^~的则不再看正则匹配;如果此最长匹配是不带有^~的则会继续再看正则匹配)。

3.实际工作中三大匹配规则

1.网站首页匹配

location = / {
    root 网页根目录;
    index index.html;
}

2.网站静态页面,通过前缀匹配或通用匹配在nginx服务器本地处理

location ~ /static/ {
    root 目录;
}

location / {
    root 目录;
}

3.网站动态页面,通过匹配不同的动态网页文件后缀转发给不同的后端应用服务器处理

location \.php$ {
    fastcgi_pass PHP服务器地址:端口;
}

location \.jsp$ {
    proxy_pass TOMCAT服务器地址:端口;
}
 

二、rewrite

1.rewrite格式

rewrite  正则表达式  重写的地址  [标记位];

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

2.rewrite默认情况下只对从域名后面的根目录 / 开始到传递参数的 ? 号前面的URL路径进行重写

#默认只对域名后面的URL部分重写
rewrite 正则表达式 /新URL;    http://域名/旧URL  ->  http://域名/新URL  

#如果需要全域名路径重写需要加上协议和域名
rewrite 正则表达式 http://新域名/新URL;       http://旧域名/旧URL  ->  http://新域名/新URL;        

http://域名/旧URL  --rewrite重写-->  http://域名/新URL -->  location匹配新URL路径跳转页面

rewrite 正则表达式 /新URL  permanent;     #重写后会修改浏览器里的地址栏再重新访问

http://域名/旧URL  --rewrite重写-->  http://域名/新URL --> 浏览器地址栏也会改为 http://域名/新URL 再发起一次访问请求 -->  location匹配新URL路径跳转页面


location ~ URL路径正则表达式 {
    rewrite  正则表达式  重写的地址  [标记位];
}
    
	$request_uri
if ($uri ~ URL路径正则表达式) {
    rewrite  正则表达式  重写的地址  [标记位];
}


3. 习题

(1)将请求http://www.xy101.com/abc/123.html 跳转到首页http://www.xy101.com
(2)将请求http://www.xy101.com/abc/test.jpg 跳转到http://www.xy101.com/error.png
(3)将请求http://www.xy102.com/discuz/index.php 跳转到http://www.xy101.com/discuz/index.php ,保证原域名后面的uri路径不变
(4)将请求http://discuz.xy101.com/index.php 的访问跳转到http://www.xy101.com/discuz/index.php ,保证原域名后面的uri路径不变
(5)将对http://www.xy101.com 网站的所有请求跳转到自定义的维护页面或图片,本地可以访问

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

两种AI 图像生成技术:MidJourney 和 Stable Diffusion

目录 1、MidJourney1.1 MidJourney基本特点1.2 MidJourney的玩法教程 2、Stable Diffusion2.1 Stable Diffusion基本特点:2.2 Stable Diffusion生成展示 3、两种技术的区别4、AI 绘画与它们的联系5、总结 MidJourney 和 Stable Diffusion 是当前两种流行的 AI 图像生…

最短路:spfa算法

最短路&#xff1a;spfa算法 题目描述参考代码![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3be484da34a84911a0a7dab3f1d84945.png) 题目描述 参考代码 输入示例 3 3 1 2 5 2 3 -3 1 3 4输出示例 2#include <iostream> #include <cstring> #inc…

每天五分钟计算机视觉:如何在现有经典的卷积神经网络上进行微调

本文重点 在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)因其强大的特征提取和分类能力而广泛应用于图像识别、自然语言处理等多个领域。然而,从头开始训练一个CNN模型往往需要大量的数据和计算资源,且训练时间较长。幸运的是,迁移学习(Transfer Le…

【电子通识】焊接常见的不良有哪些?

在焊接完成后的调试阶段&#xff0c;有时总会发生一些奇怪的异常。也许是因为在焊接过程中出现了一些莫名其妙的焊接缺陷&#xff0c; 这些焊接缺陷产生的原因各不相同。 在实际的SMT贴片加工或插件焊接中&#xff0c;我们一般会采取一些方法来避免这些焊接不良的现象。那么常见…

247 H指数

法一&#xff1a; 不进行排序&#xff0c;直接依照原数组进行解&#xff0c;先假设h为1&#xff0c;然后找引用超过1篇的论文数量&#xff0c;如果满足&#xff0c;则再假设h为2。这样比较慢&#xff0c;时间复杂度为o(n方)。 int hIndex(vector<int>& citations) {…

我的编程语言学习记录:一段不断探索的旅程

目录 我的编程语言学习记录&#xff1a;一段不断探索的旅程 1.引言 2.我的编程之旅开始 第一站&#xff1a;Python — 简洁之美 第二站&#xff1a;JavaScript — 网页的魔法 第三站&#xff1a;Java — 企业级的力量 3.学习过程中的挑战与克服 1.理解概念 3.记忆语法…

Linux命令详解(1)

在Linux操作系统中&#xff0c;命令行界面&#xff08;CLI&#xff09;是一个强大的工具&#xff0c;它允许用户通过键入命令来与系统交互。无论是系统管理员还是普通用户&#xff0c;掌握一些基本的Linux命令都是非常重要的。在本文中&#xff0c;我们将探讨一些常用的Linux命…

文字悬停效果

文字悬停效果 效果展示 CSS 知识点 CSS 变量使用回顾-webkit-text-stroke 属性的运用与回顾 页面整体结构实现 <ul><li style"--clr: #e6444f"><a href"#" class"text">First</a></li><li style"--cl…

简单脉冲动画效果实现

简单脉冲动画效果实现 效果展示 CSS 知识点 CSS 变量的灵活使用CSS 动画使用 页面整体结构实现 <div class"pulse"><span style"--i: 1"></span><span style"--i: 2"></span><span style"--i: 3"…

「Java开发指南」如何使用Spring注释器实现Spring控制器?(一)

本教程将引导您使用Spring Annotator实现Spring控制器&#xff0c;标准Java类被添加到搭建项目中&#xff0c;Spring Annotator Spring启用Java类。 虽然本教程的重点是Spring控制器&#xff0c;但是Spring Annotator也可以用于Spring服务、组件和存储库。在本教程中&#xff…

机器学习分类及算法

1. 深度学习 1.1学习算法 1.2基本术语和概念 1.3机器学习分类常用算法 1.3.1线性回归 1.3.2逻辑回归 1.3.3决策树 1.3.4支持向量机SVM 1.3.5朴素贝叶斯 1.1.1.5K近邻KNN 还有 聚类&#xff08;k-means&#xff09;、随机森林等 1.4超参数和验证集 1.4.1参数估计 1.4.1.1最大似然…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(二)

主要内容介绍可tmux和vim的一些常用操作&#xff0c;可以当作笔记需要的时候进来查就行。 文章目录 前言 一、tmux和vim 二、Linux系统基本命令 1.tmux教程 2. vim教程 3.练习 总结 前言 主要内容介绍可tmux和vim的一些常用操作&#xff0c;可以当作笔记需要的时候进来查就行…

bugku---misc---ping

1、下载附件&#xff0c;解压后是一个流量包 2、用wireshark分析&#xff0c;发现都是清一色的icmp报文&#xff0c;只能看看内容。 3、点了几条流量&#xff0c;发现有个地方连起来是flag 4、最终将所有的拼起来&#xff0c;得到flag flag{dc76a1eee6e3822877ed627e0a04ab4a}…

微调技术:人工智能领域的神奇钥匙

在人工智能的浪潮中&#xff0c;深度学习技术凭借其强大的数据处理和学习能力&#xff0c;已成为推动科技进步的重要引擎。然而&#xff0c;深度学习模型的训练往往需要大量的数据和计算资源&#xff0c;这在某些特定场景下成为了限制其发展的瓶颈。为了解决这个问题&#xff0…

元宇宙数字化3D虚拟展馆

随着科技的飞速发展&#xff0c;我们迎来了一个全新的时代——元宇宙时代。在这个充满无限可能的虚拟世界中&#xff0c;元宇宙数字展馆搭建编辑器应运而生&#xff0c;以其卓越的技术和创新的理念&#xff0c;为用户带来了前所未有的沉浸式展览体验。 元宇宙数字展馆搭建编辑器…

阅文集团CEO侯晓楠:建立10亿生态扶持基金,为好内容搭建舞台

6月12日&#xff0c;由安徽省文化和旅游厅、安徽省文学艺术界联合会、黄山市人民政府指导&#xff0c;阅文集团、黄山旅游发展股份有限公司主办的2024阅文创作大会在黄山召开。 据「TMT星球」了解&#xff0c;大会总结了过去一年阅文在“AIIP”业务升级思路下创作生态和IP领域…

DNS协议分析实验:通过一次下载任务抓包分析

DNS协议分析 一、实验简介 本实验主要讲解DNS协议的应用&#xff0c;通过一次ping任务&#xff0c;抓取DNS协议数据报文&#xff0c;对DNS解析的请求和相应报文进行详细的分析。 二、实验目标 1&#xff0e;了解运输层DNS协议基本概念、报文结构&#xff1b; 2&#xff0e;…

LeetCode 算法: 旋转图像c++

原题链接&#x1f517;&#xff1a; 旋转图像 难度&#xff1a;中等⭐️⭐️ 题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图…

全球首创4090推理!昆仑万维开源Skywork-MoE模型

昆仑万维近期宣布开源了其2千亿参数规模的稀疏大模型Skywork-MoE。这个模型是基于他们之前开源的Skywork-13B模型中间checkpoint扩展而来的&#xff0c;并且宣称是首个完整应用MoE Upcycling技术的开源千亿MoE大模型。此外&#xff0c;它也是首个支持使用单台RTX 4090服务器&am…

Spring框架是如何查找方法上的异步任务注解@Async

结论先行 Spring框架层面&#xff0c;查找方法上的注解的原理与机制是一样的。 在方法层面&#xff0c;Spring框架已经找到子类的Async注解&#xff0c;原因是查找注解会搜索整棵类型继承树&#xff0c;包括超类和实现的接口。 异步任务代码示例 Async注解&#xff0c;在父类…