Skip to content

Latest commit

 

History

History
18 lines (18 loc) · 1.38 KB

notes-1.md

File metadata and controls

18 lines (18 loc) · 1.38 KB

nginx变量使用方法详解(1)

  • set 指令 属于 ngx_rewrite 模块
    • set 指令(以及前面提到的 geo 指令)不仅有赋值的功能
    • set 指令 还有创建 Nginx 变量的副作用,即当作为赋值对象的变量尚不存在时,它会自动创建该变量
    • Nginx 变量的创建只能发生在 Nginx 配置加载的时候,或者说 Nginx 启动的时候
    • 赋值操作则只会发生在请求实际处理的时候
  • 变量插值:通过已有的 Nginx 变量 $a 的值,来构造变量 $b 的值,这种技术在 Perl 世界里被称为“变量插值”
    set $a hello;
    set $b "$a, $a";
    
  • echo 指令 属于 ngx_echo 模块
  • geo 指令 属于 ngx_geo模块,ngx_geo 模块最常规的用法是根据客户端的 IP 地址对指定的 Nginx 变量进行赋值
  • Nginx 变量一旦创建,其变量名的可见范围就是整个 Nginx 配置,甚至可以跨越不同虚拟主机的 server 配置块
  • 用户变量未赋值就输出的话,得到的便是空字符串
  • Nginx 变量名的可见范围虽然是整个配置,但每个请求都有所有变量的独立副本,或者说都有各变量用来存放值的容器的独立副本,彼此互不干扰
  • 事实上,Nginx 变量的生命期是不可能跨越请求边界的
  • nginx变量使用方法详解(1)