nginx配置-location
以 =开头表示精确匹配
如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。- ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
 - ~ 开头表示区分大小写的正则匹配;
 - ~* 开头表示不区分大小写的正则匹配
 - / 通用匹配, 如果没有其它匹配,任何请求都会匹配到
 
顺序优先级:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)
测试:
1.
        location = /api {
          #精确匹配
          return 402;
        }
        location /api {
            # 匹配任何以 /api 开头的地址,匹配符合以后,还要继续往下搜索
            # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
            return 403;
        }
请求http://localhost:8090/api, 返回:402 Payment Required
请求http://localhost:8090/api/a,返回:403 Forbidden
(location =) > (location 完整路径)
2.
        location ^~ /api/ {
            # 匹配任何以 /api/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
            return 401;
        }
        location /api {
            return 403;
        }
注意这里 location ^~ /api/ 和 location /api 不能相同,若 location /api 改成 location /api/,启动会报错,nginx: [emerg] duplicate location "/api/"
请求http://localhost:8090/api, 返回:403 Forbidden
请求http://localhost:8090/api/a,返回:401 Authorization Required
(location 完整路径) > (location ^~ 路径)
3.
        location ^~ /api/ {
            # 匹配任何以 /api/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
            return 401;
        }
        location ~ \.(gif|jpg|jpeg)$ {
            return 405 ;
        }
请求http://localhost:8090/api/a.jpg, 返回:401 Authorization Required
请求http://localhost:8090/aa/a.jpg,返回:405 Not Allowed
(location ^~ 路径) > (location ~,~* 正则顺序)
欢迎扫码交流:

nginx配置-location的更多相关文章
- rewrite规则写法及nginx配置location总结
		
rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用. 例如http://seanlook.com/a/we/index.php ...
 - Nginx配置location及rewrite规则
		
Nginx配置location及rewrite规则 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } loca ...
 - nginx配置location总结及rewrite规则写法【转】
		
转自 nginx配置location总结及rewrite规则写法 | Sean's Noteshttp://seanlook.com/2015/05/17/nginx-location-rewrite ...
 - Nginx 配置 Location 规则优先级问题
		
nginx 的 location与配置中 location 顺序没有关系,与 location 表达式的类型有关.相同类型的表达式,字符串长的会优先匹配. 以下是按优先级排列说明: 等号类型(=)的优 ...
 - [Nginx]   Nginx 配置location总结
		
cp from : https://www.cnblogs.com/coder-yoyo/p/6346595.html location匹配顺序 "="前缀指令匹配,如果匹配成功, ...
 - nginx配置location总结
		
location匹配顺序 "="前缀指令匹配,如果匹配成功,则停止其他匹配 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配) ...
 - Nginx配置location总结及rewrite规则写法
		
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 32.0px "Helvetica Neue"; color: #323333 } p. ...
 - Linux nginx 配置 location 语法 正则表达式
		
location语法:location [=|~|~*|^~] /uri/ { - }默认:否上下文:server这个指令随URL不同而接受不同的结构.你可以配置使用常规字符串和正则表达式.如果使用正 ...
 - 转:Nginx 配置 location 总结及 rewrite 规则写法
		
转: http://www.linuxidc.com/Linux/2015-06/119398.htm 1. location正则写法 一个示例: location =/{ # 精确匹配 / ,主机名 ...
 - 【转】nginx配置location总结及rewrite规则写法
		
原文:http://seanlook.com/2015/05/17/nginx-location-rewrite/ 1. location正则写法 location = / { # 精确匹配 / ,主 ...
 
随机推荐
- is_numeric漏洞总结
			
将16进制数据判断为数据,这样在存入数据库后,数据库会把16进制解析成字符串,可能造成二次注入 转载: https://www.jianshu.com/p/e7cf997d6ccb
 - SAP选择屏幕开发(一)(转)
			
原文链接:https://blog.csdn.net/wtxhai/article/details/90632686 用户通过屏幕操作来实现与SAP的数据交互,而SAP的屏幕开发一般分为两种,一种是通 ...
 - 转 python 字符串前加r
			
在打开文件的时候open(r'c:\....') 加r和不加''r是有区别的 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 ...
 - Spring-Cloud-Alibaba-Nacos 目录
			
Spring-Cloud-Alibaba-Nacos 目录 学习资料 Nacos 官网(https://nacos.io/zh-cn/docs/what-is-nacos.html) Nacos 程序 ...
 - JedisPool使用注意事项
			
转自:http://www.cnblogs.com/wangxin37/p/6397783.html JedisPool使用注意事项: 1.每次从pool获取资源后,一定要try-finally释放, ...
 - PHP json_encode 中文不转码,低版本处理
			
5.4 以上版本可以使用 JSON_UNESCAPED_UNICODE 来解决,但是低版本的,需要用其他方式 需要注意的是,encode_json参数为数组,不能为对象 function encod ...
 - C#设计模式:抽象工厂(Abstract Factory)
			
一,抽象工厂模式 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
 - JavaScript常用字符串方法和属性
			
一直以来 在喜马拉雅上听 陪你读书(JavaScript WEB前端) 主播沙翼 讲的很好 果断买了这本书 现在做个笔记 var str = ‘abcd’ str.charAt(0); // ...
 - windows下nvm的安装及使用
			
由于更新了npm版本之后导致npm的命令都会报错,一顿百度,明白了nvm可以管理node版本的,下面是操作过程: 如果在安装nvm之前已经下载了node 需要把node卸载!!! 需要把node卸载! ...
 - ubuntu开发c/c++帮助文档
			
1.C语言库函数基本的帮助文档 sudo apt-get install manpages sudo apt-get install manpages-de sudo apt-get install ...