location rewrite
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就继续匹配;配置的时候需要注意,防止死循环
扩展
以页面形式展示,却以文本格式下载如何解决?

日志中如下报错:
rewrite or internal redirection cycle while processing
#代表写成死循环一直在匹配location,10次之后返回码500
相关文章:
location rewrite
Nginx location 匹配的规则和优先级 Nginx常用的变量 rewrite: 重定向功能 Location 匹配 URI URI:统一资源的表示符,是一种字符串标识,用于标识抽象或者物理资源 先来巩固一些与location结合使用的正则表达式 正则表达式:匹…...
XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串
前言 今天用到XLSX来解析excel文件,调用XLSX.utils.sheet_to_json(worksheet),发现如果单元格为空的话,解析出来的结果,就会缺少相应的key(如图所示)。但是我想要单元格为空的话,值就默认给空字…...
安装Docker(Linux:CentOS)
大家好我是苏麟今安装一下Docker. 安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stab…...
2310月问题描述
apt包管理 修改apt目录,不存在apt.conf文件,但是存在apt.conf.d目录,如何修改apt的安装目录 apt-get 命令是 Ubuntu 系统中的包管理工具,可以用来安装、卸载包,也可以用来升级包,还可以用来把系统升级到新的版本。 语法格式&…...
y _hat[ [ 0, 1], y ]语法——pytorch张量花式索引
目录 1. y _hat[ [ 0, 1]例子 2.pytorch花式索引 (1)简单行、列索引 (2)列表索引 (3)范围索引 (4)布尔索引 (5)多维索引 3.张量拼接 (1…...
高级岗位面试问题
自我介绍 【我是谁】 、【我做过什么】、【我会什么】 面试官您好,我叫xxx,来自江西。20XX年毕业于XXXXX大学,已有X年软件测试工作经验,之前在XX家公司担任测试工程师 最近一家公司我主要负责了两个项目的测试,分别为XXXXX的编写,测试用例的设计,测试环境的搭建以及测…...
区块链游戏的开发框架
链游(Blockchain Games)是基于区块链技术构建的游戏。它们与传统游戏有一些显著不同之处,因此需要特定的开发框架和工具。以下是一些用于链游开发的开发框架及其特点,希望对大家有所帮助。北京木奇移动技术有限公司,专…...
Windows Nginx 服务器部署(保姆级)
大家好 我是寸铁 不知道怎么部署Windows Nginx 服务器看过来 手把手带你部署服务器 将你的本地网页部署到服务器上 话不多说,直接上操作!!! Windows Nginx服务器部署 进入下载地址: http://nginx.org/en/download.h…...
常用的Linux命令及其用法
常用的Linux命令及其用法 1. ls:列出文件和目录 ls命令用于列出当前目录中的文件和子目录。通过不同的选项,可以显示详细信息、隐藏文件等。 示例: ls -l ls -a2. cd:切换工作目录 cd命令用于切换当前工作目录。通过指定目标…...
linux总结
cat -n filename 查看文件,-n用来给每一行标行号,可以省略 cat /var/log/mysqld.log | grep password 我们可以通过上述指令,查询日志文件内容中包含password的行信息。 more 作用: 以分页的形式显示文件内容 语法: more fileName 操作说明: 回车键 …...
java - 设计模式 - 状态模式
文章目录 前言java - 设计模式 - 状态模式1. 概述2. 作用3. 示例 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每天的运气都不会太差,实在白嫖的话…...
c/c++--编译指令(预处理之后) #pragma
1. #pragma 作用 #pragma 用于指示编译器完成一些特定的动作#pragma 的功能或作用 随编译器不同而变化。 即 不同的编译器可能以不同的方式解释同一条 #pragma 指令 2. 用法 常见用法示例 2.1 #pragma message 参考链接 自定义编译信息输出到终端(一般和#if配合使用&#…...
黑马JVM总结(三十二)
(1)类加载器-线程上下文1 使用的应用程序类加载器来完成类的加载,不是用的启动类加载器,jdk在某些情况下要打破,双亲委派的模式,有时候需要调用应用程序类加载器来完成类的加载,否则有些类它是找…...
接口自动化测试框架【reudom】
reudom Automated testing framework based on requests and unittest interface. 基于 Unittest 和 Requests 的 接口自动化测试框架 介绍 基于Unittest/Requests的接口自动化测试库 提供脚手架,快速生成接口自动化测试项目。 自动生成HTML测试报告。 支持用例参…...
【数据库问题】删除数据库失败,提示:there is 1 other session using the database
删除数据库失败,提示:there is 1 other session using the database 解决办法: SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datnametest_database AND pid<>pg_backend_pid(); 使用上述命令先关…...
【技术干货】如何快速创建商用照明 OEM APP?
本文介绍了如何在涂鸦 IoT 平台的 App 工作台上创建一款体验版商照 App、正式版 OEM App、上架 App、以及完成通用配置。 OEM App 开发 创建 App 登录 涂鸦 IoT 平台的 App 页面。 单击 创建APP,选择 商照 APP 进行创建。 在提示框里,完善 App 信息…...
阿里云ModelScope 是一个“模型即服务”(MaaS)平台
简介 项目地址:https://github.com/modelscope/modelscope/tree/master ModelScope 是一个“模型即服务”(MaaS)平台,旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。ModelScope库使开发人员能够通过丰富的…...
Nodejs内置模块process
文章目录 内置模块process写在前面1. arch()2. cwd()3. argv4. memoryUsage()5. exit()6. kill()7. env【最常用】 内置模块process 写在前面 process是Nodejs操作当前进程和控制当前进程的API,并且是挂载到globalThis下面的全局API。 下面是process的一些常用AP…...
Vue2 修改了数组哪些方法,为什么
1、Vue2 修改了以下数组方法 push()、pop()、shift()、unshift()、splice()、sort()、reverse() 这些方法都是可以改变原数组的。 为了实现数据响应式更新,Vue2 在这些方法中添加了特定的代码,以便通知 Vue 视图更新数据 举个例子,当我们…...
均值滤波算法及例程
均值滤波算法是一种简单的图像滤波方法,它使用一个固定大小的滤波器来平滑图像。该滤波器由一个矩形的窗口组成,窗口中的像素值取平均值作为中心像素的新值。以下是均值滤波算法的步骤: 定义滤波器的大小(窗口大小)&a…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...



