Nginx Location 配置块全解析与示例
Nginx Location 配置块全解析与示例
摘要: 本文深入探讨了 Nginx 中 location
配置块的功能、语法规则以及多种实际应用场景下的配置示例,旨在帮助读者全面理解并熟练掌握 location
配置块,以便在 Nginx 服务器配置中灵活运用,实现高效的请求处理与路由转发。
一、引言
Nginx 作为一款高性能的 HTTP 和反向代理服务器,其强大的功能在很大程度上依赖于灵活的配置。location
配置块在 Nginx 配置中扮演着至关重要的角色,它用于根据不同的请求 URI 来匹配并应用特定的配置规则,决定如何处理请求。正确地使用 location
配置块能够显著提升服务器的性能、安全性以及用户体验。
二、location
语法基础
location
配置块的基本语法如下:
location [修饰符] 匹配规则 {# 配置指令
}
其中,修饰符有多种类型,常见的包括:
=
: 精确匹配,只有当请求的 URI 与指定的字符串完全相等时才匹配。~
: 正则表达式匹配,区分大小写。~*
: 正则表达式匹配,不区分大小写。^~
: 前缀匹配,如果匹配成功,则不再进行其他正则表达式匹配。
匹配规则可以是普通的字符串或者正则表达式,用于与请求的 URI 进行比对。
三、location
配置示例
(一)精确匹配示例
server {listen 80;server_name example.com;location = /index.html {root /var/www/html;index index.html index.htm;}
}
在上述示例中,当用户请求 http://example.com/index.html
时,Nginx 会精确匹配到该 location
块,并从 /var/www/html
目录下查找 index.html
或 index.htm
文件作为响应内容。如果请求的 URI 不是 /index.html
,则不会匹配到该块,Nginx 会继续查找其他匹配的 location
块。
(二)前缀匹配示例
server {listen 80;server_name example.com;location /static/ {root /var/www;access_log off;}
}
这里,任何以 /static/
开头的请求 URI,如 /static/css/style.css
或 /static/js/main.js
都会匹配到该 location
块。Nginx 会在 /var/www/static/
目录下查找对应的资源文件,并关闭该块下的访问日志记录,这对于静态资源的处理非常有用,可以提高性能并减少日志文件的大小。
(三)正则表达式匹配示例(区分大小写)
server {listen 80;server_name example.com;location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
此示例中,使用正则表达式 ~ \.php$
来匹配所有以 .php
结尾的请求 URI,例如 /about.php
或 /contact.php
。当匹配成功后,Nginx 会将请求通过 FastCGI 协议转发到本地的 127.0.0.1:9000
端口,以便由 PHP 解释器进行处理。
(四)正则表达式匹配示例(不区分大小写)
server {listen 80;server_name example.com;location ~* \.(jpg|png|gif)$ {expires 30d;root /var/www/images;}
}
在这个例子中,~* \.(jpg|png|gif)$
正则表达式(不区分大小写)用于匹配所有以 .jpg
、.png
或 .gif
结尾的请求 URI,如 /image1.jpg
或 /Image2.PNG
。匹配成功后,Nginx 会设置响应头中的 Expires
字段为 30 天,使浏览器缓存这些图片资源,同时从 /var/www/images
目录下获取对应的图片文件。
(五)混合使用示例
server {listen 80;server_name example.com;location = /favicon.ico {log_not_found off;access_log off;root /var/www/icons;}location ^~ /api/ {proxy_pass http://backend_api_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}location ~* \.(txt|pdf)$ {deny all;}
}
上述配置展示了多种 location
修饰符的混合使用:
- 对于
/favicon.ico
的请求,使用精确匹配= /favicon.ico
,并关闭了日志记录,直接从/var/www/icons
目录提供图标文件。 - 以
/api/
开头的请求,通过^~
前缀匹配,将请求代理到http://backend_api_server
,并设置了一些代理相关的请求头。 - 对于所有以
.txt
或.pdf
结尾的请求(不区分大小写),使用~* \.(txt|pdf)$
正则表达式匹配,并拒绝所有此类请求,实现了对特定文件类型的访问限制。
四、总结
通过以上对 Nginx location
配置块的详细介绍与示例演示,我们可以看到其在处理不同类型请求 URI 时的强大灵活性。在实际的 Nginx 服务器配置中,合理地运用 location
配置块能够根据项目需求精确地控制请求的路由、资源的访问权限、静态文件的处理以及与后端服务器的交互等。深入理解 location
配置块的语法和各种匹配规则,并结合实际场景进行巧妙配置,是构建高效、安全且功能完备的 Nginx 服务器的关键所在。
相关文章:

Nginx Location 配置块全解析与示例
Nginx Location 配置块全解析与示例 摘要: 本文深入探讨了 Nginx 中 location 配置块的功能、语法规则以及多种实际应用场景下的配置示例,旨在帮助读者全面理解并熟练掌握 location 配置块,以便在 Nginx 服务器配置中灵活运用,实…...
javalock(八)ReentrantReadWriteLock
ReentrantReadWriteLock: 同时实现了共享锁和排它锁。内部有一个sync,同时实现了tryAcquire/tryReleases、tryAcquireShared/tryReleasesShared,一共四个函数,然后ReentrantReadWriteLock内部还实现了一个ReadLock和一个WriteLock,…...
反射和设计模式
一、反射 1. 相关概念 (1) 类的对象:基于定义好的一个类,创建该类的实例,即利用 new 创建的实例就为类的对象。 (2) 类对象:类加载的产物,封装了一个类的所有信息 ( 包名、类名、父类、接口、属性、方法、构造方…...

双指针---和为s的两个数字
这里写自定义目录标题 题目链接问题分析代码解决执行用时 题目链接 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。 问题分析 暴⼒解法,会超时 (两层…...

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct
环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct 微调 llamafactory-cli train \--st…...

智慧农业云平台与水肥一体化:道品科技引领农业现代化新潮流
在当今科技飞速发展的时代,农业也正经历着一场深刻的变革。智慧农业云平台和水肥一体化技术的出现,为农业生产带来了前所未有的机遇和挑战。 一、智慧农业云平台:农业生产的 “智慧大脑” 智慧农业云平台就像是农业生产的 “智慧大脑”&…...

241207_MindNLP中的大模型微调
241207_基于MindNLP的大模型高效微调 现在的大模型体量非常庞大,全量微调所需要的算力也特别庞大,个人开发者没有条件微调。参数量达到7B的模型才刚刚有涌现能力,但是我们要微调7B的模型的话,就需要328G的显存,至少需…...

MongoDB、Mongoose使用教程
文章目录 一:MongoDB 简介1.1 什么是 MongoDB1.2 特点1.3 与关系数据库的区别:1.4 资源链接: 二:安装 MongoDB2.1 安装前的准备2.2 安装、启动 MongoDB2.3 创建用户 MongoDB 三、连接四:MongoDB 基础操作4.1 库操作&am…...
单片机:实现控制步进电机正反转(附带源码)
1. 步进电机概述 步进电机(Step Motor)是一种能够将电能转换为机械能的电动机。其独特之处在于能够精确地控制转动角度,因此被广泛应用于需要精确控制的场合,如打印机、机器人、数控机床、自动化设备等。 步进电机的转动是以“步…...

安装指南|OpenCSG Starship上架GitHub Marketplace
在代码开发的日常中,你是否常常被以下问题困扰? 代码审查耗时太长,拖慢项目进度? 审查质量参差不齐,一些关键问题被遗漏? 复杂代码变更看不懂,审查者需要大量时间理解意图? 别担…...

Excel设置生日自动智能提醒,公式可直接套用!
大家好,我是小鱼。 今天跟大家分享一个WPS表格中根据出生日期,设置生日提醒,并且根据距离生日天数自动标记数据颜色。简单又实用,一个公式轻松搞定! 接下来我们先学习一下需要使用到的函数,然后再根据实例让…...

同步异步日志系统:前置知识
一、日志项目的介绍 1.1 为什么要有日志系统 1、⽣产环境的产品为了保证其稳定性及安全性是不允许开发⼈员附加调试器去排查问题,可以借助日志系统来打印⼀些⽇志帮助开发⼈员解决问题 为什么不直接printf打印在屏幕上呢??因为现实中没有…...
微服务设计原则——功能设计
文章目录 1.ID生成2.数值精度3.DB操作4.性能测试5.版本兼容5.1 向旧兼容5.2 向新兼容 6.异步时序问题7.并发问题7.1 并发时序7.2 并发数据竞争 参考文献 1.ID生成 在分布式系统中,生成全局唯一ID是非常重要的需求,因为需要确保不同节点、服务或实例在并…...

低代码软件搭建自学的第一天——熟悉PyQt
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 学习计划第 1 步:环境搭建1.1 安装 Python1.2 安装 PyQt安装命令:验证安装: 第 2 步:PyQt 基础知识2.1 创建第一个窗…...

基于Python3编写的Golang程序多平台交叉编译自动化脚本
import argparse import os import shutil import sys from shutil import copy2from loguru import loggerclass GoBuild:"""一个用于构建跨平台执行文件的类。初始化函数,设置构建的主文件、生成的执行文件名称以及目标平台。:param f: 需要构建的…...

远程桌面连接
电脑A:使用机 电脑B:被控制的另一个 方法1: 在电脑B上操作 ①winr输入cmd进入命令行窗口,输入ipconfig查询本机地址 ②我的电脑/此电脑 右键点击“属性” ③选择屏幕右边“远程桌面” ④打开“启用远程桌面” ⑤打开设置&am…...
网络地址转换NAT
NAT(Network Address Translation) 方法于1994年提出。需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球地址IPG。 所有使用本地地址的主机在和外界通信时都要在NAT路由器上将其本地地址转换成外部全球…...

什么是CRM管理软件?CRM的基本概念、功能、选择标准、应用场景
什么是CRM管理软件? 嘿,大家好!今天咱们聊聊一个在现代企业管理中非常重要的工具——CRM管理软件。CRM是Customer Relationship Management(客户关系管理)的缩写,简单来说,它就是一个帮助企业和…...

Python编程常用的19个经典案例
Python 的简洁和强大使其成为许多开发者的首选语言。本文将介绍36个常用的Python经典代码案例。这些示例覆盖了基础语法、常见任务、以及一些高级功能。 1. 列表推导式 fizz_buzz_list ["FizzBuzz" if i % 15 0 else "Fizz" if i % 3 0 else "Buzz…...

【Unity基础】AudioSource 常用方法总结
在 Unity 中,AudioSource 组件用于控制音频的播放和管理。以下是常用的 AudioSource 控制方法及其说明。 1. 播放和暂停音频 Play():开始播放音频,如果是从暂停的地方继续播放,可以直接调用。Pause():暂停当前播放的…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...