Nginx Location配置详解

目录

  • 一、Location语法结构
    • 1、语法结构说明
    • 2、各个标识的含义和优先级
    • 3、配置请求的根目录
    • 4、替换请求的uri
  • 二、Location具体示例
    • 1、精确匹配
    • 2、正则匹配
    • 3、常规字符串匹配
  • 三、调试Location的小技巧

一、Location语法结构

1、语法结构说明

在Nginx官方文档中定义的location语法结构为:

location [ = | ~ | ~* | ^~ ] uri { ... }

其中uri变量是待匹配的请求字符串,可以是包含有正则表达式的字符串,称之为标准uri,也可以是不包含正则表达式的字符串,称之为正则uri。方括号里的部分为可选项,我们称之为匹配标识。

当不添加匹配标识时,Nginx服务器首先在server块的各个location块中搜索是否有标准uri和请求字符串匹配,如果有多个可以匹配,就记录匹配度最高的一个。

然后,服务器再用location块中的正则uri和请求字符串匹配,如果第一个正则uri匹配成功,结束搜索,并使用该location块处理请求。如果所有正则匹配全部失败,则用标准uri匹配到的匹配度最高的location块进行处理。

2、各个标识的含义和优先级

  • = 表示精确匹配,这个优先级也是最高的。
  • ^~ 表示 uri 以某个常规字符串开头,理解为匹配 url 路径即可。nginx 不对 url 做编码,因此请求为
    /static/20%/aa,可以被规则^~ /static/ /aa 匹配到(注意是空格)。
  • ~ 表示区分大小写的正则匹配。
  • ~* 表示不区分大小写的正则匹配。
  • !~!~*分别为区分大小写不匹配及不区分大小写不匹配的正则匹配。
  • / 通用匹配,任何请求都会匹配到,默认匹配。

优先级:精确匹配 > 正则匹配 > 通用匹配


3、配置请求的根目录

Web服务器接收到网络请求后,首先要在服务器端指定目录中寻找请求资源。在Nginx服务器中,root用来配置资源的根目录,如下:

location /images {root /nginx/images;
}

备注:当访问/images/1.jpg时,Nginx会在服务器上寻找路径为/nginx/images/images/1.jpeg的文件。

4、替换请求的uri

通过root指令我们可以指定资源访问的根目录,但是我们会发现访问的uri会附加到指定的文件目录下。通过alias指定,我们可以在访问服务器上资源时不保留访问前缀,如下:

location /images {alias /nginx/images;
}

备注:当访问/images/1.jpg时,Nginx会在服务器上寻找路径为/nginx/images/1.jpeg的文件。


二、Location具体示例

1、精确匹配

location = /50x.html {root /nginx/html;
}

备注:当访问/50x.html时,Nginx会在服务器上寻找路径为/nginx/html/50x.html的文件。

2、正则匹配

location ~* ^/images/(.+\.(png|jpg|jpeg|gif))$ {alias  /nginx/images/$1;
}

备注:当访问/images/1.JPEG时,Nginx会在服务器上寻找路径为/nginx/images/1.jpeg的文件,并且访问路径不区分大小写。

3、常规字符串匹配

location ~^ /static//(.+\.(html|htm)){alias /nginx/html/$1
}

备注:当访问/static/%20/index.html时,Nginx会在服务器上寻找路径为/nginx/html/1.html的文件。


三、调试Location的小技巧

一般如果文件访问失败,在错误日志里能看到错误日志提示,如下:

2024/05/11 15:15:28 [error] 16746#0: *125484 open() "/nginx/images/jpeg" failed (2: No such file or directory), client: 113.116.81.20, server: xxx.com, request: "GET /images/1.jpeg HTTP/1.1", host: "xxx.com"

错误日志的默认配置为:error_log logs/error.log error,也就是在logs/error.log文件中能看到相关错误提示,通过提示我们再进行配置的调整。

在这里插入图片描述

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

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

相关文章

shopee虾皮跨境商家:月出1000单爆款打造思路!

Shopee爆款打造的方式是需要满足很多特点的,我把它大概归结为了7大要素: 1、顺应平台潮流 通过Shopee前台、市场周报,以及你对这个行业的经验,能够及时掌握平台最近主推产品的信息,又刚好我们店铺里面的商品有能够搭…

最新!TOP200高校!5月ESI排名,公布!

【SciencePub学术】5月9日,ESI数据库更新了2024年5月最新ESI数据。据统计,全球共有9019家科研机构上榜,其中有449所中国内地高校。 ESI(基本科学指标数据库)是目前世界范围内普遍用以评价高校、学术机构、国家或地区国…

Blazor入门-调用js+例子

参考: Blazor入门笔记(3)-C#与JS交互 - 半野 - 博客园 https://www.cnblogs.com/zxyao/p/12638233.html 本地环境:win10, visual studio 2022 community 其他例子写了再更新! 调用js函数并传递参数 首先要加上injec…

antd组件状态变换为啥要使用剪头函数

先看下代码 import React, {useState} from react; import {Switch, Typography} from antd;const {Paragraph, Text} Typography;const App: React.FC () > { const [ellipsis, setEllipsis] useState(true);return (<>//正确的<Switch checked{ellipsis}onCh…

如何盘点选择的连锁收银系统贵不贵

在选择连锁收银系统时&#xff0c;成本是一个至关重要的考量因素。盘点连锁收银系统的成本既涉及到系统本身的购买费用&#xff0c;也包括了系统的维护、培训以及可能带来的附加费用。下面将从四个方面对连锁收银系统的成本进行盘点。 1. 初始投资成本 连锁收银系统的初始投资…

怎样的跨网软件,可以实现网间数据的安全收发?

网络隔离已是较为常见的网络安全保护措施&#xff0c;比如防火墙、网闸、VLAN&#xff0c;云桌面虚拟环境等方面进行隔离。像一些科技研发型企业&#xff0c;不仅仅是内外网隔离&#xff0c;甚至还划分办公网、研发网、测试网、生产网等&#xff0c;防止研发资料、设计资料等敏…

构建智能化招采与设备管理系统:架构设计与实践

随着科技的迅速发展&#xff0c;智能化招采与设备管理系统在各个领域的需求与应用日益增加。本文将深入探讨该系统的架构设计&#xff0c;介绍其关键特点和最佳实践&#xff0c;助力企业提升采购效率、管理流程&#xff0c;实现智能化招标采购与设备管理。 1. **需求分析与功能…

typescript 模块化

模块的概念&#xff1a; 把一些公共的功能单独抽离成一个文件作为一个模块。 模块里面的变量、函数、类等默认是私有的&#xff0c;如果我们要在外部访问模块里面的数据&#xff08;变量、函数、类&#xff09;&#xff0c;需要通过export暴露模块里面的数据&#xff08;&#…

Dual Aggregation Transformer for Image Super-Resolution论文总结

题目&#xff1a;Dual Aggregation Transformer&#xff08;双聚合Transformer&#xff09; for Image Super-Resolution&#xff08;图像超分辨&#xff09; 论文&#xff08;ICCV&#xff09;&#xff1a;Chen_Dual_Aggregation_Transformer_for_Image_Super-Resolution_ICCV…

【4】STM32·FreeRTOS·中断管理

目录 一、什么是中断 二、中断优先级分组设置 2.1、中断优先级基本概念 2.2、中断优先级分组 2.3、FreeRTOS中断特点 三、中断相关寄存器 3.1、系统中断优先级配置寄存器 3.2、PendSV和Systick中断优先级的配置 3.3、中断屏蔽寄存器 四、FreeRTOS中断管理实验 一、什…

【初始类和对象】(实例讲解!超级详细!)

【初始类和对象】 前言1. 面向对象的初步认知1.1什么是面向对象1.2 面向对象与面向过程 2. 类的定义和使用2.1 简单认识类2.2 类的定义格式 3. 知识的代码举例讲解3.1 创建类、实例化类3.2 构造方法初始化类、this 3. 总结 前言 由于类和对象是我们在学习过程中需要接受的概念…

本地运行.net项目

有时候需要我们自己做一个.net的课设项目&#xff0c;但是我们有了代码后却不知道怎么运行。我们0基础来学习一下如何运行一个.net项目 1.安装visual studio 2022 不用安装老版本&#xff0c;新版就可以。安装好了2022版本&#xff0c;这是一个支持web的IDE&#xff0c;我们可…