从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

Nginx的Location匹配规则

发布:蔺要红03-31分类: Nginx

语法规则

=       #用于标准uri前,需要请求字串与uri完全匹配,如果匹配成功就停止向下匹配并立即处理请求。
~       #区分大小写
~*      #不区分大写
^       #匹配以什么开头
$       #匹配以什么结尾
\       #转义字符。可以转. * ?等
*       #代表任意长度的任意字符
 
location =|~|~*|^~] /uri/ { … }

location = / {                       表示精确匹配  = 优先级最高 
location ^~ /images/ {               匹配常规字符串,不做正则匹配检查优先匹配
location ~* \.(gif|jpg|jpeg)$ {      正则匹配规则、不区分大小写
location /document/                  匹配常规字符串,如果有正则,优先匹配正则
location / {                         所有location 都不能匹配的时候,默认匹配 
~       区分大小写匹配

~*      不区分大小写匹配

server配置文件:

server {
    listen       80;
    server_name  www.linyaohong.com  linyaohong.com;
    access_log    logs/www_access.log main;
    location = / {
        return 402;
    }
    location / {
        return 401;
    }
    location /document/ {
        return 403;
    }
    location ^~ /images/ {
        return 404;
    }
    location ~* \.(gif|jpg|jpeg)$ {
        return 500;
    }
}

用户请求的url

设置的状态码

说明

当为空或者/时候

location = / {
    return 402;
    }

= 的精确匹配优先级最好,无论放的顺序如何,它都将优先被匹配执行

/index.html或者任意不匹配其他location的字符串

location / {
     return 401;
     }

/为默认匹配,如果没有匹配上其他location,则最后匹配”默认匹配的部分”

/document/document.html

location /document/ {
    return 403;
    }

此部分为路径匹配,匹配路径/document/

下面的/document/1.jpg 没有匹配此处的location

/document/1.jpg

location ~* \.(gif|jpg|jpeg)$ {
    return 500;
    }

此部分匹配了1.jpg,属于扩展名匹配,虽然有

/document/ 但是还是匹配了扩展名,正则优先匹配

/images/1.jpg

location ^~ /images/ {
    return 404;

}

此部分为路径匹配,但是前面加了特殊字符^~

所以优先匹配路径,而没有匹配结尾的jpg



 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站