偶尔会因为业务需要,对 nginx http 请求做一些特定的处理,使用 openresty 可以办到很多使用 nginx 难以处理的问题。
但是,如果对 openresty 的调试如果不熟悉,遇到一些编码错误的时候,就很难定位问题,解决问题。
这里简单的整理几条技巧,通过他们可以比较容易的对 openresty 进行调试。
一、搭建 openresty 的环境
这部分参考 openresty 的编译说明操作即可。
二、配置 nginx.conf, 便于调试
- 打开错误输出:
在 nginx 配置文件的顶部,添加:
error_log stderr debug;
- 关闭守护进程:
在 nginx 配置文件的顶部,添加:
daemon off;
- 关闭 lua_code_cache:
lua_code_cache 默认是开启的,在生产环境中也必须开启,这样能够提高 nginx 的运行效率,但是在开发环境,可以打开,这样,当你对 lua 脚本的内容进行改变的时候,无需重启 nginx, lua 脚本就能生效。
二、如何自定义输出 nginx 日志
在你的 lua 脚本中,你可能想对执行过程中对某个变量进行输出,此时,你可以使用 nginx.log() 方法。
nginx 的日志级别如下:
ngx.STDERR 标准输出
ngx.EMERG 紧急报错
ngx.ALERT 报警
ngx.CRIT 严重,系统故障, 触发运维告警系统
ngx.ERR 错误,业务不可恢复性错误
ngx.WARN 提醒, 业务中可忽略错误
ngx.NOTICE 提醒, 业务中比较重要信息
ngx.INFO 信息, 业务琐碎日志信息, 包含不同情况判断等
ngx.DEBUG 调试
示例:
ngx.log(ngx.ERR, “num:”, num)
ngx.log(ngx.INFO, ” string:”.. str)
三、调试 lua 函数
建议下载软件 ZeroBraneStudio , 对 lua 函数进行单独的调试。
四、需要熟悉 nginx 的常用变量
略
五、需要熟悉 nginx 的执行阶段
略
六、为了调试,你需要有一个启动 openresty 测试环境的脚本
#!/bin/bash
sudo /usr/local/opt/openresty/bin/openresty -p /data/www/nginx/dev/ -c conf/nginx.conf