首页 > 其他 > 详细

NGINX openrestry(指令的执行顺序)

时间:2019-04-26 00:15:08      阅读:138      评论:0      收藏:0      [点我收藏+]

Nginx的指令的执行顺序:

一、post-read

二、server-rewrite

  ngx_rewrite模块的set指令和rewrite指令(前提在server里面配置时)

三、find-config

四、rewrite

  ngx_rewrite模块的set指令和rewrite指令(前提在location里面配置时)

  ngx_set_misc模块的set_unescape_uri指令

  ngx_lua模块的set_by_lua指令

  rewrite tail:

  ngx_headers_more模块的more_set_input_headers指令

  ngx_lua模块的rewrite_by_lua指令

五、post-rewrite

六、preaccess

七、access

  ngx_access模块的allow指令和deny指令(多个指令会按顺序进行执行)

  如果首先匹配的指令是 allow,则会继续执行后续其他模块的指令或者跳到后续的处理阶段;而如果首先满足的是 deny 则会立即中止当前整个请求的处理,并立即返回 403 错误页。

  access tail:

  ngx_lua模块的access_by_lua指令

  tips:指令中return表示该指令就是,继续执行后续的指令。

  tips:ngx_lua模块的ngx.exit(403)函数,直接结束整个请求处理过程,返回403页面。

八、post-access

九、try-files

十、content阶段:

  这个阶段的这么多的指令只能有一种胜出。每一个location只能有一个内容处理程序。

  执行的顺序是:如果1里面有就从里面选择一个执行,如果1里面没有就让2执行,如果2没有或者处理不了就让3执行,如果3没有或者处理不了就让4执行。

1、ngx_echo模块的echo指令、echo_exec指令、echo_location指令

  ngx_proxy模块的proxy_pass指令

  ngx_lua模块的content_by_lua指令

  用一种指令有的可以写几次,比如echo。

location /test {
  echo hello;
  echo world;
}

  ngx_lua模块的ngx.say函数和ngx_echo模块的echo函数是一样的

location /test {
  content_by_lua ngx.say("hello") ngx.say("world");
}

2、ngx_index模块的index指令:

  处理以‘/‘结尾的请求

location / {
  root /var/www/;
  index index.htm index.html;
}

  当用户请求‘/‘地址时,Nginx会自动在/var/www/index.htm目录下寻找这个文件,如果找到,则直接发起内部跳转到新的‘/index.html‘这个新的地址,如果不存在,则继续找/var/www/index.html这个文件,如果找得到,则直接发起内部跳转到‘/index.html‘这个地址,如果不存在,就交给后续的模块进行处理,如果都处理不了,就报403的错误。

内部跳转:

  ngx_index模块的index指令

  echo模块的echo_exec指令

  ngx_rewrite模块的rewrite指令

3、ngx_autoindex模块的autoindex指令:

  处理以‘/‘结尾的请求

  自动生成目录索引页

location / {
root /var/www/;
index index.html;
autoindex on;
}

  当请求到来时,当/var/www/index.html的页面不存在时,会显示/var/www/下的文件目录列表;当index.html的存在时,会优先执行ngx_index模块的index指令,直接发生内部跳转。

4、ngx_static模块的静态资源指令:

  处理不以‘/‘结尾的网页

  专门用来处理和输出静态资源内容的

location / {
}

  因为没有配置 root 指令,所以在访问这个接口时,Nginx 会自动计算出一个缺省的“文档根目录”。该缺省值是取所谓的“配置前缀 prefix路径下的 html/ 子目录。举一个例子,假设配置前缀是 /foo/bar/,则缺省的“文档根目录”便是 /foo/bar/html/。

  当静态资源找不到时会出现404错误。404是指静态资源找不到,而并非location找不到。

十一、log

http头部

输出过滤器

内部跳转

NGINX openrestry(指令的执行顺序)

原文:https://www.cnblogs.com/erdanyang/p/10771753.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!