资讯专栏INFORMATION COLUMN

Nginx location匹配规则

Carson / 851人阅读

摘要:以下列配置为例语法规则开头表示精确匹配开头表示以某个常规字符串开头,理解为匹配路径即可表示区分大小写的正则匹配表示不区分大小写的正则匹配和分别为区分大小写不匹配及不区分大小写不匹配的正则通用匹配,任何请求都会匹配到。

以下列配置为例

server {
    listen       80;
    server_name  jouypub.com;

    location ^~ /. {
        return 404;
    }
    location ^~ /api {
        proxy_pass http://localhost:8000;
    }
    location / {
        root /services/apps/front/;
    }
}
location语法规则: location [=|~|~*|^~] /uri/ { … }

= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可
~ 表示区分大小写的正则匹配
~* 表示不区分大小写的正则匹配
!~!~* 分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。

如果匹配规则以^开头,就是匹配以指定字符串开头的路径,如果没有就是匹配url中的内容是否包含指定字符串
如果匹配规则以$结尾,就是匹配以指定字符串结尾的路径

多个location配置的情况下匹配顺序为(当有匹配成功时候,停止匹配,按当前匹配规则处理请求):

优先匹配 =

其次匹配 ^~

按照文件中的匹配顺序执行

最后匹配 /

举例

1、必选规则

location / {
    root /services/apps/front/;
}

2、匹配静态资源

location ^~ /static/ {
    root /services/apps/front/static;
}
location ~* .(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}

3、防盗链

location ~* .(gif|jpg|swf)$ {
    valid_referers none blocked jouypub.com files.jouypub.com;
    if ($invalid_referer) {
        rewrite ^/ http://$host/logo.png;
    }
}

jouypub.com、files.jouypub.com是运行出现的白名单

4、根据文件类型设置过期时间

location ~* .(js|css|jpg|jpeg|gif|png|swf)$ {
    if (-f $request_filename) {
        expires 1h;
        break;
    }
}

5、禁止访问某个目录

location ~* .(txt|doc)${
    root /services/apps/front/doc;
    deny all;
}
location中的/结尾和非/结尾
location ^~ /api {
    proxy_pass http://localhost:8000;
}
location ^~ /api {
    proxy_pass http://localhost:8000/;
}

访问路径http://www.jouypub.com/api/a.html
规则1会被转发到:http://localhost:8000/api/a.html
规则2会被转发到:http://localhost:8000/a.html



欢迎订阅「K叔区块链」 - 专注于区块链技术学习

博客地址:http://www.jouypub.com
简书主页:https://www.jianshu.com/u/756c9c8ae984
segmentfault主页:https://segmentfault.com/blog/jouypub
腾讯云主页:https://cloud.tencent.com/developer/column/72548

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40506.html

相关文章

  • Nginx Location匹配规则

    摘要:先验证第二条普通之间的匹配顺序按最大前缀匹配配置普通普通测试链接,状态码为,符合预期。将正则的规则改下普通普通正则测试链接,状态码,匹配到,并且因为接下来没有符合的正则,所以最终返回为,符合预期。 本文非完全原创, 更多的是将相关资料进行整理 Last-Modified: 2019年5月10日15:28:29 参考链接 linux Nginx配置篇:location的匹配规则(附测试验...

    Lorry_Lu 评论0 收藏0
  • nginx location配置规则学习

    摘要:然后检查正则表达式,按照它们在配置文件中的显示顺序。正则表达式的搜索在第一个匹配中终止,并且使用相应的配置。正则表达式可以包含稍后可以在其他指令中使用的捕获。 最近学习vuejs,做前后端分离,demo做完了,最终还是要发布的,于是学习nginx,其它配置倒是还好理解,唯独对localtion理解不了,最后请教了一些网友,才得以解决问题,但是不希望下次还遇到问题,所以这里把localt...

    CoffeX 评论0 收藏0
  • 在开发环境下使用nginx重写uri及代理功能

    摘要:本文同步在个人博客上,欢迎关注这篇文章整理了在前端开发中,在开发环境下使用重写及代理功能的方法。表示该规则是使用正则定义的,区分大小写。因此牢记在上下文中使用,而在上下文中使用。 本文同步在个人博客shymean.com上,欢迎关注 这篇文章整理了在前端开发中,在开发环境下使用nginx重写uri及代理功能的方法。 参考 nginx中文文档 前端开发者必备的 Nginx 知识 Ngin...

    LMou 评论0 收藏0
  • Nginx 学习总结(3)—— Location 模块

    摘要:改为后,显示出文件的大概大小,单位是或者或者默认为,显示的文件时间为时间。 这是 Nginx 学习总结的第三篇,上一篇介绍到了 Nginx 学习总结(2) —— 基本配置,这一篇会对Location 模块 做一些总结。我们知道,Location 模块 主要是用于针对某些特定的 URL 进行配置,可以由前缀字符串定义,也可以由正则表达式定义。 Location 匹配规则 location...

    biaoxiaoduan 评论0 收藏0
  • nginx执行请求的工作原理之location匹配详解

    摘要:作为一名,配置是我们必会的技能项之一。只有请求的路径与后面的字符串完全相等时,才会命中。举例表示该规则是使用正则定义的,区分大小写。举例匹配优先级最后,我们了解下的查找规则。 作为一名PHPer,配置nginx是我们必会的技能项之一。但是当用户请求到达nginx之后,是如何匹配到对应的配置项的呢? location语法规则 首先我们先了解下location的语法规则,location语...

    jlanglang 评论0 收藏0
  • Nginx location你需要知道这些!

    摘要:首先,首先会检查所有的前缀,从中选出最长前缀匹配也就是修饰符后面的路径最长的的并记下。然后,如果存在正则时,按照其出现的顺序,依次匹配,找到匹配的正则就不再继续往下,并选择该作为最终的结果。 场景: 在项目开发中经常会遇到nginx配置文件中,会有很多条location配置,却读不懂其中的含义而烦恼 Location是什么? Location是Nginx中的块级指令(block dir...

    Atom 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<