Nginx的location和rewrite配置语法

Nginx配置文件中location配置 nginx中location配置/ 阅读详情

本文内容来源于《Nginx HTTP Server》的中文版《学习Nginx HTTP Server中文版》。


在Nginx 的 fastcgi的配置中,常用到Location和Rewrite。


 Nginx 的 Location 总结如下:


nginx 配置文件,自下到上分为三种层次分明的结构:
 |    http block        the protocol level
 |    server block        the server level
 V    location block        the requested URI

Nginx 允许用户定义 Location block ,并指定一个匹配模式(pattern)匹配特定的 URI。除了简单的字符串(比如文件系统路径),还允许使用更为复杂的匹配模式(pattern)。
Location block 的基本语法形式是:
    location [=|~|~*|^~|@] pattern { ... }
[=|~|~*|^~|@] 被称作 location modifier ,这会定义 Nginx 如何去匹配其后的 pattern ,以及该 pattern 的最基本的属性(简单字符串或正则表达式)。

------- 关于 location modifier -------
1. =
这会完全匹配指定的 pattern ,且这里的 pattern 被限制成简单的字符串,也就是说这里不能使用正则表达式。
Example:
server {
    server_name website.com;
    location = /abcd {
    […]
    }
}
匹配情况:
    http://website.com/abcd        # 正好完全匹配
    http://website.com/ABCD        # 如果运行 Nginx server 的系统本身对大小写不敏感,比如 Windows ,那么也匹配
    http://website.com/abcd?param1&param2    # 忽略查询串参数(query string arguments),这里就是 /abcd 后面的 ?param1&param2
    http://website.com/abcd/    # 不匹配,因为末尾存在反斜杠(trailing slash),Nginx 不认为这种情况是完全匹配
    http://website.com/abcde    # 不匹配,因为不是完全匹配

2. (None)
可以不写 location modifier ,Nginx 仍然能去匹配 pattern 。这种情况下,匹配那些以指定的 patern 开头的 URI,注意这里的 URI 只能是普通字符串,不能使用正则表达式。
Example:
server {
    server_name website.com;
    location /abcd {
    […]
    }
}
匹配情况:
    http://website.com/abcd        # 正好完全匹配
    http://website.com/ABCD        # 如果运行 Nginx server 的系统本身对大小写不敏感,比如 Windows ,那么也匹配
    http://website.com/abcd?param1&param2    # 忽略查询串参数(query string arguments),这里就是 /abcd 后面的 ?param1&param2
    http://website.com/abcd/    # 末尾存在反斜杠(trailing slash)也属于匹配范围内
    http://website.com/abcde    # 仍然匹配,因为 URI 是以 pattern 开头的

3. ~
这个 location modifier 对大小写敏感,且 pattern 须是正则表达式
Example:
server {
    server_name website.com;
    location ~ ^/abcd$ {
    […]
    }
}
匹配情况:
    http://website.com/abcd        # 完全匹配
    http://website.com/ABCD        # 不匹配,~ 对大小写是敏感的
    http://website.com/abcd?param1&param2    # 忽略查询串参数(query string arguments),这里就是 /abcd 后面的 ?param1&param2
    http://website.com/abcd/    # 不匹配,因为末尾存在反斜杠(trailing slash),并不匹配正则表达式 ^/abcd$
    http://website.com/abcde    # 不匹配正则表达式 ^/abcd$
注意:对于一些对大小写不敏感的系统,比如 Windows ,~ 和 ~* 都是不起作用的,这主要是操作系统的原因。

4. ~*
与 ~ 类似,但这个 location modifier 不区分大小写,pattern 须是正则表达式
Example:
server {
    server_name website.com;
    location ~* ^/abcd$ {
    […]
    }
}
匹配情况:
    http://website.com/abcd        # 完全匹配
    http://website.com/ABCD        # 匹配,这就是它不区分大小写的特性
    http://website.com/abcd?param1&param2    # 忽略查询串参数(query string arguments),这里就是 /abcd 后面的 ?param1&param2
    http://website.com/abcd/    # 不匹配,因为末尾存在反斜杠(trailing slash),并不匹配正则表达式 ^/abcd$
    http://website.com/abcde    # 不匹配正则表达式 ^/abcd$

5. ^~
匹配情况类似 2. (None) 的情况,以指定匹配模式开头的 URI 被匹配,不同的是,一旦匹配成功,那么 Nginx 就停止去寻找其他的 Location 块进行匹配了(与 Location 匹配顺序有关)

6. @
用于定义一个 Location 块,且该块不能被外部 Client 所访问,只能被 Nginx 内部配置指令所访问,比如 try_files or error_page

------- 搜索顺序以及生效优先级 -------
因为可以定义多个 Location 块,每个 Location 块可以有各自的 pattern 。因此就需要明白(不管是 Nginx 还是你),当 Nginx 收到一个请求时,它是如何去匹配 URI 并找到合适的 Location 的。
要注意的是,写在配置文件中每个 Server 块中的 Location 块的次序是不重要的,Nginx 会按 location modifier 的优先级来依次用 URI 去匹配 pattern ,顺序如下:
    1. =
    2. (None)    如果 pattern 完全匹配 URI(不是只匹配 URI 的头部)
    3. ^~
    4. ~ 或 ~*

    5. (None)    pattern 匹配 URI 的头部



 Nginx 的 Rewirte 同样非常有用,可以用来重定向到其他的location,具体可以阅读《学习Nginx HTTP Server中文版》的Rewrite章节,此处忽略。


14、5G物理层的灵活解决方案:广义频分复用(GFDM) 广义频分复用(GFDM)作为一种高度灵活的5G物理层多载波调制方案,能够满足多样化应用场景的需求,包括高吞吐量的比特管道通信、低功耗高连接数的物联网、超低延迟的触觉互联网以及广覆盖的无线区域网。通过参数化配置,GFDM可适配LTE资源网格,实现与现有系统的兼容与共存。其支持多种解调方式、干扰消除技术、OQAM映射及预编码机制,兼具低带外发射、高频谱效率和强鲁棒性。GFDM还能统一描述OFDM、FBMC、FTN等多种经典与先进波形,成为5G及未来通信系统中极具潜力的通用波形框架。 阅读详情

相关推荐

Kimi K3大模型API实战:从调用到本地知识库问答系统构建

大语言模型(LLM)作为人工智能的核心技术,通过海量数据训练获得理解和生成自然语言的能力。其工作原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系。这项技术的核心价值在于能够将非结构化文本转化为可计算、可交互的智能体,极大地提升了信息处理和自动化任务的效率。在应用场景上,大模型广泛应用于智能对话、代码生成、文档总结与问答等领域。其中,国产大模型如月之暗面推出的Kimi K3,凭借其在**长文本处理**和**中文场景优化**方面的优势,为开发者提供了新的技术选项。本文将以Kimi K3为例

weixin_30694389的博客 299

nginx的location配置详解

语法规则: location [=|~|~*|^~] /uri/ { … }语法规则: location空格[=|~|~*|^~]空格/uri/ { … }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。~ 开头表示区分大小写的正则匹配~* 开头表示不区分大小写的正则匹配!~和!

thlzjfefe的博客 1万+

MT4量化交易入门:手把手教你用MQL4编写第一个外汇EA(含完整代码)

本文详细介绍了如何使用MQL4在MT4平台上编写第一个外汇EA,涵盖从开发环境配置到均线交叉策略实现的完整流程。通过手把手教学和完整代码示例,帮助量化交易新手快速掌握外汇自动化交易的核心技术,实现高效的MT4量化交易系统。

mmm90的博客 527

Nginx 【location配置路径详解、反向代理、负载均衡】

在使用nginx时,我们配置最多的就是location项了路由命中规则增加响应头或请求头复写请求路径以上的功能我们一般都在location中实现。

qq_32019935的博客 1万+

告别JavaScript!C#通过WebAssembly在浏览器中实现“原生级“性能

C# + WebAssembly:前端开发的革命性替代方案 摘要:本文探讨了C#通过WebAssembly取代JavaScript开发前端应用的新趋势。文章分析了JavaScript的局限性(弱类型、回调地狱等),并详细介绍了C#+WebAssembly组合的优势:强类型系统、高性能、多线程支持和代码重用。技术实现方面,阐述了C#通过Mono/.NET编译为WebAssembly字节码的原理,重点介绍了Blazor框架的两种模式。文章还提供了实战指南,包括项目创建、多线程配置,以及一个与ChatGPT AP

墨夶的博客 946

我写了一个自动识别火车车厢位置的算法【lidar点云识别】

我写了一个自动识别火车车厢位置的算法【lidar点云识别】

qq_43212290的博客 798

Nginx Location配置详解

当不添加匹配标识时,Nginx服务器首先在server块的各个location块中搜索是否有。指令我们可以指定资源访问的根目录,但是我们会发现访问的uri会附加到指定的文件目录下。其中uri变量是待匹配的请求字符串,可以是包含有正则表达式的字符串,称之为。和请求字符串匹配,如果有多个可以匹配,就记录匹配度最高的一个。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。时,Nginx会在服务器上寻找路径为。

lingbomanbu_lyl的博客 2756

一些笔者原创或者搜集的 ABAP 小工具集合(一),持续更新中!!

每个报表短小精悍,拷贝到系统激活即可运行。不少报表脑洞大开。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2734

Nginx 中 location 块配置详解和实列

Nginx 中 location 块配置详解和实列

m0_52091913的博客 4114

BMP390L数字大气压传感器原理图设计,已量产(压力传感器)

在工业设备的室内定位、地下设施监测这类 GPS 信号盲区场景里,气压高度检测的 “靠谱程度” 直接决定了系统的可用性 —— 毕竟谁也不想在地下停车场导航时,设备把 1 楼误判成 3 楼。最近在项目里基于博世 BMP390L 做了硬件电路设计,正好聊聊这款工业级数字气压传感器的硬实力,以及原理图里的那些关键设计细节。

不脱发的程序猿 352

(14-3)值分布式算法:QR-DQN (Quantile Regression DQN)算法

QR-DQN(Quantile Regression DQN)是一种强化学习算法,它是深度 Q-网络(Deep Q-Network,DQN)的一个变种,旨在更好地处理值函数的不确定性。QR-DQN的实现步骤与传统的DQN类似,但在目标分布计算和损失函数方面有一些不同之处,这使得它能够更好地处理值函数的不确定性。QR-DQN(Quantile Regression DQN)算法的核心思想是将值函数表示为一个分布,而不是传统的单一值估计。在下面的内容中,将讲解一个使用QR-DQN算法的例子。

码农三叔 2053

nginx location和rewrite配置语法

nginx location和rewrite正则匹配表达式。

penngo的专栏 1525

智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现

张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!

2601_94871597的博客 196

nginx rewrite 转发配置_Nginx教程(四) Location配置与ReWrite语法

Nginx教程(四) Location配置与ReWrite语法1 Location语法规则1.1 Location规则语法规则: location [=|~|~*|^~] /uri/ {… }首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。符号含义== 开头表示精确匹配^~^~开头表示uri以某个常规字符串开头,...

weixin_29988441的博客 348

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Nginx教程(四) Location配置与ReWrite语法

Location规则 语法规则: location [=|~|~*|^~] /uri/ { … } 首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 ReWrite语法 Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。 通过Rewrite规则,可以实现

yuan_xw的专栏 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

如何配置Nginx的rewrite?(Web服务器群集,各种nginx的rewrite实例配置,rewrite的语法,location的详解)

该`ngx_http_rewrite_module`模块用于使用PCRE正则表达式更改请求URI,返回重定向并有条件地选择配置

CN_TangZheng的博客 651

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

web服务器- -Nginx 的rewrite模块配置,实现新旧域名自动跳转(Web服务器群集,各种nginx的rewrite实例配置,rewrite的语法,location的详解)

文章目录前言一:Rewrite1.1:Rewrite跳转场景1.2:Rewrite跳转实现1.3:Rewrite实用场景1.4. 正则表达式元字符二:Rewrite命令2.1:rewrite语法2.2 flag 标记2.3 last和break比较三:location3.1:location的分类3.1.1:正则匹配的常用表达式3.2 location的优先级3.3:rewrite和 location的不同之处3.4:location优先级规则3.5:location优先级的示例四. 具体6个配

BIGmustang的博客 750

centos 7 编译安装 nginx 以及nginx 信号控制、配置段、日志管理、location 语法、rewrite 重写等用法

文章目录一、nginx 的安装二、Nginx的信号控制1.引入库三、Nginx配置段四、日志管理1: 日志格式 是指记录哪些选项2: 声明一个独特的log_format并命名五、location 语法六、rewrite 重写 提示:以下是本篇文章正文内容,下面案例可供参考 一、nginx 的安装 nginx包地址:http://nginx.org/en/download.html nginx包下载文件: http://nginx.org/download/nginx-1.4.2.tar.gz nginx依

Kai_Wai的博客 450

Nginx Location配置和ReWrite 语法

1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {… } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 符号 含义 = = 开头表示精确匹配 ^~

zhouzhiwengang的专栏 865

nginx教程(四)--Location配置与ReWrite语法

1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {… } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 匹配规则示例:       location = / {           #规则A       }      ...

Mr.zhao 389

Nginx-基础-基础配置(Server,Location语法,匹配优先级,rewrite)

就比如http://www.liyong.f.com:82/test/aaa/bbb被重定向以后是http://www.liyong.f.com:82/demo/bbb。只有访问http://www.liyong.f.com:82/doc,http://www.liyong.f.com:82/document 才能正确处理。也就是路径必须一模一样。http://www.liyong.f.com:82/data,http://www.liyong.f.com:82/test 都是401。

qq_43259860的博客 1605

配置Nginx的Rewrite-------(rewrite语法、location相关知识、访问跳转)

目录一、Nginx Rewrite概述1.1 Rewrite跳转场景1.2 Rewrite跳转实现1.3 Rewrite实际场景二、 Nginx正则表达式2.1 常用的正则表达式元字符三、 Rewrite命令3.1 语法3.2 flag标记说明3.3 last 和 break 比较四、location分类4.1 分类4.2 正则匹配的常用表达式4.3 location优先级4.4 location优先级规则4.5 比较rewrite 和location五、应用场景测试5.1 基于域名的跳转 一、Nginx

weixin_48191138的博客 1009

Nginx入门教程( Location配置与ReWrite语法)

1 Location语法规则1.1 Location规则语法规则: location [=|~|~*|^~] /uri/ {… }首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。符号含义== 开头表示精确匹配^~^~开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请...

架构师必备技能 168
上一篇: Ubuntu启动项设置——之update-rc.d 命令使用
下一篇: redis-benchmark-Redis性能测试工具(自带)
typ2004
博客等级 码龄17年 48粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值