OpenResty Practices

Table of Contents

1 安装1

# requires
sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential

tar xvf ngx_openresty-VERSION.tar.gz
cd ngx_openresty-VERSION/
# 单机开发启用 debug 方便调试
./configure --with-debug
make
sudo make install

2 设计 REST API server

使用 openresty 设计 RESTful 风格 API 服务器。

2.1 nginx

  • ngx.conf 文件中的相对路径如何控制?

    通过 nginx 启动时的命令行参数 -p

  • 由哪些内置变量,变量如何获取(arg_XXX)
  • location 中正则表达式语法(为什么没有%d %s 之类的匹配)
  • location 匹配规则(先最长匹配,然后正则)
  • location 中正则表达的路径获取($1)
  • 请求执行阶段,执行顺序(11 个阶段)

2.2 ngx_lua

  • 或者 nginx 内置变量 ngx.var.XXX 和 ngx.req.get_var
  • 获取请求方法 ngx.req.get_method
  • 获取 URL 参数
  • 获取 body 内容
  • 使用 cjson 解析 json 格式
  • 使用 lua 正则表达式解析 HTTP header,使用 string.match,而不是 string.find
  • 返回状态码 ngx.exit ngx.say
  • 验证完数据后转发请求到内部服务器
  • lua table 的序列化和发序列化
  • cbinmsg.lua 代码阅读

2.3 认证 sessionid

  • web 认证协议和客户端认证协议有何不同?为什么要两份协议?将来准备兼容?
  • 开发阶段如何获取测试的 uid 和 sessionid 进行测试?

3 与数据库交互

3.1 mysql

3.2 redis

Footnotes:

Author: lsl

Created: 2016-08-07 Sun 19:48

Validate