• Nginx连载


    一、 nginx变量(用户变量、内建变量)

      用户变量 又称用户自定义变量

      Nginx用户变量的可见范围是整个配置文件,甚至可以跨越不通虚拟主机的server配置,但是变量适用范围是不可以跨越自己的容器的,彼此之间不可以相互使用,如果有夸容器使用的需求可以使用echo_exec命令来实现夸容器跳转与rewrite类似。

      使用set geo 指令不仅仅可以给变量赋值,还可以创建变量,如某个变量不存在它会自动创建,学习下面的实例。

    nginx变量可以使用set赋值,我们来看一个比较完整的配置示例

    server {
            listen 8080;
    
            location /test {
                set $foo hello;
                echo "foo: $foo";  #变量插值
            }
        } 
    

    前缀必须带上“$”, 他的定义方式与PHP、Perl类似。

    如果我们想通过echo直接输出含有“$”的字符串如何把$字符转义?利用标准模块ngx_geo提供的配置指令geo来为变量$dollar赋予字符串“$”

    geo $dollar {
            default "$";
        }
    
        server {
            listen 8080;
    
            location /test {
                echo "This is a dollar sign: $dollar";
            }
        }

    测试结果如下:

        $ curl 'http://localhost/test'
        This is a dollar sign: $

    在“变量插值”的上下文中,还有一种特殊情况,即当引用的变量名之后紧跟着变量名的构成字符时(比如后跟字母、数字以及下划线),我们就需要使用特别的记法来消除歧义,例如

    server {
            listen 8080;
    
            location /test {
                set $first "hello ";
                echo "${first}world";
            }
        }
    

    内建变量

    内建变量 又称预定义变量

    Nginx内建变量最常用的就是来获取关于请求或响应的各种信息,例如由ngx_http_core模块提供的内建变量$uri 和 $request_uri的值输出到响应体中去。

    $uri $request_uri mac自动给我带的转义符,看起来可能比较乱~

    location /test {
            echo "uri = $uri";
            echo "request_uri = $request_uri";
            }

     

    $arg_xxx

    $arg_xxx内建变量是一个随着用户的使用参数变化而变化的,xxx则代表用户传参变量名,举例 $arg_name 这个变量就代表获取url参数为name或Name或NAME等等参数的值,而且还是未解码的原始形式的值,Nginx在匹配参数之前会把所有的参数全部格式化为小写。  

    location /test {
            echo "name = $arg_name";
            echo "age = $arg_age";
            }

     
  • 相关阅读:
    SQL基础 union的用法
    VSCore的使用方法
    k8s——了解kubernetes机理
    电子科大啦
    19款程序员最爱的开发框架
    Exp1 PC平台逆向破解(5)M
    电子阅读
    Python学习记录:基础知识1
    WCF使用小结:(1)WCF接收HTTP POST数据的处理方法
    Linux配置经验总结:(3)禁用笔记本触摸屏
  • 原文地址:https://www.cnblogs.com/liuquan/p/9803864.html
Copyright © 2020-2023  润新知