Nginx的location指令怎么用?

Syntax: location [ = | ~ | ~* | ^~ ] uri { … } location @name { … } Default: — Context: server, location 根据请求的URL设置处理逻辑 匹配工作会在解码%XX形式的参数后进行,同时也会将“.” 和 “..”依据网址进行转换,同时也会将两个甚至多个斜杠压缩成一个斜杠。 一个location定义可以基于前缀字符串(prefix string), 或者正则表达式(regular expression). 正则表达式又分为两种:“~*”不区分大小写,“~”区分大小写。为了找到最终的location定义,需要遵循以下逻辑:nginx首先检查以前缀字符串方式定义的location, 如果请求的网址被多个前缀字符串匹配,则最长的那个会被选择并记住。接下来正则表达式定义会被检查,检查顺序按照配置的先后顺序。正则表达式的检查,只要找到一个匹配就立刻中止,对应的配置会被使用。如果正则表达式定义没有符合要求的,则使用之前记住的最长的前缀字符串式定义。 Location配置块可以嵌套定义。上述规则的例外情况请见下文: 如果最长的前缀式匹配带有“^~”修饰符,则不会检查正则表达式定义。 使用”=”修饰符来定义完全匹配,如果找到了完全匹配的location定义则规则搜索终止。 比如,请求”/”经常发生,定义“location = /”可以加速此类请求的处理速度,因为找到此规则即可终止搜索。 在nginx0.7.1版本到0.8.41版本,即使前缀location没有”=”或“^~”修饰符,也会直接终止,同时不会检查正则式定义。

Matomo数据模型系列文章之(五)报表

归档数据就是归档过程中产生的数据,它被以记录的形式存储在数据库中。这些记录随后会被加载并转化成报表,最后呈现在用户面前。 从记录到报表 在之前的文章中说到记录与报表时是所区别的。记录被结构化、被优化,存储在数据库中。它对人类和其他软件来说是不可读的。 API方法不能简单读取这些归档数据并直接返回。它们必须被格式化以便呈现在报表中。 DataTable过滤器 报表会被存储在DataTable类对象中,这些对象可以以下形式进行操作: 遍历每一行并手工修改 使用DataTable过滤器 DataTable过滤器操作DataTable实例的方法是一致的。Piwik已经预定义了一些过滤器,这样你可以直接使用它们而无需为通常的操作写很多代码了。 有时候为了存储效率,需要对报表对应的记录进行一定程度改变。而呈现报表则需要将改变后的记录重新恢复。比如说,代表列的整型ID恢复成字符串类型,通过ReplaceColumnName过滤器即可完成。 $dataTable->filter(‘ReplaceColumnNames’); 暴露报表 报表由插件中定义的API类生成。这些类加载归档记录,将它们转换成可以呈现的报表,然后通过报表API提供服务。 报表API可以通过HTTP请求进行调用或直接通过PHP代码(如在控制器Controller方法中) 调用。 学习更多 阅读报表API 关于报表如何呈现的内容,请阅读可视化报表数据