content_by_lua_block
content_by_lua_block {
ngx.say("<p>hello, world</p>")
}
上一节,我们用了content_by_lua_block在OpenResty中使用了lua调用相关模块。但是在接下来的旅程中,我们会把content_by_lua_block的逻辑移动到一个lua 文件中去,再使用content_by_lua_file 来加载这个lua文件
content_by_lua_file
- 创建lua脚本
mkdir lua_script
vim lua_script/app.lua
在app.lua中写入ngx.say('hello test')
- 修改server 配置
server {
listen 80;
server_name localhost;
location /test {
content_by_lua_file lua_script/app.lua;
}
}
- 重启OpenResty服务
openresty -s reload -p `pwd` -c conf/nginx.conf
image.png
代码热加载
使用content_by_lua_file 的好处,除了把逻辑都移到对应到lua文件,看起来比较清爽整齐,另一个好处是content_by_lua_file 支持代码热加载。
调试过程中,每次改动都要重启一下openresty,这对于一个写惯PHP的同学来说,简直是不能忍呀。好在,openresty为我们提供了 热加载的配置项
- lua_code_cache
server {
listen 80;
server_name localhost;
lua_code_cache off;
location /test {
content_by_lua_file lua_script/app.lua;
}
}
好了,配置完了再重启一次openresty。下次修改app.lua就能热更新,不需要重启了。当然该配置项不建议用于生产环境。配置项的作用域和热加载的其他实现方式,可以读一下文末的推荐阅读。
补充
- 启动
openresty -p `pwd` -c conf/nginx.conf
- 退出
openresty -s quit -p `pwd` -c conf/nginx.conf
- 重启
openresty -s reload -p `pwd` -c conf/nginx.conf
- 检测配置是正确
openresty -t -p `pwd` -c conf/nginx.conf
pwd
代表当前路径。-p Path指定了启动项目根路径。如果原本给出的是相对路径,那么 OpenResty 在启动时的命令行参数中的 -p PATH 作为前缀,将相对路径拼为绝对路径。这就是为啥我们 content_by_lua_file 能后顺利找到相对路径下的lua脚本。
可以看到openresty 的指令和nginx常用指令几无差别。这几条指令在这个旅程中可能经常会用到。
网友评论