美文网首页
Nginx location的用法

Nginx location的用法

作者: 饱饱想要灵感 | 来源:发表于2022-12-19 17:10 被阅读0次

    location 常用匹配规则

    符号 类型 含义
    = 精确匹配 进行普通字符完全匹配
    ^~ 前缀匹配 表示普通字符匹配。如果匹配成功,则不再匹配其他location
    ~ 正则匹配 匹配大小写的匹配
    ~* 正则匹配 不区分大小写的匹配
    !~ 正则匹配 区分大小写的匹配取非
    !~* 正则匹配 不区分大小写的匹配取非

    匹配优先级规则

    • 首先看优先级:精确 > 前缀 > 正则 > 一般匹配(不带任何修饰的前缀匹配) > 通用匹配

      (location = 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

    • 如果优先级相同:正则匹配看上下顺序,上面的优先;而一般匹配看长度,最长匹配的优先

    例子讲解

    例子 类型 是否继续搜索 解释
    location = / {} 精确匹配 主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配
    location / {} 通用匹配 将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配, /data 也匹配,
    但若后面是正则表达式会和最长字符串优先匹配(最长匹配)
    location /documents/ {} 一般匹配 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location
    只有其它 location后面的正则表达式没有匹配到时,才会采用这一条
    location /documents/abc {} 一般匹配 匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location
    只有其它 location后面的正则表达式没有匹配到时,才会采用这一条
    location ^~ /images/ {} 前缀匹配 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条
    location ~* .(gif|jpg|jpeg)$ {} 正则匹配 匹配所有以 gif、jpg或jpeg 结尾的请求
    但如果和前一个例子一起使用,那么所有请求 /images/ 下的图片会被 location ^~ /images/处理,因为 ^~ 的优先级更高,所以到达不了这一条正则
    location /images/abc {} 一般匹配 最长字符匹配到 /images/abc,优先级最低,继续往下搜索其它 location,会发现 ^~ 和 ~ 存在
    location ~ /images/abc {} 正则匹配 匹配以/images/abc 开头的
    如果和location ^~ /images/一起使用, 将不会到达这一条
    location /images/abc/1.html {} 一般匹配 匹配/images/abc/1.html 文件,如果和正则location ~ /images/abc/1.html 相比,正则优先级更高

    实际场景常用

    location = / {
        root   html;
        index  index.html index.htm;
    }
    
    location ^~ /static/ {
        root /webroot/static/;
    }
    
    location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {
        root /webroot/res/;
    }
    
    location /app/ {
        proxy_pass http://tomcat_server;
    }
    

    相关文章

      网友评论

          本文标题:Nginx location的用法

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