Skip to content

pygmalion666/awesome-resty

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 

Repository files navigation

awesome-resty

awesome-resty is a list of OpenResty / Nginx modules, Lua libraries, and related resources.

Official Channels

How to Contribute on this List?

  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
  • 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

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

Third-party Nginx Modules

  • 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

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
  • Vanilla — An OpenResty Web Framework
  • 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-session — Session library for OpenResty implementing Secure Cookie Protocol
  • lua-resty-reqargs — Helper to Retrieve application/x-www-form-urlencoded, multipart/form-data, and application/json Request Arguments
  • lua-resty-woothee — The Lua-Openresty implementation of Project Woothee, which is a multi-language user-agent strings parsers
  • 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
  • router.lua — A barebones router for Lua, it matches urls and executes lua functions
  • lua-resty-mobile — This library parses HTTP headers and detects mobile device*
  • lua-resty-jwt — JWT (JSON Web Tokens) for The Great OpenResty
  • lua-resty-post — HTTP Post Utility for OpenResty (File Uploading Helper)
  • neturl — URL and Query string parser, builder, normalizer for Lua

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

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
  • 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

Authentication and Authorization

  • 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

Cryptography

  • lua-resty-string — String utilities and common hash functions for ngx_lua and LuaJIT
  • lua-resty-nettle — LuaJIT FFI bindings for Nettle (a low-level cryptographic library)
  • lua-resty-chash — A generic consistent hash implementation for OpenResty/Lua
  • lua-resty-letsencrypt — Automatically fetch and renew TLS certificates on the fly using LetsEncrypt CA.
  • lua-resty-auto-ssl — On the fly (and free) SSL registration and renewal inside OpenResty/nginx with Let's Encrypt
  • lua-resty-murmurhash2 — LuaJIT MurmurHash 2 bindings to Nginx / OpenResty murmurhash2 implementation
  • lua-resty-hmac — Lua driver for making and receiving hmac signed requests
  • lua-resty-scrypt — LuaJIT FFI-based scrypt library for OpenResty
  • lua-resty-xxhash — LuaJIT FFI-bindings to xxHash, an Extremely fast non-cryptographic hash algorithm
  • lua-resty-rsa — RSA functions for LuaJIT
  • lua-resty-hawk — Hawk authentication on Nginx with Lua and OpenResty

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-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-resty-cassandra (See also: Mashape Fork) — 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-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-kyototycoon — Lua client driver for KyotoTycoon using its native wire protocol (OpenResty/ngx_lua)
  • 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
  • openresty-statsd — A Lua module for OpenResty to send metrics to StatsD

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-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

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

  • lua-resty-snappy — LuaJIT FFI bindings for Snappy, a fast compressor/decompressor

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 (http://libsass.org/).
  • lua-resty-lanli — LuaJIT FFI Bindings to Lanli HTML Sanitizer Library
  • 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-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

Document Formats

  • lua-resty-libxl — LuaJIT FFI-based LibXL (Excel) 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
  • 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

Web APIs

Other Sources for Libraries

Books and Tutorials

Books

Tutorials and Guides

Videos

Conferences, Workshops and Events

See Also

About

A List of Quality OpenResty Libraries, and Resources.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published