OpenResty学习资料汇总

  • Post author:
  • Post category:其他


最近参与一个网关类项目,底层是使用 OpenResty 写的,所以找了很多资料强补了 OpenResty 相关的知识。现在把一些资料汇总一下,方便自己也方便其他有需要的学习者能快速进入学习状态。

我会先从官方文档开始整理,因为官方文档上的内容总是更加权威的,一般的疑问查官方文档就解决了。然后我会整理下现在比较好的一些书或者是课程,这些教程对OpenResty会有更系统的介绍,方便入门和进阶。



官网


OpenResty中文官方站

可以让你对OpenResty有一个初步的了解,可以通过“安装”和“开始上路”搭建起一个Demo,初步了解使用。



官方文档

OpenResty是一款基于 NGINX 和 LuaJIT 的 Web 平台。

它的核心是基于 NGINX 的一个 C 模块(lua-nginx-module),该模块将 LuaJIT 嵌入到 NGINX 服务器中,并对外提供一套完整的 Lua API,透明地支持非阻塞 I/O,提供了轻量级线程、定时器等高级抽象。同时,围绕这个模块,OpenResty 构建了一套完备的测试框架、调试技术以及由 Lua 实现的周边功能库。

在正式开发前,需要一定的 NGINX 和 LuaJIT 基础知识。


NGINX


Nginx 是 OpenResty 的核心。


Nginx官方文档

有非常详细的说明,但是我看的最多的是 Modules reference 这一块内容,当有指令的用法不清晰时,就到官方文档上确认一下,有点类似于查字典。

读英文吃力的话,也可以先读下

Nginx中文文档

,里面“配置文档”对初学者来说还是比较友好的。

进阶者可以看下

Nginx开发文档

,对Nginx的常见结构体和API有比较详细的说明,如果你开始看OpenResty 的C语言源码,这里的内容肯定用得上。


LuaJIT


LuaJIT是Lua编程语言的即时编译器(Just-In-Time Compiler)。LuaJIT 的语法兼容 Lua 5.1,并对 Lua 5.2 和 5.3 做了选择性支持。


Lua 5.1参考手册

对Lua语言进行了官方的定义。


《Programming in Lua》

是官方推荐的一本书,对Lua做了比较全面的介绍,在链接里我放了两本中文版,是不同的组织翻译的。提取码:5jgq。


LuaJIT extentions

:介绍了LuaJIT的一些拓展,进阶的时候FFI相关内容要仔细看下,初学者可以先略过。


OpenResty


OpenResty 在API 文档这一块是做的很不错的,基本上你可以在每个项目的 ReadMe 上找到指令或方法的说明、示例和注意点。

打开 OpenResty 在 GitHub 上的

项目主页

,目前总共有69公开的项目。最主要的是以下两类:


  1. NGINX C 模块


    以 *-nginx-module命名的就是 NGINX 的 C 模块。总共有20多个,有部分是早期使用的,引入了新的技术后,目前已经不推荐使用了。

    最核心的是以下两个:

    lua-nginx-module



    stream-lua-nginx-module

    ,前者用来处理七层流量,后者用来处理四层流量。

  2. lua-resty- 周边库


    以 lua-resty-*开头的是官方自带的周边库,如果个人要贡献第三方库,也是同样的命名规范。其中最主要的是

    lua-resty-core

    ,这是个纯粹的Lua 库,使用LuaJIT FFI重新实现了ngx_lua模块的一部分Lua Nginx API,比原来的C模块性能要高上许多。



其他教程

1、

OpenResty最佳实践

:由 OpenResty 软件基金会主席-温铭主导维护的一个教程,初学者必看,讲的也是比较基础的一些知识点。

2、

OpenResty 从入门到实战

:温铭在极客时间的专栏,讲的内容很丰富,可以作为从入门到进阶的一个教程。

3、

agentzh 的 Nginx 教程

:OpenResty 作者章亦春写的 Nginx 教程,目前还处于连载状态。

4、

深入理解Nginx-模块开发与架构解析-第2版

:这本书是进阶书籍,主要讲的是如何用Nginx进行模块开发。看完之后会对Nginx的整个架构设计、请求处理流程、内存管理等等有更深入的认识。

5、

Nginx核心知识100讲

:《深入理解Nginx》的作者陶辉在极客时间上的专栏,我没阅读过,不好评价,有兴趣的可以关注下。

6、

OpenResty博客

:官方博客,现在内容还比较少,但有几篇硬干货。

7、

OpenRestyCon 2018

:OpenResty 官方组织的分享大会,有很多企业级的实战分享,可以看录播视频和PPT,网上也有一些文字版的,大家自己去搜下好了。

8、

知乎OpenResty话题

:现在OpenResty的社区没有很强大,知乎这个话题的精华文章里有很多不错的回答,是一个了解社区比较好的途径。



开源项目

现在已经有基于 OpenResty 的比较成熟的 Api 网关项目。可以看看他们的文档,了解一下开源项目是怎么利用OpenResty来提供解决方案的。


Kong

是一个云原生,快速,可扩展的分布式微服务抽象层(也称为API网关或API中间件)。它的核心价值是高性能和可扩展性,于2015年作为一个开源项目提供。


Orange

是基于OpenResty(Nginx + Lua)的API监视和管理网关。


Apache APISIX

是基于Nginx库和etcd的动态,实时,高性能API网关。



版权声明:本文为erfu6081原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。