当前位置: 首页 > news >正文

nginx访问路径匹配方法

目录

一:匹配方法

二:location使用:

三:rewrite使用


一:匹配方法

location和rewrite是两个用于处理请求的重要模块,它们都可以根据请求的路径进行匹配和处理。

二:location使用:

1:简单匹配
简单匹配是按照字面量路径来匹配请求的URL。这种匹配方法是最直接且最容易理解的。


location /images/ {  
    # 匹配任何以/images/开头的URL  
}


2:最长字符串匹配
当有多个location使用简单匹配时,Nginx会选择匹配路径最长的那个。


location / {  
    # 匹配所有URL,但优先级较低  
}  
location /images/ {  
    # 匹配以/images/开头的URL,优先级高于上面的location /  
}


3:正则表达式匹配
使用正则表达式可以定义更复杂的路径匹配规则。正则表达式匹配以~*(不区分大小写)或~(区分大小写)开始。


location ~* \.(gif|jpg|png)$ {  
    # 匹配所有以.gif、.jpg或.png结尾的URL,不区分大小写  
}
4:通配符匹配
Nginx不支持像Apache那样的通配符(如*),但可以使用正则表达式来达到类似的效果。然而,有时候提到的通配符匹配实际上是指正则表达式的使用。

5:精确匹配
使用=可以实现精确匹配,即完全匹配指定的路径。


location = /logo.png {  
    # 只匹配/logo.png这个URL  
}

6:匹配优先级
当存在多个可能匹配的location时,Nginx会按照一定的优先级顺序来选择一个进行处理。优先级从高到低大致如下:

精确匹配(=)具有最高优先级;
其次是按文件中的顺序匹配的正则表达式(~和~*),先被定义的先匹配;
然后是最长字符串匹配;
最后是匹配任意路径的location /。


7:命名位置
虽然这不是一种路径匹配方法,但值得一提的是,你可以使用@符号创建命名的location,这些位置不能直接由客户端请求访问,但可以在内部重定向或作为其他指令的目标。


location / {  
    try_files $uri $uri/ @custom;  
}  
location @custom {  
    # 这里是自定义错误页面或其他处理逻辑  
}
 

三:rewrite使用

1:正则表达式匹配:
rewrite模块支持使用正则表达式进行匹配和替换。正则表达式可以用来描述复杂的匹配模式,并实现精确的URL重写。


rewrite ^/oldpath(.*)$ /newpath$1 permanent;


2:位置匹配:
rewrite模块也支持基于请求的URL位置进行匹配和重写。可以使用location块中定义的匹配规则来指导rewrite操作。


location = /oldpage {  
    rewrite ^ /newpage;  
}


3:替换参数
在重写URL时,可以使用替换参数来修改URL中的某些部分。例如,使用$1到$9来表示正则表达式中的捕获组,并替换到新的URL中。


rewrite ^/(.*)/(.*)$ /profile.php?user=$1&id=$2 last;


4:重定向
使用rewrite模块可以将请求重定向到其他URL。通过指定重定向的目标URL,可以将用户请求转发到其他服务器或地址。
rewrite ^/oldurl$ /newurl redirect;


5:临时重定向
使用last关键字可以将重定向标记为临时重定向,这意味着浏览器会收到一个临时的响应,并自动重新发起新的请求到目标URL。


rewrite ^/oldurl$ /newurl last;


6:永久重定向
使用permanent关键字可以将重定向标记为永久重定向,这意味着浏览器会收到一个永久的响应,并记住新的URL,以后直接访问旧的URL时会直接跳转到新的URL。
rewrite ^/oldurl$ /newurl permanent;
 

http://www.lryc.cn/news/274842.html

相关文章:

  • 偌依 项目部署及上线步骤
  • PHP特性知识点扫盲 - 上篇
  • Docker一键极速安装Nacos,并配置数据库!
  • 交换机04_远程连接
  • ES6定义一个类(函数内部定义属性,,原型定义方法 ), 实现继承?
  • 使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享
  • “智慧”千里眼助力水泵站
  • C++多态性——(5)运算符重载(第二节)
  • ES -极客学习
  • 【大厂秘籍】系列 - Java多线程面试题
  • vue实现画笔回放,canvas转视频播放功能
  • Docker中镜像的相关操作
  • [python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频
  • 使用echarts的bmap配置项绘制区域轮廓遮罩
  • 第3章 【课后习题】(完整版)
  • redis安装与配置
  • kotlin first/last/indexOf/elementAt
  • 计算机网络——网络中要解决的问题
  • 初识STL
  • 程序员副业之无人直播助眠
  • imazing破解版百度云2.17.3(附激活许可证下载)
  • VS+QT五子棋游戏开发
  • SpringBoot中动态注册接口
  • CSS 实现两个圆圈重叠部分颜色不同
  • 【数据库系统概念】第7-14章集合
  • Kibana
  • C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式
  • K8S--- volumesvolumeMount
  • AntV-G6 -- 将G6图表应用到项目中
  • 第二百五十回