美文网首页
二、初识

二、初识

作者: 刀斧手何在 | 来源:发表于2019-10-19 18:29 被阅读0次

    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常用指令几无差别。这几条指令在这个旅程中可能经常会用到。

    推荐阅读

    相关文章

      网友评论

          本文标题:二、初识

          本文链接:https://www.haomeiwen.com/subject/zlkspctx.html