zoukankan      html  css  js  c++  java
  • nginx note

    Nginx 变量的创建和赋值操作发⽣在全然不同的时间阶段 

    Nginx 变量的创建只能发⽣在 Nginx 配置加载的时候, 或者说 Nginx 启动的时候; ⽽赋值操作则只会发⽣在请求实际处理的时候。 

    Nginx 变量名的可见范围虽然是整个配置, 但每个请求都有所有变量的独⽴副本, 或者说都有各变量⽤来存放值的容器的独⽴副本, 彼此互不⼲扰。 变量值(容器)相互独立的。

    变量名是全局的,变量值是请求处理相关的。

    ⼀个请求在其处理过程中, 即使经历多个不同的 location 配置块, 它使⽤的还是同⼀套 Nginx变量的副本。 

    ngx_http_core

    内置变量 $uri ,$request_uri 

    URI 参数的值$arg_XXX 变量群 

    cookie 值的$cookie_XXX 变量群

    取请求头的 $http_XXX 变量群 

    取响应头的 $sent_http_XXX 变量群


    许多内建变量都是只读的。
    $args 可以被修改,修改后影响$arg_XXX 变量群。

    Nginx 变量是⽀持绑定存取处理程序的 ,类似于面向对象的类的成员变量 的“存取器accessor)。

    Nginx 模块在创建变量时, 可以选择是否为变量分配存放值的容器, 以及是否提供与读写操作相对应的“存取处理程序”

    不是所有的 Nginx 变量都拥有存放值的容器。 拥有值容器的变量在 Nginx 核⼼中被称为被索引的indexed) ; 反之, 则被称为未索引的non-indexed) 。 


    Nginx 的请求处理阶段共有 11 个之多 。

    post-readserverrewritefind-configrewritepost-rewritepreaccessaccesspost-accesstryfilescontent 以及 log 。

    rewrite 阶段、 access 阶段以及 content 阶段

    绝⼤多数 Nginx 模块在向 content 阶段注册配置指令时, 本质上是在当前的 location 配置块中注册所谓的内容处理程序content handler

    每⼀个 location 只能有⼀个内容处理程序, 因此, 当在 location 中同时使⽤多个模块的content 阶段指令时, 只有其中⼀个模块能成功注册内容处理程序


    应当避免在同⼀个 location 中使⽤多个模块的 content 阶段指令。

    在⼀个 location 中使⽤ content 阶段指令时, 通常情况下就是对应的 Nginx 模块注册该location 中的内容处理程序
    不存在内容处理程序时 ,静态资源服务模块就会起作⽤ 。
    默认的静态资源服务模块 :ngx_index 模块,ngx_autoindex 模块,ngx_static 模块。
    ngx_index ngx_autoindex 模块都只会作⽤于那些 URI / 结尾的请求,⽽对于不以 / 结尾的请求则会直接忽略 。
    ngx_static 模块则刚好相反。



     

  • 相关阅读:
    局部变量的认识
    179一个错误的认识
    (jmeter笔记) websocket接口测试
    (jmeter笔记)聚合报告分析
    (jmeter笔记)模拟用户各种场景压测
    (linux笔记)开放防火墙端口
    (jmeter笔记)导出响应内容的网络文件
    (jmeter笔记)jmeter导出excel,中文显示乱码
    (jmeter笔记)jmeter监控服务器资源
    (Jmeter笔记)jmeter连接数据库(mysql)
  • 原文地址:https://www.cnblogs.com/niaomingjian/p/13395982.html
Copyright © 2011-2022 走看看