OpenResty是一个成熟的网络平台,它集成了标准的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等远程后端。

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

OpenResty不是Nginx分支。它只是一个软件包。在OpenResty中应用于Nginx核心的大多数补丁已经提交给官方的Nginx团队,并且提交的大多数补丁也已被接受。我们正在努力不分叉Nginx并始终使用官方Nginx团队中最新的最佳Nginx核心。

官方频道

模块

核心模块

核心模块捆绑在OpenResty包中。

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

 

核心Nginx模块

要了解有关Nginx核心模块的更多信息,请参阅Nginx文档。Nginx附带的一些模块(并非所有模块都默认构建):

第三方Nginx模块

  • ngx_lua_ipc - Lua Nginx模块和OpenResty的进程间通信 - 在Nginx工作进程之间发送带有字符串数据的命名警报
  • nchanGithub) - 用于HTTP,长轮询,Websockets和EventSource(SSE)的快速,水平可伸缩,多进程发布/ 订阅队列服务器和代理
  • ngx_pagespeedGithub) - Nginx的自动PageSpeed优化模块
  • ModSecurity - 开源Web应用程序防火墙
  • NAXSI - NAXSI是NGINX的开源,高性能,低规则维护WAF; NAXSI意味着Nginx Anti Xss和Sql Injection
  • nginx-upsync-module - Nginx C模块,从consul或其他人同步上游,动态调整后端服务器权重,无需重新加载nginx
  • sass-nginx-module - 语法上令人敬畏的Nginx模块
  • 更多第三方模块

核心库

核心库捆绑在OpenResty包中,您无需单独安装它们。

网络框架

  • Lapis - Lapis是一个使用MoonScript或Lua构建Web应用程序的框架,它在Nginx的定制版本中运行,称为OpenResty
  • lorGithub) - 基于OpenResty的快速简约的Web框架
  • Vanilla - 一个OpenResty Web框架
  • luastar - 基于OpenResty的HTTP服务器和Web框架
  • Lusty - Lua RESTful Web应用程序框架,一个可扩展且快速的Web框架
  • GIN - 具有测试驱动开发助手和模式的快速,低延迟,低内存占用空间的Web JSON-API框架
  • Quick Server - 基于OpenResty的服务器框架
  • Sailor - Lua MVC Web框架
  • lua-resty-rack - 一个简单且可扩展的OpenResty HTTP服务器框架
  • MOOCHINE - 基于OpenResty的简单轻量级Web框架
  • sinatra-openresty - Sinatra移植到OpenResty框架
  • lj-web - 基于ngx_openresty的轻量级Web框架
  • Gimlet Cocktail - 由Martini&Sinatra启发的Moonscript编写的OpenResty微博客应用程序框架
  • durap - Durap是一个基于OpenResty的Lua Web框架。
  • Ziggy Stardust - Ziggy Stardust(或者只是“stardust”)是一个简单的nginx / Lua框架,灵感来自Sinatra,Express和Mercury
  • zLua - 一个基于OpenResty的Luign框架的Codeigniter
  • lua-resty-stack - OpenResty简单应用程序堆栈
  • dodolu - 基于OpenResty的轻量级Web框架
  • Octopus- Lua网络平台
  • vicky - 一个宁静的openresty框架,受到expressjs和koa的启发。

Web开发基础

路由库

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

请求分段解析器

中间件和API工具

模板

验证

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

身份验证和授权

  • lua-resty-macaroons - LuaJIT FFI绑定到libmacaroons - Macaroons是灵活的授权凭证,支持分散委派,衰减和验证
  • lua-resty-openidc - lua-resty-openidc是NGINX实现OpenID Connect依赖方(RP)和OAuth 2.0资源服务器(RS)功能的库
  • lua-resty-duo-mobile - Duo Mobile Auth API的OpenResty客户端
  • micro-auth - 一种微服务,可以轻松地将Google和Github的身份验证添加到您的应用程序中(注意:在生产中使用它之前,请参阅:https://news.ycombinator.com/item  id = 13682682 - 希望我们可以删除此未来的评论)

加密

联网

数据库和存储

测试和分析

消息队列和任务管理

条形码和QR码

应用库

日期和时间

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

  • luatz - 用于时间和日期操作的Lua库(有后备ngx.now
  • LuaDate - Lua 5.x的Lua日期和时间模块
  • SciLua时间库 - 根据公历来操纵日期和期间的图书馆,即大多数用途的国际公认日历

压缩

文字格式

二进制格式

文件格式

图像格式

  • lua-resty-imagick - 使用FFI将Lua绑定到ImageMagick的MagicWand for LuaJIT
  • Lua IMagick - Lua Pure-C绑定到ImageMagick
  • magick - Lua使用FFI绑定到ImageMagick for LuaJIT
  • giflib - 使用FFI将Lua绑定到LuaJIT的GIFLIB
  • fi-luajit - FreeImage的LuaJIT接口
  • lua-vips - 用于libvips的LuaJIT绑定

本地库

高速缓存

  • lua-resty-lrucache - 基于LuaJIT FFI的Lua-land LRU Cache
  • lua-resty-mlcache - 使用lua-resty-lrucache,共享字典和缓存标记保护的现代灵活多级缓存。
  • shcache - shcache尝试使用ngx.shared.DICT,缓存状态机位于顶部
  • lua-resty-tlc - 使用lua-resty-lrucache和共享字典的双层缓存实现。
  • Ledge - OpenResty的Lua应用程序,为Nginx提供HTTP缓存功能,使用Redis作为缓存/元数据存储
  • lua-resty-cache - HTTP缓存到Redis,可以提供过时响应,并且lua-resty-lock只允许一个请求填充新缓存

度量和统计

  • LUAMETER - 用于Nginx的Lua模块,可以在Nginx内部实时记录并提供关键状态和性能指标(专有)
  • ngxtop - nginx服务器的实时指标

记录

编程

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

Web API

  • lua-resty-github - 在ngx_lua nginx模块中使用github api的Lua库
  • lua-resty-hipchat - 使用hipchat api的Lua库
  • lua-resty-newrelic - 基于C SDK的ngx_lua的Lua newrelic SDK
  • api-gateway-aws - 适用于AWS API的Lua模块。来自Nginx / OpenResty的缺少的AWS SDK。使用它以简单的方式代理AWS API,使用您喜欢的任何HTTP客户端。
  • lua-resty-aws - 适用于OpenResty + Lua的AWS签名V4库
  • lua-resty-aws-sdk - 根据API规范生成的原始AWS SDK
  • lua-resty-aws-email - 使用Amazon Simple Email Service(SES)API发送电子邮件
  • lua-resty-aws-auth - 简单的Lua resty实用程序,用于生成Amazon v4授权和签名标头
  • lua-resty-s3 - 用于将内容上传到Amazon S3的Lua驱动程序
  • lua-resty-s3uploader - AWS S3上传客户端,易于使用
  • lua-resty-paypal - Lua Paypal客户端使用快速结账OpenResty
  • lua-resty-17monip - 用于ngx_lua的17MonIP解析库
  • lua-resty-upyun - Upyun基于云的平台
  • lua-mailgun - 用于发送电子邮件和与Mailgun API交互的Lua库。通过Lapis HTTP API与OpenResty兼容,或通过LuaSocket与任何其他Lua脚本兼容。
  • lua-payments - 绑定到各种支付提供程序API以便在Lua中使用(使用OpenResty或支持LuaSocket的任何东西)

其他库