一、 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";
}

 

最新文章

  1. [Android]使用自定义JUnit Rules、annotations和Resources进行单元测试(翻译)
  2. Oracle创建表空间、用户、授权
  3. C#导出EXCEL的几种方法
  4. pycharm使用笔记
  5. selenium webdriver设置超时
  6. LVM quick start
  7. Codeforces Round #335 (Div. 1) C. Freelancer's Dreams 计算几何
  8. Spring Autowiring @Qualifier example
  9. 项目构建之maven篇:3.m2eclipse使用
  10. JARVIS 手机监控局域网内PC
  11. DOM操作整理
  12. 【python标准库模块一】时间模块time学习
  13. 客户全局信用控制&非全局信用控制
  14. 51nod 1135 原根 就是原根...
  15. ueditor 插件集成到 xadmin 中的相关操作
  16. LFYZ-OJ ID: 1028 背包问题
  17. 微信小程序:将中文语音直接转化成英文语音
  18. centos7下zabbix记录
  19. [nowcoderACM_223C][区区区间间间]
  20. 利用redis统计信息对CPU使用率进行收集

热门文章

  1. ABAP术语-ABAP 术语发布结束
  2. linux、SMART、Shell的学习
  3. vue 创建项目的命令
  4. 修复支付宝后台报错session IP change to many
  5. PHP分页函数 学习笔记
  6. FLINK流计算拓扑任务代码分析<一>
  7. A1033
  8. 20155216 2016-2017-2 《Java程序设计》第三周学习总结
  9. 20155301 2016-2017-2 《Java程序设计》第1周学习总结
  10. 20155318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告