首页 > 系统相关 >nginx 正则路径匹配

nginx 正则路径匹配

时间:2023-05-15 11:34:12浏览次数:37  
标签:abc 匹配 nginx 正则 location 规则 images proxy

Nginx路径匹配符号
= 表示精确匹配
^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 正则匹配(区分大小写)
~* 正则匹配(不区分大小写)
!~ 区分大小写不匹配
!~* 不区分大小写不匹配
/ 任何请求都会匹配
注意要使用正则除了正则表达式,location 后还要加 ~ 相关表达式、 才能表示后面是正则表达式!!! 如下:

注意 :~ 表达式 和 正则表达式 中间有空格。

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

符号优先级

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

示例
获取 location 中匹配的正则表达式匹配的字符串

访问http://localhost/test/a.html,在本机寻找文件路径为/usr/local/html/a.html;
$1表示正则表达式中的第一个括号内匹配的内容;
location ~ /test/(.*\.html)$ {
alias /usr/local/html/$1;
}
基础使用

location = / {
# 精确匹配 / ,主机名后面不能带任何字符串
[ 规则 A ]
}

location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
# 但是正则和最长字符串会优先匹配
[ 规则 B ]
}

location /documents/ {
# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ 规则 C ]
}

location ~ /documents/Abc {
# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ 规则 D ]
}

location ^~ /images/ {
# 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
[ 规则 E ]
}

location ~* \.(gif|jpg|jpeg)$ {
# 匹配所有以 gif,jpg或jpeg 结尾的请求
# 然而,所有请求 /images/ 下的图片会被 [规则 E] 处理,因为 ^~ 优先级更高
[ 规则 F ]
}

location /images/ {
# 字符匹配到 /images/,继续往下,会发现 ^~ 存在
[ 规则 G ]
}

location /images/abc {
# 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
[ 规则 H ]
}

location ~ /images/abc/ {
# 只有去掉 [规则 E] 才有效:先最长匹配 [规则 H] 开头的地址,继续往下搜索,匹配到这一条正则,采用
[ 规则 I ]
}
匹配MP_verify_****.txt文件,中间任意字符,并在/usr/share/nginx/file目录中寻找对应文件

# 微信授权文件通用匹配规则
location ~ (MP_verify_)*\.(txt)$ {
root /usr/share/nginx/file;
}
匹配/static开头路径,并在/data/product/static寻找对应文件

# 静态文件工程配置
location ^~ /static/ {
root /data/product/static;
index index.html index.htm;
}
匹配以.html 等结尾的

# 静态文件配置
location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /data/product/static/;
}

配置proxy_pass时路径拼接规则

在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/

当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;
如果没有/,则会把匹配的路径部分也给代理走
server {
listen 80;
server_name test.xxx.com;

location ^~ /abc {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8081/;
}
}
加上/ 请求地址http://test.xxx.com/abc/index,会转发到http://127.0.0.1:8081/index

server {
listen 80;
server_name test.xxx.com;

location ^~ /abc {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8081;
}
}
不加/ 请求地址http://test.xxx.com/abc/index,会转发到http://127.0.0.1:8081/abc/index
————————————————
版权声明:本文为CSDN博主「life1024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013378306/article/details/121331871

标签:abc,匹配,nginx,正则,location,规则,images,proxy
From: https://www.cnblogs.com/gaoyanbing/p/17401360.html

相关文章

  • 动力系统匹配软件!本程序是基于Matlab开发的整车动力系统匹配计算软件,将整车参数及性能
    动力系统匹配软件!本程序是基于Matlab开发的整车动力系统匹配计算软件,将整车参数及性能需求输入,直接输出动力系统性能要求,本人亲自编写开发,可将底层代码同时出。ID:6119617031917830......
  • opencv模板匹配测试
    opencv模板匹配 importcv2#加载标准图像template=cv2.imread('template.jpg')#预处理输入图像gray=cv2.cvtColor(template,cv2.COLOR_BGR2GRAY)gray=cv2.GaussianBlur(gray,(5,5),0)#创建背景减除器background=cv2.subtract(te......
  • nginx反向代理与负载均衡
    什么是正向代理和反向代理正向代理:客户端与服务端之间再架设一台服务器,客户端先访问的是这台中间架设的服务器,再由中间这台服务器给目标服务器,发送请求.客户端设置一个代理ip,服务器不清楚是客户本机发送还是代理服务器发送正向代理是一个客户端和原始服务器之间的服务......
  • LINUX下用YUM安装nginx出现No package nginx available.的问题与解决方案
    1.备份CentOS-Base.repomv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.bak2.下载新的CentOS-Base.repo到/etc/yum.repos.d/wget-o/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo3.把服务器的包信息下载到本......
  • 基于正则化极限学习机(RELM)的数据回归预测 matlab代码
    基于正则化极限学习机(RELM)的数据回归预测matlab代码YID:9629656274934954......
  • 正则表达式,re模块
    正则表达式,一种独立的规则和语言,主要和字符串打交道爬虫,从一大段文字中获取符合条件的内容表单验证,检测一个字符串是否完全符合规则,先通过正则去判断是否符合规则,符合规则再去请求字符组匹配所有数字[0-9]匹配所有小写字母[a-z]匹配所有大写字母[A-Z]匹配所有......
  • 通配符的匹配很全面, 但无法找到元素 ‘aop:config’ 的声明问题的解决
    问题描述在我根据教程视频一步步将所有文件配置完成之后,就显示出来这个错误!问题解决将下面两个语句放置到applicationContext.xml配置文件的约束里面即可解决问题:xmlns:aop="http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aophttp://ww......
  • nginx 并发限制limit_conn启动不了nginx
    直接在http下写limit_conn启动不了nginx基本语法limit_conn指令的基本语法为:limit_connconnlimit;1其中,connlimit为最大并发连接数。一旦某时刻,连接数超过该值,Nginx将返回503错误页面并关闭新连接的接入。使用error_page指令可对此页面进行自定义配置。除了主要指令之......
  • 老夫的正则表达式大成了,桀桀桀桀!!!【Python 正则表达式笔记】
    一、正则表达式语法(一)字符与字符类特殊字符\.^$?+*{}[]()|为特殊字符,若想要使用字面值,必须使用\进行转义字符类[][]匹配包含在方括号中的任何字符。它也可以指定范围,例:[a-zA-Z0-9]表示a到z,A到Z,0到9之间的任何一个字符[u4e00-u9fa5]匹配Unicode中文[^\x00-\xff]......
  • nginx源码安装步骤
    1、安装依赖包yuminstall-ygccyuminstall-ypcrepcre-develyuminstall-yzlibzlib-develyuminstall-yopensslopenssl-devel2、下载nginx源码包并解压 3、进入解压后的包nginx-1.16.1中4、执行命令 ./configure【参数可选:--prefix=/path/可指定ng......