Nginx Location指令URI匹配规则详解小结

admin3年前云主机47

1、介绍

location指令是http模块当中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器、非法的请求直接拒绝并返回403、404、500错误处理等。

2、location指令语法

location [=|~|~*|^~|@] /uri/ { … } 或 location @name { … }

3、URI匹配模式

location指令分为两种匹配模式:
1> 普通字符串匹配:以=开头或开头无引导字符(~)的规则
2> 正则匹配:以~或~*开头表示正则匹配,~*表示正则不区分大小写

4、location URI匹配规则

当nginx收到一个请求后,会截取请求的URI部份,去搜索所有location指令中定义的URI匹配模式。在server模块中可以定义多个location指令来匹配不同的url请求,多个不同location配置的URI匹配模式,总体的匹配原则是:先匹配普通字符串模式,再匹配正则模式。只识别URI部份,例如请求为:/test/abc/user.do?name=xxxx

一个请求过来后,Nginx匹配这个请求的流程如下:

1> 先查找是否有=开头的精确匹配,如:location = /test/abc/user.do { … }

2> 再查找普通匹配,以 最大前缀 为原则,如有以下两个location,则会匹配后一项
* location /test/ { … }
* location /test/abc { … }

3> 匹配到一个普通格式后,搜索并未结束,而是暂存当前匹配的结果,并继续搜索正则匹配模式

4> 所有正则匹配模式location中找到第一个匹配项后,就以此项为最终匹配结果
所以正则匹配项匹配规则,受定义的前后顺序影响,但普通匹配模式不会

5> 如果未找到正则匹配项,则以3中缓存的结果为最终匹配结果
6> 如果一个匹配都没搜索到,则返回404

5、精确匹配与模糊匹配差别
location =/ { … } 与 location / { … } 的差别:
* 前一个是精确匹配,只响应/请求,所有/xxx或/xxx/xxxx类的请求都不会以前缀的形式匹配到它
* 后一个是只要以 / 为前缀的请求都会被匹配到。如:/abc , /test/abc, /test/abc/aaaa

6、正则与非正则匹配

1> location ~ /test/.+.jsp$ { … } :正则匹配,支持标准的正则表达式语法。
2> location ^~ / { … } : ^~意思是关闭正则匹配,当搜索到这个普通匹配模式后,将不再继续搜索正则匹配模式。

...http { ... server { listen 80; server_name localhost; location / { root html; index index index.htm; # deny all; 拒绝请求,返回403 # allow all; 允许请求 } location /abc { deny all; } location ~ /.+\.jsp$ { proxy_pass http://location:9090; } # 匹配所有/test路径下的jsp文件 location ~ /test/.+\.jsp$ { proxy_pass http://localhost:8080; } # 定义各类错误页 error_page 404 /404 error_page 500 502 503 504 /50x; location = /50x { root html; } # @类似于变量定义 # error_page 403 http://blog.csdn.net; #这种定义不允许,需求利用@定义临时变量来实现 error_page 403 @page403; location @page403 { proxy_pass http://blog.csdn.net; } }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持站长源码网。

《Nginx Location指令URI匹配规则详解小结》来自互联网同行内容,若有侵权,请联系我们删除!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

虚拟主宰:AI技术在人性探究中的应用探析

随着科技的快速发展,人工智能技术成为重要的研究领域之一。虚拟主宰是一款以人工智能技术为基础的游戏,通过模拟人类心理和行为,突破了传统游戏的局限性,为人性探究提供了新的方法和视角。本文将从以下四个方面探...

韩国多ip服务器租用怎么样?租用韩国多ip服务器地址是多少?

什么是韩国多ip服务器?韩国多ip服务器租用怎么样?韩国多ip服务器租用有哪些优势?以下是关于韩国多ip服务器的详细介绍。一、韩国多ip服务器是什么意思?多ip服务器就是指一台服务器配置多个ip地址,...

租用菲律宾服务器部署网站的5大优势

随着全球互联网技术的不断发展和进步,网站部署已经成为了互联网企业的必备环节。租用菲律宾服务器部署网站就成为了不少企业选择的方式,本文将从成本、安全、速度、稳定性、技术支持这五个方面,介绍租用菲律宾服务...

免备案空间如何防御CC攻击(防御CC攻击的免备案空间方法)

一、CC攻击的形式及危害CC攻击,即“HTTP Flood攻击”,它采用了一种针对服务端的攻击方式,通过一些技术手段使实际请求产生的流量倍增,以达到攻击的目的。这种攻击方式不需要特殊的技能,攻击者只需...

山东枣庄服务器

枣庄服务器的选择与应用对于企业而言,选择一台可靠的服务器是至关重要的,因为服务器不仅影响企业的业务和效率,还关乎企业的信息安全和稳定性。在山东,枣庄服务器是不错的选择,下面我们来了解一下枣庄服务器的特...

云服务器如何连接本地打印机(云服务器连接本地打印机)

一、准备工作云服务器连接本地打印机需要满足以下几个条件:1. 本地电脑和云服务器必须在同一局域网内。2. 本地电脑必须连接打印机,并且打印机必须处于开启状态。3. 云服务器必须支持打印机连接,可以通过...