什么是OpenResty​​#​

OpenResty是一个完整的Web平台,它集成了标准的Nginx核心,LuaJIT,许多精心编写的Lua库,大量高质量的第三方Nginx模块,以及大多数外部依赖项。它旨在帮助开发人员轻松构建可伸缩的Web应用程序,Web服务和动态Web网关。

通过利用各种精心设计的Nginx模块(其中大部分是由OpenResty团队自己开发的),OpenResty有效地将nginx服务器变成了一个功能强大的Web应用服务器,在这个服务器中,Web开发人员可以使用Lua编程语言来编写各种脚本现有的nginx C模块和Lua模块,并构建极其高性能的Web应用程序,能够在一个盒子中处理10K〜1000K +的连接。

OpenResty旨在完全在Nginx服务器上运行服务器端Web应用程序,利用Nginx的事件模型不仅可以与HTTP客户端进行非阻塞I / O,还可以与远程后端(如MySQL,PostgreSQL,Memcached和Redis)进行非阻塞I / O。

OpenResty的实际应用包括动态Web门户和Web网关,Web应用程序防火墙,用于移动应用程序/广告/分布式存储/数据分析的Web服务平台,以及完整的动态Web应用程序和Web站点。用于运行OpenResty的硬件也从非常大的金属到嵌入式设备,资源非常有限。我们的生产用户每天为几百万活跃用户提供数十亿次请求,这种情况并不少见。

OpenResty不是一个Nginx分支。这只是一个软件包。大多数应用于OpenResty的Nginx核心的补丁已经提交给Nginx官方团队,大部分补丁也已经被接受。我们正在努力不让Nginx和Nginx官方使用最新的最好的Nginx核心。


官方频道​​#​


如何在这个名单上贡献?​​#​

有至少三种不同的方式来贡献:


  1. ​创建一个新的问题​​,描述所需的添加,删除或更改。
  2. ​把这个存储库分叉​​并进行更改,并创建一个请求。
  3. 在openresty-en邮件列表中的awesome-resty线程中​​发布回复​​。


内容​​#​


模块​​#​


核心模块​​#​

核心模块捆绑在OpenResty包中。

另请注意,​​resty​​OpenResty包中包含命令行客户端。该​​命令行客户机的来源​可以在Github找到。


核心Nginx模块​​#​

要了解关于Nginx核心模块的更多信息,请参考​​Nginx文档​​。Nginx提供的一些模块(并非全部都是默认生成的):


第三方Nginx模块​​#​


图书馆​​#​


核心图书馆​​#​

核心库被捆绑在OpenResty包中,你不需要单独安装它们。


Web框架​​#​


  • ​Lapis​​ - Lapis是使用MoonScript或Lua构建Web应用程序的框架,在Nginx的定制版本中运行,称为OpenResty
  • ​lor​​​(​​Github​​) - 一个基于OpenResty的快速简约的web框架
  • ​香草​​ - 一个OpenResty Web框架
  • ​luastar​​ - 基于OpenResty的HTTP服务器和Web框架
  • ​Lusty​​ - Lua RESTful Web应用程序框架,一个可扩展和快速的Web框架
  • ​GIN​​ - 一种快速,低延迟,低内存占用空间,带有测试驱动开发助手和模式的Web JSON-API框架
  • ​快速服务器​​ - 基于OpenResty的服务器框架
  • ​水手​​ - 一个Lua MVC Web框架
  • ​lua-resty-rack​​ - 一个简单的,可扩展的OpenResty HTTP服务器框架
  • ​MOOCHINE​​ - 基于OpenResty的简单轻量级的Web框架
  • Sinatra ​​-openresty​​ - Sinatra移植到OpenResty框架
  • ​lj-web​​ - 基于ngx_openresty的轻量级Web框架
  • ​Gimlet鸡尾酒​​ - 一个由Martini&Sinatra启发的Moonscript写的OpenResty微型Web应用程序框架
  • ​durap​​ - Durap是基于OpenResty的Lua Web框架。
  • ​Ziggy Stardust​​ - Ziggy Stardust(或只是“星尘”)是一个简单的nginx / Lua框架,由Sinatra,Express和Mercury
  • ​zLua​​ - 基于OpenResty的Lua框架之类的Codeigniter
  • ​lua-resty-stack​​ - OpenResty简单的应用程序堆栈
  • ​dodolu​​ - 基于OpenResty的轻量级Web框架
  • ​八达通​​​(​​Github​​) - Lua网络平台
  • ​vicky​​ - 由expressjs和koa启发的openresty的一个宁静的框架。


Web开发要点​​#​


路由库​​#​


  • ​lua-resty-route​​​ - ​​OpenResty的​​ URL路由库,支持多路由匹配器,中间件,以及HTTP和WebSockets处理程序,以提及其一些功能
  • ​router.lua​​ - Lua的准系统路由器,它匹配URL并执行Lua功能
  • ​lua-resty-r3​​​ - ​​libr3​​ OpenResty的实现,libr3是一个高性能的路径调度库。它将你的路由路径编译成一个前缀树(trie)。通过在启动时使用构造的前缀trie,您可以高效地发送路由


请求解析器​​#​


中间件和API工具​​#​


  • ​Kong​​​(​​GitHub​​) - 孔:微服务管理层(安全,管理和扩展您的API和微服务)
  • ​LSSO​​ - Nginx + Lua的轻量级SSO中间件
  • ​apigateway​​ - 基于Nginx和OpenResty的高性能API网关


模板​​#​


验证​​#​


  • ​lua-resty-validation​​ - Lua和OpenResty的可扩展链接验证和过滤库
  • ​valua​​ - 验证lua!用于进行链接验证的模块。创建你的对象,附加你的测试,使用和重用!


身份验证和授权​​#​


加密​​#​


联网​​#​


数据库和存储​​#​


测试和分析​​#​


消息队列和任务管理​​#​


条形码和QR码​​#​


公用事业​​#​


日期和时间​​#​

这些库未建立使用​​lua-nginx-module​​​的日期时间函数(除luatz)一样​​ngx.today​​​,​​ngx.time​​​,​​ngx.now​​​,​​ngx.localtime​​​,或​​ngx.utctime​​,但他们仍然可以来得心应手。在某些时候,我们可能需要一个更“正式”的OpenResty时间库。


  • ​luatz​​​ - 一个用于时间和日期操作的Lua库(有一个后备​​ngx.now​​)
  • ​LuaDate​​ - Lua 5.x的Lua日期和时间模块
  • ​SciLua时间图书馆​​ - 根据格里历对日期和时间段进行操作的图书馆,即国际通行的大多数用途日历


压缩​​#​


文本格式​​#​


二进制格式​​#​


文件格式​​#​


图像格式​​#​


本土化​​#​


高速缓存​​#​


  • ​lua-resty-lrucache​​ - 基于LuaJIT FFI的Lua-land LRU Cache
  • ​shcache​​ - shcache是​​一个尝试使用ngx.shared.DICT与缓存状态机在上面
  • ​lua-resty-tlc​​ - 使用lua-resty-lrucache和共享字典的双层缓存实现。
  • ​Ledge​​ - OpenResty的Lua应用程序,为Nginx提供HTTP缓存功能,使用Redis作为缓存/元数据存储
  • ​lua-resty-cache​​​ -HTTP Cache到Redis,可以提供陈旧的响应,并且​​lua-resty-lock​​只使用一个请求来填充一个新的缓存


指标和统计​​#​


  • ​LUAMETER​​ - Nginx的Lua模块,用于记录和提供关键状态和性能指标,直接来自Nginx和实时(专有)
  • ​ngxtop​​ - nginx服务器的实时指标


记录​​#​


函数式编程​​#​


  • ​Lua Fun​​ - Lua Fun是LuaJIT跟踪编译器设计的一个高性能函数编程库
  • ​Penlight​​ - Penlight汇集了一组通用的纯Lua模块,着重于输入数据处理(如读取配置文件),函数式编程(如map,reduce,占位符表达式等)和OS路径管理
  • ​摩西​​ - 用于功能性编程的Lua实用程序库。它补充了内置的Lua表库,使得对数组,列表和集合的操作更简单
  • ​Underscore.lua​​ - Underscore.lua是一个Lua库,它提供了一组处理迭代器,数组,表格和函数的实用函数
  • ​Lodash.lua​​ - 关于Javascript库Lodash的Lua函数式编程库
  • ​在GitHub上搜索更多“Functional Lua”项目…​


Web API​​#​


图书馆的其他来源​#​


书籍和教程​​#​


图书​​#​


教程和指南​​#​


影片​​#​


会议,研讨会和活动​​#​



演示应用程序​​#​


也可以看看​​#​