二、Nginx变量】的更多相关文章

关于 Nginx 变量的另一个常见误区是认为变量容器的生命期,是与 location 配置块绑定的.其实不然.我们来看一个涉及“内部跳转”的例子:     server {        listen 8080;         location /foo {            set $a hello;            echo_exec /bar;        }         location /bar {            echo "a = [$a]";  …
与 $arg_XXX 类似,我们在 (二) 中提到过的内建变量 $cookie_XXX 变量也会在名为 XXX 的 cookie 不存在时返回特殊值“没找到”:     location /test {        content_by_lua '            if ngx.var.cookie_user == nil then                ngx.say("cookie user: missing")            else           …
前面在 (二) 中我们已经了解到变量值容器的生命期是与请求绑定的,但是我当时有意避开了“请求”的正式定义.大家应当一直默认这里的“请求”都是指客户端发起的 HTTP 请求.其实在 Nginx 世界里有两种类型的“请求”,一种叫做“主请求”(main request),而另一种则叫做“子请求”(subrequest).我们先来介绍一下它们. 所谓“主请求”,就是由 HTTP 客户端从 Nginx 外部发起的请求.我们前面见到的所有例子都只涉及到“主请求”,包括 (二) 中那两个使用 echo_ex…
也有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话 ),而在赋值时可以直接修改参数串.我们来看一个例子:     location /test {        set $orig_args $args;        set $args "a=3&b=4";         echo "original args: $orig_args";        …
张超:又拍云系统开发高级工程师,负责又拍云 CDN 平台相关组件的更新及维护.Github ID: tokers,活跃于 OpenResty 社区和 Nginx 邮件列表等开源社区,专注于服务端技术的研究:曾为 ngx_lua 贡献源码,在 Nginx.ngx_lua.CDN 性能优化.日志优化方面有较为深入的研究. 如果读者曾配置过 Nginx,那么一定知道 Nginx 允许我们在配置文件里嵌入”变量”,这些变量由 Nginx 的各个模块定义,其目的是为了提升配置的灵活性,如这一段配置: lo…
iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 在实现 RC4加密算法时Objective-C的的性能是Python的127倍,Swift的性能是Python的220倍 有持怀疑态度的国外程序员,也对Objective-C和Swift的性能进行了测试 http://www.splasmata.com/?p=2798 (2)说明 目前的性能不是开发…
Nginx有两种定义变量的方式,一种是在配置文件中使用set指令(由rewrite模块提供支持),另一种是在模块内定义变量. 变量相关结构体: struct ngx_http_variable_s { ngx_str_t name; /* must be first to build the hash */ ngx_http_set_variable_pt set_handler; ngx_http_get_variable_pt get_handler; uintptr_t data; //…
作为NGINX变量,不像正规语言那么正式. 但处理自定义和内部变量时,这些操作,也是少不了的. geo $dollar { default "$"; } server { listen ; location /test { set $foo chengang; set $first "hello "; echo "${first}world"; echo "foo: $foo"; echo "this is a do…
在 (一) 中我们提到过,Nginx 变量的值只有一种类型,那就是字符串,但是变量也有可能压根就不存在有意义的值.没有值的变量也有两种特殊的值:一种是“不合法”(invalid),另一种是“没找到”(not found). 举例说来,当 Nginx 用户变量 $foo 创建了却未被赋值时,$foo 的值便是“不合法”:而如果当前请求的 URL 参数串中并没有提及 XXX 这个参数,则 $arg_XXX 内建变量的值便是“没找到”. 无论是“不合法”也好,还是“没找到”也罢,这两种 Nginx 变…
在设置了“取处理程序”的情况下,Nginx 变量也可以选择将其值容器用作缓存,这样在多次读取变量的时候,就只需要调用“取处理程序”计算一次.我们下面就来看一个这样的例子:     map $args $foo {        default     0;        debug       1;    }     server {        listen 8080;         location /test {            set $orig_foo $foo;      …