nginx location 配置
location匹配顺序
- "="前缀指令匹配,如果匹配成功,则停止其他匹配
- 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)
- 正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配
- 如果第三步中有匹配成功,则使用该结果,否则使用第二步结果
注意点
匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配顺序是根据配置中字符长度从长到短,也就是说使用普通字符串配置的location顺序是无关紧要的,反正最后nginx会根据配置的长短来进行匹配,但是需要注意的是正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。
一般情况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法改变这种行为,其一就是使用“=”前缀,这时执行的是严格匹配,并且匹配成功后立即停止其他匹配,同时处理这个请求;另外一种就是使用“^~”前缀,如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。
匹配模式及顺序
location = /uri =开头表示精确匹配,只有完全匹配上才能生效。
location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。
location ~ pattern ~开头表示区分大小写的正则匹配。
location ~* pattern ~*开头表示不区分大小写的正则匹配。
location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。
location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。
实验案例
测试"^~"和"~",nginx配置如下。浏览器输入http://localhost/helloworld/test,返回601。如将#1注释,#2打开,浏览器输入http://localhost/helloworld/test,返回603。注:#1和#2不能同时打开,如同时打开,启动nginx会报nginx: [emerg] duplicate location "/helloworld"...,因为这两个都是普通字符串。
location ^~ /helloworld { #1return 601; }#location /helloworld { #2 # return 602; #}location ~ /helloworld {return 603; }
测试普通字符串的长短(普通字符串的匹配与顺序无关,与长短有关)。浏览器输入http://localhost/helloworld/test/a.html,返回601。浏览器输入http://localhost/helloworld/a.html,返回602。
location /helloworld/test/ { #1return 601; }location /helloworld/ { #2return 602; }
测试正则表达式的顺序(正则匹配与顺序相关)。浏览器输入http://localhost/helloworld/test/a.html,返回602;将#2和#3调换顺序,浏览器输入http://localhost/helloworld/test/a.html,返回603
location /helloworld/test/ { #1return 601; }location ~ /helloworld { #2return 602; }location ~ /helloworld/test { #3return 603; }
转载于:https://www.cnblogs.com/senlinyang/p/9357067.html
nginx location 配置相关推荐
- php localtion,详解Nginx Location配置
今天有一位同学问到 Nginx 的站点多路径匹配的问题? 1.www.domain.com/a 需要返回 /var/www/domain.com/a/index.html 2.www.domain.c ...
- nginx location配置 - ttlsa教程系列之nginx
为什么80%的码农都做不了架构师?>>> 今天讲下location的用法,部分内容是直接从网络上摘取的,这边做了一个整理,为了便于理解和学习,我这边做了一些例子. 语法规则: ...
- nginx location 配置详细解释
语法规则: location [=|~|~*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因 ...
- Nginx Location配置总结
转载至http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html 语法规则: location [=|~|~*|^~] /uri/ { - } 转载至 ...
- nginx location配置详细解释
nginx的安装配置三部曲:点击即可查看 1.安装和配置文件的基础配置,ctrl+f搜索nginx 2.nginx文档如何查看 + 常用的配置方式(伪静态,反向代理,动静分离,防盗链,图片缓存,gzi ...
- nginx location 配置path,如不带斜杆访问,出现异常
问题举例: location 配置了 ^~/mobile 访问: http://yourdomain/mobile/ 正常: 访问: http://yourdomain/mobile 异常,ngi ...
- Nginx——location配置
1.基本语法 location [=|~|~*|^~|@] pattern {--} 其中,[=|~|~*|^~|@]被称作location modifier,这会定义Nginx如何去匹配其后的pat ...
- nginx location 配置中 try_files, alias, root, index 的
需求场景 朋友让我帮忙挂一个网页,有点类似"钓鱼"的性质(开玩笑,没这么严重),就是找一个类似的域名,把原网站其中一个网页完全复制过来,修改其中的内容,然后给甲方看.但是,这个新域 ...
- nginx location配置详解
2019独角兽企业重金招聘Python工程师标准>>> location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大 ...
最新文章
- vue商城项目开发:底部导航样式、顶部导航矩阵和轮播图
- Bengio、周志华、山世光、包云岗等200+位AI学术领袖邀你观看智源大会精彩论坛...
- 7-8 InputMismatchException异常 (20 分)
- jHipster入门,第1部分
- 装饰器python的通俗理解_Python装饰器的通俗理解
- 报错:/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.29.5/UITableView.m:7943解决方法
- 【可视化编程一】关于Unity可视化编程(Visual Scripting)
- Maven下载及安装教程
- Python基础练习-每日一题-大家来找茬!
- [poj3580]SuperMemo(splay终结题)
- 哪一种编程语言适合人工智能
- C语言编辑bmi计算器,使用事件处理程序的BMI计算器计算
- 给父母的礼物!一键让Android变身老人机
- 易语言打开摄像头_api摄像头拍照源代码 调用API函数创建视频设备
- 关于Verilog 写法
- 倍福plc的型号_EL9186——plc倍福模块+EL9100型号EL9010
- 上线项目 Docker部署项目到服务器总结
- html5/css实现字体上划线
- 【unity学习笔记-如何给动态的人物添加碰撞体】
- matlab使用出现矩阵为奇异值、接近奇异值或缩放错误。结果可能不准确。RCOND = NaN。
热门文章
- linux开发 stc_Linux环境下搭建STC单片机平台的指南
- git原理详解与实操指南_基于dockercompose的Gitlab CI/CD实践amp;排坑指南
- 实际返回的行数超出请求的行数_代码行数越少越好?
- python如何请求curl_Python爬虫偷懒神器 —— 一键构造请求头!
- ctfd的mysql导入_centos7 CTFd平台搭建过程
- c语言坐标打印佛祖,C语言输入平面上两个点的坐标(double类型),计算两个点之间的距离。看”详细“里哪里写错了谢谢...
- NEAT(NeuroEvolution of Augmenting Topologies)算法详解与实践(基于NEAT-Python)
- 如何使用Python numpy.where()方法
- jqueryui时间插件_jQueryUI AutoComplete插件
- java堆 数据结构 堆_快速堆数据结构