linux nginx的location详解

nginx 的 location

Nginx中location的作用是根据Url来决定怎么处理用户请求(转发请求给其他服务器处理或者查找本地文件进行处理)。location支持正则表达式,配置十分灵活。我们可以在一个虚拟主机(nginx中的一个server节点)下配置多个location以满足如动静分离,防盗链等需求。

使用Nginx Location可以控制访问网站的路径, 但一个server可以有多个location配置, 多个location的优先级该如何区分。

location语法:location [=|~|~*|^~]  /uri/ {… },具体解释如下表:
符号含义
location = /url= :开头,表示精确匹配,uri必须完全一致才能匹配成功
location ^~ /Purl^~:Puri和请求url的开头相同就匹配成功,且不再去匹配正则,也属于普通匹配
location /Purl普通匹配,Purl和用户请求url的开头相同就匹配成功,如果有多个普通匹配都匹配成功则按最长的 。  如有location /static/,和oaction /static/img/ 当请求是www.mysite.com/static/img/1.jpg时,第二个location匹配的更长,所以和第二个loaction匹配成功。
location ~ reg~ :区分大小写的正则匹配
location ~* reg~* :不区分大小写的正则匹配
匹配符匹配规则优先级
=精确匹配1
^~以某个字符串开头2
~区分大小写的正则匹配3
~*不区分大小写的正则匹配3
/通用匹配,任何请求都会匹配到4

location案例

通过location案例运用到匹配符来判断优先级。
server {
    listen 80;
    server_name _;
	
	不区分大小写的正则匹配
    location ~* /python {
        default_type text/html;   # 指定类型
        return 200 "Location ~*";  # 返回状态码为200打印location ~*
    }
	
	区分大小写的正则匹配
    location ~ /Python {
        default_type text/html;
        return 200 "Location ~";
    }
	以某个字符串开头
    location ^~ /python {
        default_type text/html;
        return 200 "Location ^~";
    }
	
	精确匹配
    location = /python {
        default_type text/html;
        return 200 "Location =";
    }

**这里优先级最高的就为 = **

如果把精准匹配 = 注释掉我们再来看一下这个优先级的变化。

**这里就可以看出来优先级的变化为 ^~ **

最后再来测试一下同级别的 ~ 与 ~*  : 通过两张图来验证一下

通过上图可以发现 在同级别的(~) 与 (~*) 中 location的读取顺序是从上到下依次执行的 所以在上方的优先级大于下方的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值