bungle/awesome-resty: A List of Quality OpenResty Libraries, and Resources.

8,466 阅读17分钟
原文链接: github.com

A List of OpenResty / Nginx modules, Lua libraries, and related resources.

What is OpenResty

OpenResty Logo

OpenResty is a full-fledged web platform by integrating the standard Nginx core, LuaJIT, many carefully written Lua libraries, lots of high quality 3rd-party Nginx modules, and most of their external dependencies. It is designed to help developers easily build scalable web applications, web services, and dynamic web gateways.

By taking advantage of various well-designed Nginx modules (most of which are developed by the OpenResty team themselves), OpenResty effectively turns the nginx server into a powerful web app server, in which the web developers can use the Lua programming language to script various existing nginx C modules and Lua modules and construct extremely high-performance web applications that are capable to handle 10K ~ 1000K+ connections in a single box.

OpenResty aims to run your server-side web app completely in the Nginx server, leveraging Nginx's event model to do non-blocking I/O not only with the HTTP clients, but also with remote backends like MySQL, PostgreSQL, Memcached, and Redis.

Real-world applications of OpenResty range from dynamic web portals and web gateways, web application firewalls, web service platforms for mobile apps/advertising/distributed storage/data analytics, to full-fledged dynamic web applications and web sites. The hardware used to run OpenResty also ranges from very big metals to embedded devices with very limited resources. It is not uncommon for our production users to serve billions of requests daily for millions of active users with just a handful of machines.

OpenResty is not an Nginx fork. It is just a software bundle. Most of the patches applied to the Nginx core in OpenResty have already been submitted to the official Nginx team and most of the patches submitted have also been accepted. We are trying hard not to fork Nginx and always to use the latest best Nginx core from the official Nginx team.

Official Channels

How to Contribute on this List?

There are at least three different ways to contribute:

  1. Create a New Issue where you describe the needed additions, deletions or changes.
  2. Fork this repository and make the changes, and create a pull request.
  3. Post a reply in the awesome-resty thread in openresty-en mailing list.

Contents

Modules

Core Modules

Core modules come bundled in OpenResty package.

  • ngx_openresty — Turning Nginx into a full-fledged Web App Server - Sources for OpenResty Bundle Generation
  • lua-nginx-module — Embed the power of Lua into Nginx
  • stream-lua-nginx-module — Embed the power of Lua into Nginx stream/TCP Servers
  • echo-nginx-module — An Nginx module for bringing the power of "echo", "sleep", "time" and more to Nginx's config file
  • xss-nginx-module — Native support for cross-site scripting (XSS) in an nginx
  • set-misc-nginx-module — Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)
  • encrypted-session-nginx-module — Encrypt and decrypt Nginx variable values
  • srcache-nginx-module — Transparent subrequest-based caching layout for arbitrary nginx locations
  • lua-upstream-nginx-module — Nginx C module to expose Lua API to ngx_lua for Nginx upstreams
  • headers-more-nginx-module — Set and clear input and output headers...more than "add"!
  • array-var-nginx-module — Add support for array variables to nginx config files
  • memc-nginx-module — An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands
  • redis2-nginx-module — Nginx upstream module for the Redis 2.0 protocol
  • rds-json-nginx-module — An nginx output filter that formats Resty DBD Streams generated by ngx_drizzle and others to JSON
  • rds-csv-nginx-module — Nginx output filter module to convert Resty-DBD-Streams (RDS) to Comma-Separated Values (CSV)
  • drizzle-nginx-module — An Nginx upstream module that talks to mysql and drizzle by libdrizzle
  • ngx_postgres — Upstream module that allows Nginx to communicate directly with PostgreSQL database
  • form-input-nginx-module — This is a nginx module that reads HTTP POST and PUT request body encoded in "application/x-www-form-urlencoded", and parse the arguments in request body into nginx variables.
  • ngx_coolkit — Collection of small and useful nginx add-ons
  • ngx_devel_kit — an Nginx module that adds additional generic tools that module developers can use in their own modules

Please also note that there is resty command line client included in OpenResty bundle. The command line client sources can be found on Github.

Core Nginx Modules

To learn more about Nginx Core Modules, please refer Nginx Documentation. Some modules that come with Nginx are (not all of them are build by default):

  • ngx_http_core_module
  • ngx_http_ssl_module — The ngx_http_ssl_module module provides the necessary support for HTTPS
  • ngx_http_v2_module — The ngx_http_v2_module module provides support for HTTP/2
  • ngx_http_realip_module — The ngx_http_realip_module module is used to change the client address and optional port to the one sent in the specified header fields
  • ngx_http_addition_module — The ngx_http_addition_module module is a filter that adds text before and after a response
  • ngx_http_xslt_module — The ngx_http_xslt_module is a filter that transforms XML responses using one or more XSLT stylesheet
  • ngx_http_image_filter_module — The ngx_http_image_filter_module module is a filter that transforms images in JPEG, GIF, and PNG formats
  • ngx_http_geoip_module — The ngx_http_geoip_module module creates variables with values depending on the client IP address, using the precompiled MaxMind databases
  • ngx_http_sub_module — The ngx_http_sub_module module is a filter that modifies a response by replacing one specified string by another
  • ngx_http_dav_module — The ngx_http_dav_module module is intended for file management automation via the WebDAV protocol. The module processes HTTP and WebDAV methods PUT, DELETE, MKCOL, COPY, and MOVE
  • ngx_http_flv_module — The ngx_http_flv_module module provides pseudo-streaming server-side support for Flash Video (FLV) files
  • ngx_http_mp4_module — The ngx_http_mp4_module module provides pseudo-streaming server-side support for MP4 files. Such files typically have the .mp4, .m4v, or .m4a filename extensions
  • ngx_http_gunzip_module — The ngx_http_gunzip_module module is a filter that decompresses responses with “Content-Encoding: gzip” for clients that do not support “gzip” encoding method. The module will be useful when it is desirable to store data compressed to save space and reduce I/O costs
  • ngx_http_gzip_static_module — The ngx_http_gzip_static_module module allows sending precompressed files with the “.gz” filename extension instead of regular files
  • ngx_http_auth_request_module — The ngx_http_auth_request_module module implements client authorization based on the result of a subrequest
  • ngx_http_random_index_module — The ngx_http_random_index_module module processes requests ending with the slash character (‘/’) and picks a random file in a directory to serve as an index file
  • ngx_http_secure_link_module — The ngx_http_secure_link_module module (0.7.18) is used to check authenticity of requested links, protect resources from unauthorized access, and limit link lifetime
  • ngx_http_slice_module — The ngx_http_slice_module module is a filter that splits a request into subrequests, each returning a certain range of response
  • ngx_http_stub_status_module — The ngx_http_stub_status_module module provides access to basic status information
  • ngx_http_charset_module — The ngx_http_charset_module module adds the specified charset to the “Content-Type” response header field
  • ngx_http_gzip_module — The ngx_http_gzip_module module is a filter that compresses responses using the “gzip” method
  • ngx_http_ssi_module — The ngx_http_ssi_module module is a filter that processes SSI (Server Side Includes) commands in responses passing through it
  • ngx_http_userid_module — The ngx_http_userid_module module sets cookies suitable for client identification
  • ngx_http_access_module — The ngx_http_access_module module allows limiting access to certain client addresses
  • ngx_http_auth_basic_module — The ngx_http_auth_basic_module module allows limiting access to resources by validating the user name and password using the “HTTP Basic Authentication” protocol
  • ngx_http_autoindex_module — The ngx_http_autoindex_module module processes requests ending with the slash character (‘/’) and produces a directory listing
  • ngx_http_geo_module — The ngx_http_geo_module module creates variables with values depending on the client IP address
  • ngx_http_map_module — The ngx_http_map_module module creates variables whose values depend on values of other variables
  • ngx_http_split_clients_module — The ngx_http_split_clients_module module creates variables suitable for A/B testing, also known as split testing
  • ngx_http_referer_module — The ngx_http_referer_module module is used to block access to a site for requests with invalid values in the “Referer” header field
  • ngx_http_rewrite_module — The ngx_http_rewrite_module module is used to change request URI using PCRE regular expressions, return redirects, and conditionally select configurations
  • ngx_http_proxy_module — The ngx_http_proxy_module module allows passing requests to another server
  • ngx_http_fastcgi_module — The ngx_http_fastcgi_module module allows passing requests to a FastCGI server
  • ngx_http_uwsgi_module — The ngx_http_uwsgi_module module allows passing requests to a uwsgi server
  • ngx_http_scgi_module — The ngx_http_scgi_module module allows passing requests to an SCGI server
  • ngx_http_memcached_module — he ngx_http_memcached_module module is used to obtain responses from a memcached server
  • ngx_http_limit_conn_module — The ngx_http_limit_conn_module module is used to limit the number of connections per the defined key, in particular, the number of connections from a single IP address
  • ngx_http_limit_req_module — he ngx_http_limit_req_module module is used to limit the request processing rate per a defined key, in particular, the processing rate of requests coming from a single IP address
  • ngx_http_empty_gif_module — The ngx_http_empty_gif_module module emits single-pixel transparent GIF
  • ngx_http_browser_module — The ngx_http_browser_module module creates variables whose values depend on the value of the “User-Agent” request header field
  • ngx_http_upstream_modulenginx.org/en/docs/htt…
  • ngx_http_perl_module — The ngx_http_perl_module module is used to implement location and variable handlers in Perl and insert Perl calls into SSI
  • ngx_mail_core_module
  • ngx_mail_ssl_module — The ngx_mail_ssl_module module provides the necessary support for a mail proxy server to work with the SSL/TLS protocol
  • ngx_mail_smtp_module
  • ngx_mail_imap_module
  • ngx_mail_pop3_module
  • ngx_stream_core_module
  • ngx_stream_ssl_module — The ngx_stream_ssl_module module provides the necessary support for a stream proxy server to work with the SSL/TLS protocol
  • ngx_stream_proxy_module — The ngx_stream_proxy_module module allows proxying data streams over TCP, UDP, and UNIX-domain sockets

Third-party Nginx Modules

  • ngx_lua_ipc — Interprocess communication for Lua Nginx Module and OpenResty — send named alerts with string data between Nginx worker processes
  • nchan (Github) — Fast, horizontally scalable, multiprocess pub/sub queuing server and proxy for HTTP, long-polling, Websockets and EventSource (SSE)
  • ngx_pagespeed (Github) — Automatic PageSpeed optimization module for Nginx
  • ModSecurity — Open Source Web Application Firewall
  • NAXSI — NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX; NAXSI means Nginx Anti Xss & Sql Injection
  • nginx-upsync-module — Nginx C module, syncing upstreams from consul or others, dynamiclly adjusting backend servers weight, needn't reload nginx
  • sass-nginx-module — Syntactically Awesome Nginx Module
  • More 3rd Party Modules

Libraries

Core Libraries

Core Libraries are bundled in OpenResty package, and you don't need to separately install them.

Web Frameworks

  • Lapis — Lapis is a framework for building web applications using MoonScript or Lua that runs inside of a customized version of Nginx called OpenResty
  • lor (Github) — A fast and minimalist web framework based on OpenResty
  • Vanilla — An OpenResty Web Framework
  • luastar — A HTTP server and web framework based on OpenResty
  • Lusty — Lua RESTful Web Application Framework, an extensible and speedy web framework
  • GIN — A fast, low-latency, low-memory footprint, web JSON-API framework with Test Driven Development helpers and patterns
  • Quick Server — A Server Framework Based on OpenResty
  • Sailor — A Lua MVC Web Framework
  • lua-resty-rack — A simple and extensible HTTP server framework for OpenResty
  • MOOCHINE — A simple and lightweight web framework based on OpenResty
  • sinatra-openresty — Sinatra ported to OpenResty framework
  • lj-web — Lightweight Web Framework Based On ngx_openresty
  • Gimlet Cocktail — A micro web application framework for OpenResty written in Moonscript inspired by Martini & Sinatra
  • durap — Durap is a Lua Web Framework based on OpenResty.
  • Ziggy Stardust — Ziggy Stardust (or just "stardust") is a simple nginx/Lua framework inspired by Sinatra, Express, and Mercury
  • zLua — A Codeigniter like Lua framework based on OpenResty
  • lua-resty-stack — OpenResty Simple Application Stack
  • dodolu — A lightweight web framework based on OpenResty
  • Octopus (Github) — The Lua Web Platform
  • vicky — A restful framework for openresty,inspired by expressjs and koa.

Web Development Essentials

  • lua-resty-cookie — Lua library for HTTP cookie manipulations for OpenResty/ngx_lua
  • lua-resty-cors — The Cross-Origin Resource Sharing (CORS) implementation for OpenResty
  • lua-resty-session — Session library for OpenResty implementing Secure Cookie Protocol
  • lua-resty-woothee — The Lua-Openresty implementation of Project Woothee, which is a multi-language user-agent strings parsers
  • lua-resty-mobile — This library parses HTTP headers and detects mobile device
  • lua-resty-jwt — JWT (JSON Web Tokens) for The Great OpenResty
  • neturl — URL and Query string parser, builder, normalizer for Lua
  • Mio — API statistics/summary and health datas in NGINX based on OpenResty, just like NGINX Plus

Routing Libraries

  • lua-resty-route — A URL routing library for OpenResty supporting multiple route matchers, middleware, and HTTP and WebSockets handlers to mention a few of its features
  • router.lua — A barebones router for Lua, it matches URLs and executes Lua functions
  • lua-resty-r3libr3 OpenResty implementation, libr3 is a high-performance path dispatching library. It compiles your route paths into a prefix tree (trie). By using the constructed prefix trie in the start-up time, you may dispatch your routes with efficiency

Request Argments Parsers

Middleware and API Tools

  • Kong (GitHub) — KONG: Microservice Management Layer (Secure, Manage & Extend your APIs and Microservices)
  • LSSO — A Lightweight SSO middleware for Nginx + Lua
  • apigateway — A Performant API Gateway based on Nginx and OpenResty

Templating

  • lua-resty-template — A Compiling (HTML) templating engine for Lua and OpenResty
  • lemplate — OpenResty/Lua template framework implementing Perl's TT2 templating language
  • etlua — Embedded Lua templates
  • liquid-lua — A Lua implementation of Liquid for OpenResty platform
  • lua-resty-tmpl — A simple template engine for Lua and OpenResty, derived from lua-template.
  • Alternatives — Some alternative Lua templating solutions that may work just fine with OpenResty

Validation

  • lua-resty-validation — An extendable chaining validation and filtering library for Lua and OpenResty
  • valua — Validation for lua! A module for making chained validations. Create your objects, append your tests, use and reuse it!

Authentication and Authorization

  • lua-resty-macaroons — LuaJIT FFI Bindings to libmacaroons – Macaroons are flexible authorization credentials that support decentralized delegation, attenuation, and verification
  • lua-resty-openidc — lua-resty-openidc is a library for NGINX implementing the OpenID Connect Relying Party (RP) and the OAuth 2.0 Resource Server (RS) functionality
  • micro-auth — A microservice that makes adding authentication with Google and Github to your application easy (Note: before using it in production, see: news.ycombinator.com/item?id=136… — hopefully we can remove this remark in a future)

Cryptography

Networking

Databases and Storages

  • lua-resty-mysql — Non-blocking Lua MySQL client driver for ngx_lua based on the cosocket API
  • lua-resty-postgres — Nonblocking Lua PostgreSQL driver library for ngx_lua
  • pgmoon — A pure Lua Postgres driver for use in OpenResy & more
  • lua-resty-couchdb — Lua resty minimal couchdb client using nginx proxy ngx.location_capture
  • lua-resty-orm — Simple ORM for OpenResty
  • lua-resty-mvc — You don't need that complicated MVC framework! With just a plain folder with several simple files, you can enjoy basic but most frequently used MVC features.
  • lua-resty-memcached — Lua memcached client driver for the ngx_lua based on the cosocket API
  • lua-resty-redis — Lua Redis client driver for the ngx_lua based on the cosocket API
  • lua-resty-redis-connector — Connection utilities for lua-resty-redis, making it easy and reliable to connect to Redis hosts, either directly or via Redis Sentinel
  • lua-resty-redis-cluster — OpenResty Redis Cluster Client
  • lua-cassandra - Pure Lua, feature-rich, and cluster-aware Cassandra client
  • lua-resty-cassandra — Pure Lua Cassandra client using CQL binary protocol
  • lua-resty-bloomd — A client library based on ngx_lua to interface with bloomd servers
  • lua-resty-riak — Lua riak protocol buffer client driver for the ngx_lua based on the cosocket API
  • lua-resty-moongoo — MongoDB library for OpenResty, highly inspired by Perl Mango
  • lua-resty-mongol — Native Lua Mongodb driver which supports both luasocket and ngx_lua based on the cosocket API
  • lua-resty-mongo — Lua mongodb client driver for the ngx_lua based on the cosocket API
  • lua-mongo — A simple Lua Mongo driver (a fork made to work with co-sockets)
  • lua-resty-influx — OpenResty client for InfluxDB
  • lua-resty-kyototycoon — Lua client driver for KyotoTycoon using its native wire protocol (OpenResty/ngx_lua)
  • lua-resty-kyototycoon — Lua client driver for KyotoTycoon using its binary protocol
  • lua-resty-tarantool — Library for working with Tarantool from Nginx with the embedded Lua module or with OpeRresty
  • lua-nginx-tarantool — A driver for a NoSQL database in a Lua script Tarantool build on fast nginx cosockets
  • lua-resty-ssdb — Lua ssdb client driver for the ngx_lua based on the cosocket API, SSDB is a leveldb server
  • ledis-openresty — Lua LedisDB client driver for the ngx_lua based on the cosocket API
  • lua-resty-fastdfs — Nonblocking Lua FastDFS driver library for ngx_lua
  • lua-resty-statsd — StatsD client for OpenResty
  • lua-resty-dogstatsd — A client for DogStatsD, an extension of the StatsD metric server for Datadog. Using nginx cosocket API
  • openresty-statsd — A Lua module for OpenResty to send metrics to StatsD
  • lua-resty-mogilefs — A Lua mogilefs client driver for the ngx_lua based on the cosocket API

Testing and Profiling

  • Test::Nginx — Data-driven test scaffold for Nginx C module and OpenResty Lua library development (see real-word tests in lua-resty-redis)
  • nginx-systemtap-toolkit — Real-time analyzing and diagnosing tools for Nginx based on SystemTap
  • stapxx — Simple macro language extentions to systemtap
  • FlameGraph — Flame graphs are a visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately
  • lua-resty-busted — Test OpenResty scripts with busted
  • lua-resty-test — Test frame based on OpenResty
  • busted (Github) — Elegant Lua unit testing
  • Telescope (Github) — Telescope is a highly customizable test library for Lua that allows for declarative tests with nested contexts

Message Queuing and Task Management

  • lua-resty-qless — Lua binding to Qless (Queue / Pipeline management) for OpenResty (see also: Qless Web Interface implemented with OpenResty)
  • lua-resty-rabbitmqstomp — Lua RabbitMQ client library which uses cosocket api for communication over STOMP 1.2 with a RabbitMQ broker which has the STOMP plugin
  • lua-resty-gearman — Lua gearman client driver for the ngx_lua based on the cosocket API
  • lua-resty-kafka — Lua kafka client driver for the ngx_lua based on the cosocket API
  • lua-resty-beanstalkd — Lua beanstalkd client driver for the ngx_lua based on the cosocket API
  • lua-resty-ironmq — Simple IronMQ client for OpenResty

Bar Codes and QR Codes

Utilities

  • lua-resty-worker-events — Inter process events for Nginx worker processes
  • lua-resty-batch — Merge multiple requests in nginx to a single sub-request
  • lua-resty-shell — Tiny non-blocking subprocess / shell library to use with OpenResty application server (using sockproc)
  • lua-resty-exec — Non-blocking, non-shell-spawning, streaming and non-streaming subprocess library (using sockexec)
  • lua-resty-repl — Interactive console (REPL) for OpenResty and LuaJIT code
  • lua-resty-fileinfo — LuaJIT FFI bindings to libmagic, magic number recognition library - tries to determine file types
  • lua-resty-taglib - LuaJIT FFI bindings for TagLib - An Audio Meta-Data Library
  • lua-resty-uuid — LuaJIT FFI bindings for libuuid, a DCE compatible Universally Unique Identifier library
  • lua-resty-jit-uuid — A pure LuaJIT (no dependencies) uuid generator tuned for performance
  • lua-resty-tsort — Performs a topological sort on input data
  • lua-resty-postal — LuaJIT FFI Bindings to libpostal – a fast statistical parser/normalizer for street addresses around the world.
  • lua-resty-libinjection — LuaJIT FFI bindings for libinjection, a SQL/SQLi tokenizer and analyzer
  • lua-resty-socket - Automatic LuaSocket/cosockets compatibility module
  • Inspect (Github) — Inspect is a library that transforms any Lua value into a human-readable representation. It is especially useful for debugging errors in tables.
  • lua-resty-maxminddb (Github) — LuaJIT FFI Bindings to official libmaxminddb, to get ip location with ip database offered by maxmind

Date and Time

These libraries are not build to using lua-nginx-modules date time functions (except luatz) like ngx.today, ngx.time, ngx.now, ngx.localtime, or ngx.utctime, but they may still come handy. At some point we may need a more "official" time library for OpenResty.

  • luatz — A Lua library for time and date manipulation (has a fallback to ngx.now)
  • LuaDate — Lua Date and Time module for Lua 5.x
  • SciLua Time Library — Library for the manipulation of dates and periods according to the Gregorian calendar, i.e. the internationally accepted calendar for most uses

Compression

Text Formats

  • lua-resty-hoedown — LuaJIT FFI bindings to Hoedown, a standards compliant, fast, secure markdown processing library in C
  • lua-gumbo — Lua bindings for the Gumbo HTML5 parsing library, with a set of DOM APIs implemented in pure Lua
  • lua-resty-sass — LuaJIT FFI bindings for libsass - A C/C++ implementation of a Sass compiler (libsass.org/).
  • lua-resty-lanli — LuaJIT FFI Bindings to Lanli HTML Sanitizer Library
  • lua-resty-ini — Lua INI-file parser
  • lua-re2 — C and Lua wrapper for RE2 regular expression library.
  • lua-aho-corasick — C++ and Lua Implementation of the Aho-Corasick (AC) string matching algorithm
  • lua-resty-json — JSON library for Lua and C (decoder only).
  • lua-resty-libcjson — LuaJIT FFI-based cJSON library for OpenResty
  • lua-resty-prettycjson — Lua cJSON Pretty Formatter
  • lua-resty-utf8rewind — LuaJIT FFI bindings for utf8rewind - a system library written in C designed to extend the default string handling functions with support for UTF-8 encoded text
  • lua-resty-unistring — LuaJIT FFI bindings for GNU libunistring - A Unicode string manipulation lIbrary (www.gnu.org/software/li…)
  • lua-resty-htmlentities — Backport the entities to LuaJIT with the FFI binding as the entities to UTF-8 decoder
  • lua-resty-jsdecode — Javascript Escape Notation decoding to UTF-8 bytes

Document Formats

  • lua-resty-libxl — LuaJIT FFI-based LibXL (Excel) library for OpenResty
  • lua-resty-haru — LuaJIT FFI-based libHaru (PDF) library for OpenResty
  • lua-resty-hpdf — LuaJIT FFI-based libHaru (PDF) library for OpenResty

Image Formats

  • Lua IMagick — Lua Pure-C Bindings to ImageMagick
  • magick — Lua Bindings to ImageMagick for LuaJIT using FFI
  • giflib — Lua bindings to GIFLIB for LuaJIT using FFI
  • fi-luajit — A LuaJIT interface to FreeImage

Localization

Caching

  • lua-resty-lrucache — Lua-land LRU Cache based on LuaJIT FFI
  • shcache — shcache is an attempt at using ngx.shared.DICT with a caching state machine layed on top
  • lua-resty-tlc — Two Layer Cache implementation using lua-resty-lrucache and shared dictionaries.
  • Ledge — A Lua application for OpenResty, providing HTTP cache functionality for Nginx, using Redis as a cache / metadata store
  • lua-resty-cache — HTTP Cache to Redis, can serve stale response, and using lua-resty-lock only allow one request to populate a new cache

Metrics and Statistics

  • LUAMETER — A Lua module for Nginx that records and provides key status and performance metrics, right from within Nginx and in real-time (Proprietary)
  • ngxtop — Real-Time metrics for nginx server

Logging

  • lua-resty-logger-socket — Raw-socket-based Logger Library for Nginx (based on ngx_lua)
  • raven-lua — A small Lua interface to Sentry
  • lua-nginx-logging — Logging utilities for Nginx written in Lua
  • lua-resty-logger — Custom Logger Library for OpenResty
  • lua-resty-rfc5424 — An implementation of the RFC5424(syslog) in the OpenResty
  • lua-resty-fluentd — Lua fluentd logger for the ngx_lua based on the cosocket API
  • lua-resty-fluent-logger — A structured logger for Fluentd (OpenResty / ngx_lua)
  • raven-lua — A small Lua interface to Sentry that also has a helpful wrapper function call() that takes any arbitrary Lua function (with arguments) and executes it, traps any errors and reports it automatically to Sentry

Functional Programming

  • Lua Fun — Lua Fun is a high-performance functional programming library for Lua designed with LuaJIT's trace compiler in mind
  • Penlight — Penlight brings together a set of generally useful pure Lua modules, focusing on input data handling (such as reading configuration files), functional programming (such as map, reduce, placeholder expressions, etc), and OS path management
  • Moses — A Lua utility-belt library for functional programming. It complements the built-in Lua table library, making easier operations on arrays, lists, collections
  • Underscore.lua — Underscore.lua is a Lua library that provides a set of utility functions for dealing with iterators, arrays, tables, and functions
  • Lodash.lua — A functional programming library for Lua in respect to the Javascript library Lodash
  • Search for more "Functional Lua" projects on GitHub...

Web APIs

  • lua-resty-github — Lua library for using the github api in the ngx_lua nginx module
  • lua-resty-hipchat — Lua library for using the hipchat api
  • lua-resty-newrelic — Lua newrelic SDK for the ngx_lua based on the C SDK
  • api-gateway-aws — Lua module for AWS APIs. The missing AWS SDK from Nginx / OpenResty. Use it to proxy AWS APIs in a simple fashion, with any HTTP Client that you prefer.
  • lua-resty-aws — AWS signature V4 library for OpenResty + Lua
  • lua-resty-aws-sdk — A raw AWS SDK generated from API specification
  • lua-resty-aws-email — Send email using Amazon Simple Email Service(SES) API
  • lua-resty-aws-auth — Simple Lua resty utilities to generate Amazon v4 authorization and signature headers
  • lua-resty-s3 — Lua driver for uploading content to Amazon S3
  • lua-resty-s3uploader — An AWS S3 upload client,easy to use
  • lua-resty-paypal — Lua Paypal client using express checkout for OpenResty
  • lua-resty-17monip — 17MonIP parsing library for ngx_lua
  • lua-resty-upyun — Upyun cloud-based platform
  • lua-resty-newrelic — New Relic bindings for a OpenResty / Lua
  • lua-mailgun — A Lua library for sending emails and interacting with the Mailgun API. Compatible with OpenResty via Lapis HTTP API, or any other Lua script via LuaSocket.
  • lua-payments — Bindings to various payment provider APIs for use in Lua (with OpenResty or anything that supports LuaSocket)

Other Sources for Libraries

Books and Tutorials

Books

Tutorials and Guides

Videos

Conferences, Workshops and Events

Demo Applications

See Also