Nginx location配置

作用

location指令的作用是根据用户请求的URI来执行不同的应用,其实就是根据用户请求的网站地址URI进行匹配,匹配成功即进行相关的操作。

语法

location [ = | ~ | ~* |^~ ] uri {
    ...
}

上面就是location的语法,上述语法中uri部分是关键,这个uri可以是普通的字符串地址路径,或者是正则表达式,匹配成功后则执行大括号里的相关指令。使用正则表达式的时候前面还可以有~~*等特殊字符。

~区分大小写,~*不区分大小写,还可以加!对匹配结果取反,此外,^~的作用是在进行常规的字符串匹配检查之后,不做正则表达式的检查,即如果最明确的那个字符串匹配的location有此前缀,那么就不进行正则表达式的检查。

示例

location = /{
    [configuration A]
}
location / {
    [configuration B]
}
location /documents/ {
    [configuration C]
}
location ^~ /images/ {
    [configuration D]
}
location ~* .(gif|jpg|jpeg)$ {
    [configuration E]
}

上述location配置中,当用户请求/时,将匹配configuration A,当用户请求/index.html时,将匹配configuration B,当用户匹配/documents/document.html时,将匹配configuration C,当用户请求/images/1.gif时,将匹配configuration D,当用户请求/documents/1.jpg时,将匹配configuration E

实战

配置location

server {
    listen 80;
    server_name test.com; #测试的域名

    location / {
        return 401;
    }

    location = / {
        return 402;
    }

    location /documents/ {
        return 403;
    }

    location ^~ /images/ {
        return 404;
    }

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

重启nginx

./sbin/nginx -t 
./sbin/nginx -s reload 

添加Host解析

123.206.176.xxx       test.com #填你的真实ip

测试

(1) 为空或/

这里写图片描述

=为精确匹配,优先级最高,不论放置的顺序如何,它都将优先被匹配并执行

(2)/index.html

这里写图片描述

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

(3)/documents/documents.html

这里写图片描述

此部分为路径匹配,即匹配了/documents/,注意后面的/documents/1.gif,这表示没有匹配此处的location,而是匹配了以.gif结尾的location

(4)/images/1.gif

这里写图片描述

此部分为路径匹配,但是前面加了^~,所以优先匹配路径,匹配到了就没有匹配以.gif结尾的location

(6)/documents/1.gif

这里写图片描述

此部分匹配了1.gif,属于扩展名匹配,虽然有/documents/,但还是先匹配了扩展名

在重新体会一下默认匹配的含义,如果都没有匹配到,就匹配默认匹配吗,也就是/

这里写图片描述

原文地址:https://www.cnblogs.com/cnsec/p/13406997.html