nginx 中 location [=|~|~*|!~|…]/uri/ 使用说明!

服务器 · 2021-09-10 ·

Nginx是一种Web服务器,基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。

nginx location 语法

= 
#严格匹配。如果这个匹配上,那么将停止搜索并立即处理此请求。
~ 
#为区分大小写匹配(可用正则表达式)
!~ 
#为区分大小写不匹配
~* 
#为不区分大小写匹配
!~* 
#为不区分大小写不匹配
^~
#匹配到即停止搜索
location = / {

#
只匹配 / 查询。

}

location / {

    #匹配任何查询, 因为所有请求都已 / 开头。 但是正则表达式规则和长的块规则将被优先和查询匹配。

}

location ^ ~/html/ {

    #匹配任何已 /html/ 开头的任何查询并且停止搜索。 任何正则表达式将不会被测试。

}

location~ * .(gif|jpg|jpeg) $ {

    #匹配任何已 gif、 jpg 或 jpeg 结尾的请求。

}

location~ * .(gif|jpg|swf)$ {

    valid_referers none blocked mla.xin;

    if ($invalid_referer) {

        #防盗链

        rewrite ^ / http://$host/ logo.png;

    }

}

# valid_referers none blocked" 其中"none" "blocked" 的意思分别是:none代表没有referer;blocded代表有referer但是被防火墙或者是代理给去除了。首先当我输入我要打开的网址的时候,因为是直接输入的没有referer所以匹配了
#valid_referers后面的none或者是blocked 所以invalid_referer值为0 所以不进行跳转.当我是从这个网站里面的链接跳到该网站首页的时候 因为referer的值是肯定包含srever_names 所以匹配了server_names所以不进行跳转。
#当我从搜素引擎进去的时候因为referer字段类似于www.google.com.hk/search开始进行匹配 发现没有一个匹配,则此时会设置invalid_referer值为1 if语句成功执行,进行了跳转. 达到功能
%