二、初识

content_by_lua_block

content_by_lua_block {
        ngx.say("

hello, world

") }

上一节,我们用了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
二、初识_第1张图片
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常用指令几无差别。这几条指令在这个旅程中可能经常会用到。

推荐阅读

  • lua_code_cache配置项说明
  • 如何热加载代码

你可能感兴趣的:(二、初识)