美文网首页Nginx
Nginx Location处理逻辑(优先级)权威解读

Nginx Location处理逻辑(优先级)权威解读

作者: 健四郎 | 来源:发表于2019-08-22 14:43 被阅读0次

    Nginx location directive分两种: prefix strings (就是路径名) and regular expressions(正则表达)。

    prefix strings如:location /images

    正则表达式以 (区分大小写)或者*(不区分大小写)为前导(修饰符),如location ~ .php$。

    Nginx 对Location处理逻辑:

    1.用uri测试所有的prefix strings;

    2.Uri精确匹配到=定义的loacation,使用这个location,停止搜索;
    3.匹配最长prefix string,如果这个最长prefix string带有^~修饰符,使用这个location,停止搜索,否则:
    4.存储这个最长匹配;
    5.然后匹配正则表达;
    6.匹配到第一条正则表达式,使用这个location,停止搜索;

    7.没有匹配到正则表达式,使用第4步存储的prefix string的location。

    请注意第3步中的最长两个字。

    举例:

    nginx server配置如下:

    server {
    listen 80;
    server_name m4 alias m4.ibm.com;
    root /usr/shar/nginx/html;

    1

    location = / {
    return 500;
    }

    2

    location /a/1.html {
    return 400;
    }

    3

    location ~ .html {
    return 401;
    }

    4

    location /a/b {
    return 402;
    }

    5

    location ^~ /a {
    return 403;
    }

    6

    location = /a/1.html {
    return 404;
    }
    }

    测试:

    http://m4/a/1.html
    404
    精确匹配#6

    http://m4/a/2.html
    403
    最长匹配#5,不再匹配正则表达式

    http://m4/a/b/1.html
    401
    最长匹配#4,然后匹配#3正则表达式

    http://m4/a/b/1.h
    402
    最长匹配#4,没有匹配的正则表达式

    相关文章

      网友评论

        本文标题:Nginx Location处理逻辑(优先级)权威解读

        本文链接:https://www.haomeiwen.com/subject/pjfnsctx.html