Nginx配置文件中location介绍

一、常见的Nginx正则表达式

选项功能
^匹配输入字符串的起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
?匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
.匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式
\将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“$”则匹配“$”
\d匹配纯数字[0-9] \s :空白符 \w :任意单词字符包括下划线[A-Za-z0-9_]
{n}重复 n 次
{n,}重复 n 次或更多次
{n,m}重复 n 到 m 次
[]定义匹配的字符范围
[c]匹配单个字符 c
[a-z]匹配 a-z 小写字母的任意一个
[a-zA-Z0-9]匹配所有大小写字母或数字
()表达式的开始和结束位置
|或运算符

二、location

1、location分类

location大致分为三类:

  • 精准匹配:location = / {…}
  • 一般匹配:location / {…}
  • 正则匹配:location ~ / {…}

2、location常用的匹配规则

  • =:进行普通字符精确匹配,也就是完全匹配
  • ^~:表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他正则匹配location
  • ~:区分大小写的匹配
  • ~*:不区分大小的匹配
  • !~:区分大小写的匹配取非
  • !~*:不区分大小写的匹配取非

3、location优先级

  1. 精确匹配=
  2. 前缀匹配^~
  3. 按文件顺序的正则匹配~或~*
  4. 不带任何修饰符的一般前缀匹配
  5. /通用匹配

4、location示例说明

(1)location = / {}
=为精确匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配
再比如 location = /abc,则只匹配/abc ,/abc/或 /abcd不匹配。若 location /abc,则即匹配/abc 、/abcd/ 同时也匹配 /abc/。

(2)location / {}
因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配, /data 也匹配,
但后面前缀路径会和最长字符串优先匹配(最长匹配)

(3)location /documents/ {}
匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的前缀路径没有匹配到时,才会采用这一条

(4)location /documents/abc {}
匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的前缀路径没有匹配到时,才会采用这一条

(5)location ^~ /images/ {}
匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条

(6)location ~* .(gif|jpg|jpeg)$ {}
匹配所有以 gif、jpg或jpeg 结尾的请求
然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为 ^~ 的优先级更高,所以到达不了这一条正则

(7)location /images/abc {}
最长字符匹配到 /images/abc,优先级最低,继续往下搜索其它 location,会发现 ^~ 和 ~ 存在

(8)location ~ /images/abc {}
匹配以/images/abc 开头的,优先级次之,只有去掉 location ^~ /images/ 才会采用这一条

(9)location /images/abc/1.html {}
匹配/images/abc/1.html 文件,如果和正则location ~ /images/abc/1.html 相比,正则优先级更高

五、总结:

1、 优先级

(location = 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分前缀路径) > (location /)

2、location 匹配

  • 首先看优先级:精确= > 前缀^~ > 正则~,~* > 一般 > 通用/

  • 在没有精准匹配的情况下,先看前缀匹配的长度,然后根据最长的前缀匹配的优先级去确定是否再去看其它正则匹配location,
    如果最长的前缀匹配带有 ^~ 则不再看其它正则匹配location,如果最长的前缀匹配是没有修饰符的一般匹配则会再看其它正则匹配location

  • 前缀匹配看长度,最长的优先匹配

  • 正则匹配看上下顺序,由上往下依次匹配,当有匹配成功时候,停止匹配,按当前匹配规则处理请求

  • 只有在精准、前缀、正则、一般 都没有匹配到的时候才会看通用匹配

3、实际网站中的使用

实际网站使用中,至少有三个匹配规则定义:

  • 第一个必选规则
    直接匹配网站根目录首页,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。
    可以是一个静态首页,也可以直接转发给后端应用服务器
location = /index.html {
    root   html;
	index  index.html index.htm;
}
  • 第二个必选规则则是处理静态文件请求,这是nginx作为http服务器的强项
    有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
    root /webroot/;
}

location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}
  • 第三个规则就是通用规则,比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器
    非静态文件请求就是默认是动态请求
location / {
    proxy_pass http://tomcat_server;
}
### 微型有刷直流电机驱动方法及电路设计 #### 一、概述 微型有刷直流电机因其结构简单、成本低廉,在众多应用场景中得到广泛应用。为了有效控制这些电机,合适的驱动方法和电路设计至关重要。 #### 二、H驱动原理 对于需要改变旋转方向的应用场景,采用H是最常见的解决方案之一。通过调整施加到电机两端电压的方向来实现正反转操作[^1]。具体来说,H由四个开关元件构成,可以灵活配置成不同状态以适应各种工作需求。 #### 三、专用集成电路(IC) 针对特定应用场合下的优化考虑,市场上存在许多专为驱动小型直流电机而设计的集成芯片。例如: - **L9110**: 这款双全驱动器适合于低电压环境中的小功率负载;内部集成了必要的保护机制,提高了系统的稳定性和安全性。 - **TMI8116-Q1**: 提供了更高级别的特性支持,比如内置电流检测与反馈回路,使得开发者能够在不增加额外硬件开销的情况下完成精准的速度调节任务[^2]。 - **HTD8233**: 面向办公自动化领域的产品线成员,具备强大的过流防护能力以及高效的PWM调速性能,特别适合作为打印机内设组件的一部分[^3]。 #### 四、基于STM32单片机的实际案例分析 当涉及到更为复杂的控制系统开发时,选用高性能MCU作为核心控制器不失为一种明智的选择。借助CubeMX工具自动生成初始化代码框架后,编程人员只需专注于业务逻辑部分即可快速搭建原型系统并验证概念可行性。 ```c // STM32 HAL库函数用于设置定时器产生PWM信号 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, compareValue); ``` 上述片段展示了如何利用STM32系列微控制器配合外接驱动模块轻松达成预期目标——即让连接在其上的任意一台标准规格的小型直流电动机能按照预定义的方式运转起来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值