在一个 location 中使用 content 阶段指令时,通常情况下就是对应的 Nginx 模块注册该 location 中的“内容处理程序”。那么当一个 location 中未使用任何 content 阶段的指令,即没有模块注册“内容处理程序”时,content 阶段会发生什么事情呢?谁又来担
转载 2018-01-18 08:56:00
106阅读
2评论
来看一个ngx_static模块服务磁盘文件的例子。我们使用下面这个配置片段:location/{root/var/www/;}同时在本机的/var/www/目录下创建两个文件,一个文件叫做index.html,内容是一行文本thisismyhome;另一个文件叫做hello.html,内容是一行文...
转载 2014-12-18 15:00:00
161阅读
2评论
如前文所述,除非像ngx_set_misc模块那样使用特殊技术,其他模块的配置指令即使是在rewrite阶段运行,也不能和ngx_rewrite模块的指令混合使用。不妨来看几个这样的例子。第三方模块ngx_headers_more提供了一系列配置指令,用于操纵当前请求的请求头和响应头。其中有一条名叫...
转载 2014-12-18 14:46:00
160阅读
2评论
紧跟在post-access阶段之后的是try-files阶段。这个阶段专门用于实现标准配置指令try_files的功能,并不支持 Nginx 模块注册处理程序。由于try_files指令在许多 FastCGI 应用的配置中都有用到,所以我们不妨在这里简单介绍一下。try_files指令接受两个以上...
转载 2014-12-18 15:22:00
199阅读
2评论
运行在post-rewrite阶段之后的是所谓的preaccess阶段。该阶段在access阶段之前执行,故名preaccess.标准模块ngx_limit_req和ngx_limit_zone就运行在此阶段,前者可以控制请求的访问频度,而后者可以限制访问的并发度。这里我们仅仅和它们打个照面,后面还...
转载 2014-12-18 15:03:00
190阅读
2评论
紧接在server-rewrite阶段后边的是find-config阶段。这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与location配置块之间的配对工作。换句话说,在此阶段之前,请求并没有与任何location配置块相关联。因此,对于运行在find-co...
转载 2014-12-18 15:02:00
98阅读
2评论
前面我们在(五)中提到,在一个location中使用content阶段指令时,通常情况下就是对应的 Nginx 模块注册该location中的“内容处理程序”。那么当一个location中未使用任何content阶段的指令,即没有模块注册“内容处理程序”时,content阶段会发生什么事情呢?谁又来...
转载 2014-12-18 14:51:00
73阅读
2评论
大多数 Nginx 新手都会频繁遇到这样一个困惑,那就是当同一个location配置块使用了多个 Nginx 模块的配置指令时,这些指令执行顺序很可能会跟它们的书写顺序大相径庭。于是许多人选择了“试错法”,然后他们的配置文件就时常被改得一片狼藉。这个系列的教程就旨在帮助读者逐步地理解这些配置指令背...
转载 2014-12-18 14:35:00
166阅读
2评论
前面我们详细讨论了rewrite、access和content这三个最为常见的 Nginx 请求处理阶段,在此过程中,也顺便介绍了运行在这三个阶段的众多 Nginx 模块及其配置指令。同时可以看到,请求处理阶段的划分直接影响到了配置指令执行顺序,熟悉这些阶段对于正确配置不同的 Nginx 模块并实...
转载 2014-12-18 15:01:00
148阅读
2评论
Nginx 的content阶段是所有请求处理阶段中最为重要的一个,因为运行在这个阶段的配置指令一般都肩负着生成“内容”(content)并输出 HTTP 响应的使命。正因为其重要性,这个阶段的配置指令也异常丰富,例如前面我们一直在示例中广泛使用的echo指令,在Nginx 变量漫谈(二)中接触到的...
转载 2014-12-18 14:50:00
162阅读
2评论
ngx_lua模块提供了配置指令access_by_lua,用于在access请求处理阶段插入用户 Lua 代码。这条指令运行于access阶段的末尾,因此总是在allow和deny这样的指令之后运行,虽然它们同属access阶段。一般我们通过access_by_lua在ngx_access这样的模...
转载 2014-12-18 14:48:00
84阅读
2评论
我们前面已经知道,当set指令用在location配置块中时,都是在当前请求的rewrite阶段运行的。事实上,在此上下文中,ngx_rewrite模块中的几乎全部指令,都运行在rewrite阶段,包括Nginx 变量漫谈(二)中介绍过的rewrite指令。不过,值得一提的是,当这些指令使用在ser...
转载 2014-12-18 14:36:00
173阅读
2评论
程序的流程分为顺序执行、条件分支和循环三种。顺序执行是指按照地址内容的顺序执行指令。条件分支是指根据条件执行任意地址的指令。循环是指重复执行同一地址的指令顺序执行的情况比较简单,每执行一个指令程序计数器的值就自动加1。但若程序中存在条件分支和循环,机器语言的指令就可以将程序计数器的值设定为任意地址(不是 +1 )。这样一来,程序便可以返回到上一个地址来重复执行同一个指令,或者跳转到任意地址。接下
 无序执行指令(Out-of-Order,简称OoO)模式允许CPU充分利用指令周期,避免由于某个指令延迟导致指令周期被浪费。在这种模式下,处理器根据输入数据的可用性来安排指令执行顺序,而不是程序原先输入数据的顺序。通过这种执行顺序上的调整,处理器可以避免由于指令等待数据可用带来的空闲,转而执行数据可用的指令。   为了更好的说明无序执行指令模式,我们首先看看顺序
处理器基本上会按照程序中书写的机器指令顺序执行。按照书写顺序执行称为按序执行(In-Order )。按照书写顺序执行时,如果从内存读取数据的加载指令、除法运算指令等延迟(等待结果的时间)较长的指令后面紧跟着使用该指令结果的指令,就会陷入长时间的等待。尽管这种情况无可奈何,但有时,再下一条指令并不依赖于前面那条延迟较长的指令,只要有了操作数就能执行。此时可以打乱机器指令顺序,就算指令
转载 2023-08-04 10:14:46
146阅读
一、Nginx介绍Nginx的产生        没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过
[导读] location指令是server段中的一个指令,可以对不同路径或不同文件类型进行特殊处理。例如用的比较多的就是针对网站的静态内容设置缓存。由于一个server段中可以有多个location,而http请求最终只能使用其中的一个location指令是server段中的一个指令,可以对不同路径或不同文件类型进行特殊处理。例如用的比较多的就是针对网站的静态内容设置缓存。由于一个ser
转载 2022-06-01 18:53:46
248阅读
本文为《nginx 模块设计系列》的第二篇文章,主要说明 ngx_module_t 加载的顺序。ngx_modules_t 的加载顺序取决于 ngx_modules.c 中定义的 ngx_modules[] 数组。而 ngx_modules.c 是执行 ./configure 脚本过程中自动生成的。我们先来看看 ngx_modules.c 文件中的内容。1234567891011121314151
转载 2020-12-17 16:07:09
3121阅读
location匹配命令 1. “= ”,字面精确匹配, 如果匹配,则跳出匹配过程。(不再进行正则匹配) 2. “^~ ”,最大前缀匹配,如果匹配,则跳出匹配过程。(不再进行正则匹配) 3. 不带任何前缀:最大前缀匹配,举例如下: location / 代表以"/"开头的搜索匹配, 再没有正则表达式
转载 2019-01-22 13:16:00
89阅读
2评论
资料准备http://openresty.org/cn/download.htmlcentos 版本需要参考资料:https://moonbingbing.gitbooks.io/openresty-best-practices/content/ngx/if_is_evil.htmlwindows安装下载windows版本的openresty: 解压启动nginx.exe:双击nginx.exe运
  • 1
  • 2
  • 3
  • 4
  • 5