OpenResty 从入门到实战
温铭
OpenResty 软件基金会第一任主席,Apache APISIX 项目 VP
20903 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 52 讲
结束语 (1讲)
OpenResty 从入门到实战
15
15
1.0x
00:00/00:00
登录|注册

03 | 揪出隐藏在背后的那些子项目

test-nginx
reindex
opsboy
memc-nginx-module
redis-nginx-module
redis2-nginx-module
stream-lua-nginx-module
lua-nginx-module
restydoc
opm
openresty
resty
工程化工具
打包相关
调试工具链
测试框架
LuaJIT 分支
lua-resty-周边库
NGINX C 模块
lualib
luajit
nginx
pod
bin
项目概览
目录结构
OpenResty

该思维导图由 AI 生成,仅供参考

你好,我是温铭。
我们先来揭晓上一节最后留下的思考题,如何把 Lua 代码从 nginx.conf 里面抽取出来,保持代码的可读性和可维护性呢?
操作其实很简单。
我们先在 geektime 的工作目录下,创建一个名为 lua 的目录,专门用来存放代码:
$ mkdir lua
$ cat lua/hello.lua
ngx.say("hello, world")
然后修改 nginx.conf 的配置,把 content_by_lua_block 改为 content_by_lua_file:
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 8080;
location / {
content_by_lua_file lua/hello.lua;
}
}
}
最后,重启 OpenResty 的服务就可以了:
$ sudo kill -HUP `cat logs/nginx.pid`
你可以使用 curl ,验证是否返回了预期的结果。至于后面 Lua 代码的变更,你就可以直接修改 hello.lua 这个文件,而不是 nginx.conf 了。
其实,在上面这个小例子里面,也有几个有趣的地方:
content_by_lua_file lua/hello.lua; 里面写的是相对路径,那么 OpenResty 是如何找到这个 Lua 文件的?
Lua 代码内容的变更,需要重启 OpenResty 服务才会生效,这样显然不方便调试,那么有没有什么即时生效的方法呢?
如何把 lua 代码所在的文件夹,加入到 OpenResty 的查找路径中呢?
这几个问题,我鼓励你先自己思考一下,它们都可以在官方文档里面找到答案。这也是为什么,我一直强调文档的重要性。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

OpenResty是一个基于Nginx的Web平台,本文介绍了OpenResty中管理Lua代码的方法、目录结构和项目概览。首先介绍了如何抽取Lua代码,保持可读性和可维护性。然后详细介绍了OpenResty安装后的目录结构,包括各子目录的含义和作用。还提到了OpenResty项目的概览,包括68个公开的项目,分为7类,并解释了OpenResty和ngx lua的关系。文章还介绍了OpenResty的C模块、lua-resty周边库、自维护的LuaJIT分支、测试框架、调试工具链、打包相关和工程化工具。OpenResty已超出了负载均衡和反向代理的范畴,实现了自己的生态。整体来说,本文内容涵盖了OpenResty的基本使用方法和技术特点,对于想要快速了解OpenResty的读者来说,是一份很有价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenResty 从入门到实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(36)

  • 最新
  • 精选
  • oatlmy
    看了温大15年底的文章《OpenResty的现状、趋势、使用及学习方法》,对比在三年半后的这几篇文章中讲到的特性模块,真是太优秀了!

    作者回复: 加油:)

    2019-06-01
    9
  • 红鲤鱼与绿鲤鱼与驴baci
    sudo kill -HUP cat logs/nginx.pid 代码 应该是 sudo kill -HUP `cat logs/nginx.pid` 吧

    作者回复: 是的,多谢指正

    2019-05-31
    5
  • 业余草
    这是第3张了。但是我看到现在我还没有看懂这个名字的来历。就是现在有人问的话,我也是一脸懵逼啊。

    作者回复: OpenResty 的名字来历? OpenResty 最早是雅虎中国的一个公司项目,起步于 2007 年 10 月。当时兴起了 OpenAPI 的热潮,于是春哥想做一个类似的东西,可以支持各种 Web Service 的需求。 Open 取自 OpenAPI, Resty 取自 rest API。

    2019-06-05
    4
  • 石仔
    之前项目需要做个nginx为基础的api网关,我用了nginx + lua-nginx-module模块 模拟kong的编码结构做了一个半吊子的实践。当时的文档和生态都没有现在丰富,都是摸着石头过河,现在终于找到宝了,能让我系统化的窥探这架构了,非常感谢作者

    作者回复: 专栏最后也会搭建一个 api 网关:)

    2019-05-31
    4
  • 写点啥呢
    请问老师,lua_package_path似乎配置的是lua依赖的搜索路径,对于content_by_lua_file, 我试验发现它只在prefix下去根据指令提供的文件相对路径去搜索,而不会到lua_package_path下搜索,不知道我的理解对不对?

    作者回复: 是的,你的理解是对的

    2019-08-29
    2
    3
  • 大裤衩子
    Openresty可执行文件是nginx的一个软连接?这样的话为什么不直接基于本地已经装好的nginx呢?

    作者回复: 因为这里的 nginx 并不等同于官方的 nginx,而是把很多 c 模块打包重新生成的。 所以,为了和你本地已经安装好的 nginx 做区分,就做了一个软链接,名字是 OpenResty

    2019-06-05
    2
  • ZeroIce
    初学者对于这些模块有什么作用,听起来一脸懵

    作者回复: 慢慢来,现有一个印象。用到的话才能理解深入

    2019-08-03
    1
  • [root@localhost geektime]# sudo kill -HUP `cat logs/nginx.pid` [root@localhost geektime]# curl -i 127.0.0.1:8080 HTTP/1.1 404 Not Found Server: openresty/1.15.8.1 Date: Wed, 19 Jun 2019 14:41:34 GMT Content-Type: text/html Content-Length: 159 Connection: keep-alive <html> <head><title>404 Not Found</title></head> <body> <center><h1>404 Not Found</h1></center> <hr><center>openresty/1.15.8.1</center> </body> </html> [root@localhost geektime]# 为什么我运行出来是404??

    作者回复: 看看 error.log 的信息,是不是 lua 代码没有被找到?

    2019-06-19
    10
    1
  • 小飞哥 ‍超級會員
    为什么我openresty -v之后只有一条,我没有后面几行?

    作者回复: 大写的 V

    2019-06-14
    1
  • 初音未来
    老师你好,lua_code_cache 打开之后怎么解决lua代码更新及时生效的问题呢

    作者回复: 后面会讲到代码热更新

    2019-06-05
    1
收起评论
显示
设置
留言
36
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部