|
45 | 45 | + [lua-resty-mysql 扩展](#Openresty_resty-mysql)
|
46 | 46 | + [lua-resty-shell 扩展](http://www.cnblogs.com/tinywan/p/6809879.html)
|
47 | 47 | + [lua-resty-template 扩展](https://github.com/Tinywan/lua_project_v0.01)
|
| 48 | + + [lua-resty-template 扩展](https://github.com/Tinywan/lua_project_v0.01) |
48 | 49 | + [openresty扫描代码全局变量](#Openresty_all-var)
|
49 | 50 | + [ngx Lua APi 方法和常量](#Openresty_http_status_constants)
|
50 | 51 | + ngx_lua 核心常量
|
|
77 | 78 | + phase的意义:就是几个MR的一个集合,不定数目的MR job视为一个phase。一个请求经过nginx处理的过程中,会经过一系列的阶段(phases)
|
78 | 79 | ## <a name="Nginx_base_knowledge"/> Nginx基础知识
|
79 | 80 | + [NGINX 所有 Modules](https://www.nginx.com/resources/wiki/modules/)
|
80 |
| -+ [agentzh的Nginx教程(版本2016.07.21)](https://openresty.org/download/agentzh-nginx-tutorials-en.html#00-foreword01) |
| 81 | +#### agentzh的Nginx教程(版本2016.07.21) |
| 82 | ++ [agentzh的Nginx教程地址](https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html) |
| 83 | ++ Nginx 变量漫谈(一) |
| 84 | + + Nginx 变量的值只有一种类型,那就是字符串 |
| 85 | + + Nginx “变量插值” |
| 86 | + ```bash |
| 87 | + location /test { |
| 88 | + set $first "hello "; |
| 89 | + echo "${first}world"; |
| 90 | + } |
| 91 | + ``` |
| 92 | + + set 指令(以及前面提到的 geo 指令)不仅有赋值的功能,它还有创建 Nginx 变量的副作用,即当作为赋值对象的变量尚不存在时 |
| 93 | + + Nginx 变量一旦创建,其变量名的可见范围就是整个 Nginx 配置,甚至可以跨越不同虚拟主机的 server 配置块 |
| 94 | + + Nginx 变量的生命期是不可能跨越请求边界的 |
| 95 | ++ Nginx 变量漫谈(二) |
| 96 | + + 跳转 |
| 97 | + + 内部跳转:就是在处理请求的过程中,于服务器内部,从一个 location 跳转到另一个 location 的过程。 |
| 98 | + + 外部跳转: HTTP 状态码 301 和 302 所进行的“外部跳转” |
| 99 | + + 标准 ngx_rewrite 模块的 rewrite 配置指令其实也可以发起“内部跳转” |
| 100 | + + Nginx 核心和各个 Nginx 模块提供的“预定义变量” |
| 101 | + + Nginx 会在匹配参数名之前,自动把原始请求中的参数名调整为全部小写的形式 |
| 102 | + + 如果你尝试改写另外一些只读的内建变量,比如 $arg_XXX 变量,在某些 Nginx 的版本中甚至可能导致进程崩溃。 |
| 103 | ++ Nginx 变量漫谈(四) |
| 104 | + + map 指令:用于定义两个 Nginx 变量之间的映射关系,或者说是函数关系 |
| 105 | + + map 指令只能在 http 块中使用 |
| 106 | + + map 配置指令的工作原理是为用户变量注册 “取处理程序”,并且实际的映射计算是在“取处理程序”中完成的,而“取处理程序”只有在该用户变量被实际读取时才会执行(当然,因为缓存的存在,只在请求生命期中的第一次读取中才被执行),所以对于那些根本没有用到相关变量的请求来说,就根本不会执行任何的无用计算。 |
| 107 | ++ Nginx 变量漫谈(四) |
81 | 108 | + [Nginx的11个Phases](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-phases.md)
|
82 | 109 | + [Nginx 陷阱和常见错误](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-1-config.md)
|
83 | 110 | + [Nginx 高并发系统内核优化](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-parameter-config.md)
|
|
342 | 369 | id = 2
|
343 | 370 | ]]
|
344 | 371 | ```
|
| 372 | + + json 和 lua table 转换 |
| 373 | + + [1] 将 json 转换成 lua table |
| 374 | + ```lua |
| 375 | + local json_str = '{"is_male":"nan","name":"zhangsan","id":1}' |
| 376 | + local t = json.decode(json_str) |
| 377 | + ngx.say(format_table(t)) |
| 378 | + ``` |
| 379 | + + [2] 将 lua table 转换成 json 字符串 |
| 380 | + ```lua |
| 381 | + local t = [[{key="table key",value="table value"}]] |
| 382 | + local json_str = json.encode(t) |
| 383 | + ngx.say(json_str) -- "{key=\"table key\",value=\"table value\"}" |
| 384 | + ``` |
| 385 | + + [3] 将lua table转换成 json 数组 (lua 两个大括号表示一个数组) |
| 386 | + ```lua |
| 387 | + local t = {keys={"list1","list2","list3"},num=1} |
| 388 | + local str = json.encode(t) |
| 389 | + ngx.say(str) -- {"keys":["list1","list2","list3"],"num":1} |
| 390 | + ``` |
345 | 391 | + 编译执行与错误
|
346 | 392 | + error 错误
|
347 | 393 | ```lua
|
|
0 commit comments