location rewrite

news2024/10/5 20:20:30

Nginx

location 匹配的规则和优先级

Nginx常用的变量

rewrite: 重定向功能

Location

匹配 URI
URI:统一资源的表示符,是一种字符串标识,用于标识抽象或者物理资源

先来巩固一些与location结合使用的正则表达式
正则表达式:匹配的是文件内容

元字符

. :任意单个字符,包括汉字
^:起始位置
$:结束位置
*:匹配前面的字符0次或者多次
+:匹配前面的字符一次或者多次
?:一次或0次
\:转义符
[0-9A-Za-z]:匹配0-9,A-Z,a-z.
[a]:只能匹配a.
{n}:连续重复出现几次
{n,m}:最少出现,最多出现几次
():分组
|:逻辑或

location匹配的规则 

  • = :精确匹配,完全匹配,错一个字都匹配到,必须完全一致。
  • ^~: 匹配普通字符,前缀匹配
  • ~$:结束位置
  • ~ :区分大小写的匹配
  • ~* :不区分大小写的匹配
  • !~ :区分大小写的匹配,取的逻辑非 —— 取反
  • !~* : 不区分大小写的取反

带有"~"的都表示正则表达式

location 用来匹配uri 

  • 精确匹配:location = / {...}
  • 正则匹配:location ~ / {...}
  • 一般匹配: location / {...}

location匹配规则官网 

 www.gsn.com/                                                    匹配的是A

www.gsn.com/test                                              匹配的是B

www.gsn.com/documengs/                                匹配的是C

www.gsn.com/images/                                       匹配的是D

www.gsn.com/documents/1.jpg                         匹配的是E

 

第一个规则
location = / {}
直接匹配根网站。通过域名访问网站首页是最多的。使用精确匹配,可以加快处理速度、首页。

第二个规则
location ^~ /static/
处理静态文件的请求,目录匹配

第三个规则

location ~* (gif / jpg / png / css)匹配图片用的

第四个规则——通用
location / {
proxy_pass 指定代理,反向代理,转发动态请求。.php .jsp的请求,发到后端
location /test/ {
    proxy_pass 指定代理,反向代理,转发动态请求,将“.php”".jsp"发到后端服务器
}

 

匹配的优先级

越精确,优先级越高
=  精确匹配优先级最高
~  正则次之
/   通用的优先级最低

优先级:

location =  >  location ^~  >  locatuin ~*  >  location /test/  >  location /

一旦匹配到了之后,不再向下匹配

Nginx内置变量 

$remote_addr:客户端的IP地址

$remote_port:客户端的端口号

$server_addr:服务器的IP地址。

$server_port:服务器的端口号。

$request_method:请求的HTTP方法,如GET、POST、等。


x_forwarded_for:用于获取HTTP请求头中的X-Forwarded-For字段的值。
X-Forwarded-For是一个常见的HTTP请求头,通常由代理服务器添加,用于指示原始客户端的IP地址。


proxy_set_header X-Forwarded-For $remote_addr; 这个是传给后端。
X-Real-IP:头部为客户端真实IP地址
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header指令来设置X-Real-IP头部的值为$remote_addr,即客户端的真实IP地址
这样,Nginx会将客户端的真实IP地址作为X-Real-IP头部的值传递给后端服务器。

 

 

 查看客户端端口号;服务端IP地址

扩展

$uri: 请求的URI,不包含主机和查询参数。
$request_uri: 请求的URI,包含主机和查询参数。
$args: 查询参数部分,即?后面的内容。
$query_string: 整个查询字符串,包含?。
$host: 请求的主机名。
$http_user_agent: 请求的User-Agent头信息,用于表示请求客户端浏览器和操作系统。
$http_referer: 请求的Referer头信息,表示当前页面的来源URL。
$content_type: 请求的Content-Type头信息,表示请求体的MIME类型。
$content_length: 请求的Content-Length头信息,表示请求体的长度。
$scheme: 请求的协议,通常是http或https。
$request_filename: 请求的文件名,用于指定请求的实际文件路径。
$document_root: 当前请求的根目录。
$server_name: 服务器名称,用于匹配server块的server_name指令。

 

rewrite 重定向       *面

rewrite使用NGINX的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url的重定向。

rewrite执行顺序

  • 执行server块当中的rewrite的
  • 执行location匹配
  • 如果location当中还有rewrite,继续执行

不停rewrite死循环,只能10次然后报错,报错的状态码:500

rewrite语法

rewrite <regex> <repTacemnet> [flag]

rewrite:开始重定向
regex:正则匹配的规则
replacemnet:表示跳转后的内容,你要重定向的url
flag:标志位

 

标志位

permanent:永久重定向,返回码301;永久性的变更url,搜索引擎会转移他的权重以及排名到新的URL
redirect:临时重定向,显示的返回码302;用于短期变更(网站维护,或升级更新);搜索引擎不会转移权重和排名到新的URL
304:表示获取的是本地缓存
break:是重定向但不会改变url,而且只会请求一次;跳出当前匹配,即刻终止
last:本条负责匹配完成后继续向下匹配,只要有last就继续匹配;配置的时候需要注意,防止死循环

 

扩展

以页面形式展示,却以文本格式下载如何解决?

 location / {
            root   html;
            index  index.html index.htm;   纯文本格式显示
            default_type text/plain;
            return 200 "way:$request_method";
        }

日志中如下报错:

rewrite or internal redirection cycle while processing 

#代表写成死循环一直在匹配location,10次之后返回码500

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

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

相关文章

【833. 字符串中的查找与替换】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 你会得到一个字符串 s (索引从 0 开始)&#xff0c;你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出&#xff1a;indices, sources, targets。 要完成第 i 个替换操作: 检查…

数据结构:堆的实现

1.堆的概念 如果有一个关键码的集合 K { k1 &#xff0c;k2 &#xff0c;k3 &#xff0c;…&#xff0c;kn }&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中&#xff0c;并且 k(i) < k(i*21) 和 k(i) < k(i*22)&#xff0c; i 0 &#xff…

人机融合中态、势、感、知的嵌套与级联

态、势、感、知四部分的嵌套与级联可以被看作是一种综合、协同的感知模式&#xff0c;它们相互作用并相互支持&#xff0c;共同构成了全面的态势感知能力。 "态"指的是事物或系统的状态或状况。它可以包括各种要素&#xff0c;如环境、情况、情绪等。态势感知中的“态…

vue中实现订单支付倒计时

需求 创建订单后15分钟内进行支付&#xff0c;否则订单取消。 实现 思路&#xff1a; 获取订单创建时间、在创建时间的基础上增加15分钟作为结束时间&#xff08;倒计时多久根据自己的实际需求&#xff0c;这里为15分钟&#xff09;&#xff0c;两时间戳相减获取间隔的毫秒数…

春秋云镜 CVE-2021-41947

春秋云镜 CVE-2021-41947 Subrion CMS v4.2.1 存在sql注入 靶标介绍 Subrion CMS v4.2.1 存在sql注入。 启动场景 漏洞利用 exp http://localhost/panel/visual-mode.json?getaccess&typeblocks UNION ALL SELECT username, password FROM sbr421_members -- -&o…

Vue学习之条件渲染

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>条件渲染</title><!--引入Vue--><script type"text/javascript" src"../vue.js"></script></head><body><!--…

Qt 屏幕偶发性失灵

项目场景: 基于NXP i.mx7的Qt应用层项目开发,通过goodix使用触摸屏,走i2c协议。 问题描述 触摸屏使用过程中意外卡死,现场分为多种: i2c总线传输错误,直观表现为触摸屏无效,任何与触摸屏挂接在同一总线上的i2c设备,均受到干扰,并且在传输过程中内核报错以下代码: G…

MAC环境,在IDEA执行报错java: -source 1.5 中不支持 diamond 运算符

Error:(41, 51) java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符) 进入设置 修改java版本 pom文件中加入 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin&l…

常见侧信道攻击方法

侧信道攻击方法需要采集到密码设备的能量泄露信息然后建立对应的能量消耗模型&#xff0c;之后使用特定的攻击方法来破解密钥。常见的侧信道攻击方法有简单能量&#xff08;或电磁&#xff09;攻击&#xff08;SPA&#xff09;、差分功耗&#xff08;或电磁&#xff09;攻击&am…

idea打jar包

目录 1、打包设置 2、打包介绍 3、开始打包 1、打包设置 先设置要打包的模块信息&#xff0c;即打包进去的内容。如下图所示&#xff1a;File --> Project Structure --> Artifacts&#xff0c;点击&#xff0b;号完成模块创建&#xff0c;其中有两种方式&#xff1a;…

【C++】STL---vector

STL---vector 一、vector 的介绍二、vector 的模拟实现1. 容量相关的接口&#xff08;1&#xff09;size&#xff08;2&#xff09;capacity&#xff08;3&#xff09;reserve&#xff08;4&#xff09;resize&#xff08;5&#xff09;empty 2. [] 重载3. 迭代器4. 修改数据相…

【二开】jeecgboot 开发过程方法扩展二开整理

【二开】jeecgboot 开发过程方法扩展二开整理 org.jeecg.modules.system.controller.CommonController#upload 可以二开统一文件上传 返回值增加文件大小 跟文件名称 //自定义 图片前缀savePath jeecgBaseConfig.getUploadRequestHost() savePath;if(oConvertUtils.isNotEm…

选择任务管理软件:哪个更适合你的需求?

随着互联网的发展&#xff0c;知识管理是可以成为企业获得更大发展前景的神兵利器&#xff0c;任务协同&#xff0c;是服务于中小型团队&#xff0c;或者大型机构的终端组织。来看看这款国外流行的任务管理软件Zoho Projects。 任务管理是企业协同的重要组成部分。 任务管理是企…

如何正确下载tomcat???

亲爱的小伙伴&#xff0c;千万别再去找下网站下载啦&#xff0c;这样詪容易携带病毒。 我们去官方网址下载。 Apache Tomcat - Welcome! 最后下载解压即可。。。

免费机器人来了(基于有限状态机),快来体验下

免费有限状态机机器人来了,快来体验下 51jiqiren.cn 五分钟就可以完成一个简单的机器人. 懂json的同学可以自定义状态和状态跳转,完成复杂的业务流程. 更多功能还在开发中. 网站右下角点"联系客服"截图: 弹出来了: 后端管理界面: 有限状态机界面: 数据界面: 在网…

论文复现--关于单视角动作捕捉工具箱--MMHuman3d的研究(基于Windows10和Linux18.04中配置)

分类&#xff1a;动作捕捉 github地址&#xff1a;https://github.com/open-mmlab/mmhuman3d 所需环境&#xff1a; Windows10&#xff0c;CUDA11.6&#xff0c;conda 4.13.0&#xff0c;Visual Studio 2017&#xff1b; Ubuntu18.04&#xff0c;conda22.9.0&#xff0c;CUDA11…

企业网盘 vs 传统存储设备:为何云存储成为首选?

企业网盘的出现为企业提供了新的存储方式&#xff0c;相较于传统的存储设备&#xff0c;为何越来越多的企业选择了云存储呢&#xff1f; 一、存储成本 在企业数据存储方面&#xff0c;成本是企业重要的考量因素。企业网盘是基于云存储技术的存储工具&#xff0c;因此它比传统的…

算法(第4版)练习题 1.1.27 的三种解法

本文列举了对于 算法 : 第4版 / (美) 塞奇威客 (Sedgewick, R.) , (美) 韦恩 (Wayne, K.) 著 ; 谢路云译. -- 北京 : 人民邮电出版社, 2012.10 (2021.5重印)&#xff08;以下简称原书或书&#xff09;中的练习题 1.1.27 的三种解法&#xff08;C 实现&#xff09;&#xff0c;并…

朴素贝叶斯(右心室肥厚的辅助识别)

现在我们判断右心室是否肥厚通常的做法都是借助心电图来识别&#xff0c;左侧的是右心室肥厚的&#xff0c;右侧的是右心室厚度正常&#xff0c;那接下来就要按照给出的图像来处理特征&#xff0c;提取出正常组和肥厚组的不同特征。 根据上图我们可以得出通过图像提取出了年龄…

〔AI 绘画〕Stable Diffusion 之 VAE 篇

✨ 目录 &#x1f388; 什么是VAE&#x1f388; 开启VAE&#x1f388; 下载常见的VAE&#x1f388; 对比不同VAE生成的效果 &#x1f388; 什么是VAE VAE&#xff1a;是 Variational Auto-Encoder 的简称&#xff0c;也就是变分自动编码器可以把它理解成给图片加滤镜&#xff…