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

 

Nginx连载的更多相关文章

  1. Nginx 教程的连载计划

    下面以教程系列为单位,列举出了已经发表和计划发表的连载教程: Nginx 新手起步 Nginx 是如何匹配 URI 的 Nginx 变量漫谈 Nginx 配置指令的执行顺序 Nginx 的 if 是邪 ...

  2. 《Android系统源代码情景分析》连载回忆录:灵感之源

    上个月,在花了一年半时间之后,写了55篇文章,分析完成了Chromium在Android上的实现,以及Android基于Chromium实现的WebView.学到了很多东西,不过也挺累的,平均不到两个 ...

  3. 使用 whistle 替代本地 nginx/webpack 服务

    加入鹅厂之后,我发现团队都在用一款叫做 Whistle 的工具,起初我以为这只是一款类似 Fiddler/Charles 的普通货色.然鹅,发现下面这两种用法之后,我把自己的膝盖摘下来献给了制作这款工 ...

  4. 从菜鸟到大神:Java高并发核心编程(连载视频)

    任何事情是有套路的,学习是如此, Java的学习,更是如此. 本文,为大家揭示 Java学习的套路 背景 Java高并发.分布式的中间件非常多,网上也有很多组件的源码视频.原理视频,汗牛塞屋了. 作为 ...

  5. accept_mutex与性能的关系 (nginx)

    注:运行环境CentOS 6+   背景      在对启动了20个worker的nginx进行压力测试的时候发现:如果把配置文件中event配置块中的accept_mutex开关打开(1.11.3版 ...

  6. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  7. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  8. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  9. nginx+php的使用

    原文来自:windows下配置nginx+php环境 按照他的步骤走,亲测可用! 但是这里他后面说的根目录可能有些人有点懵. 其实在设置的时候就设置了: 网站根目录就是www这个目录,如果没创建请自行 ...

随机推荐

  1. pThread多线程demo

    #import "ViewController.h" #import <pthread.h> @interface ViewController () @end @im ...

  2. sql中查询某月某年内的记录

    假设表结构:用户名,日期,上班时间,下班时间.8月份记录:select * from 表名 where month(日期)=8 and 用户名 = '小张'8月份迟到早退次数:select sum(i ...

  3. ubuntu 如何进行文件、夹删除等操作

    rm [选项] 文件-f, --force 强力删除,不要求确认-i 每删除一个文件或进入一个子目录都要求确认-I 在删除超过三个文件或者递归删除前要求确认-r, -R 递归删除子目录-d, --di ...

  4. Jquery中select使用

    select获取当前选中的value $('#DDLDEP').change(function () { var depId = $(this).children('option:selected') ...

  5. PHP读取excel表格,和导出表格

    读取表格 public function excel(){ import("Common.Vendor.Excel.PHPExcel"); $filename="./fi ...

  6. PHP实现单文件、多文件上传 封装 面向对象实现文件上传

    文件上传配置 客户端配置 1.表单页面 2.表单的发送方式为post 3.添加enctype = "multipart/form-data" <form action=&qu ...

  7. 搭建iSCSI共享IPSAN

    iSCSI(internet SCSI)是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择. ...

  8. 爬取知乎热榜标题和连接 (python,requests,xpath)

    用python爬取知乎的热榜,获取标题和链接. 环境和方法:ubantu16.04.python3.requests.xpath 1.用浏览器打开知乎,并登录 2.获取cookie和User—Agen ...

  9. 20155323 2016-2017-2 《Java程序设计》第2周学习总结

    20155323 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 对象:对象是类的一个实例,有状态和行为. 类:类是一个模板,它描述一类对象的行为和状态. 第 ...

  10. #20155327 2016-2017-2 《Java程序设计》第三周学习总结

    20155327 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 一.三种重要的数字表示 无符号:编码基于传统的二进制表示法,表示大于或者等于零的数字. 补码 ...