└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Nginx Resources [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 2 | 3 | A collection of resources covering Nginx, Nginx + Lua, OpenResty and Tengine. 4 | 5 | This list is maintained by [Frederic Cambus](https://www.cambus.net). For updates, follow me on Twitter: [@fcambus](https://twitter.com/fcambus) 6 | 7 | ## Understanding Nginx 8 | 9 | - [History of Nginx](https://www.nginx.com/wp-content/uploads/2014/11/Infographic_History-of-Nginx_FulI_20141101.png) 10 | - [Understanding Nginx versioning](https://www.nginx.com/blog/nginx-1-6-1-7-released/) 11 | - [Interview with the creator of Nginx](https://web.archive.org/web/20180614224054/http://mindend.com/interview-with-the-creator-of-nginx/) 12 | - [Interview with Igor Sysoev, author of Apache's competitor NGINX](http://freesoftwaremagazine.com/articles/interview_igor_sysoev_author_apaches_competitor_nginx/) 13 | - [The case for Nginx in front of application servers](https://www.cambus.net/the-case-for-nginx-in-front-of-application-servers/) 14 | - [Nginx Optimization: understanding sendfile, tcp_nodelay and tcp_nopush](https://thoughts.t37.net/nginx-optimization-understanding-sendfile-tcp-nodelay-and-tcp-nopush-c55cdd276765) 15 | 16 | ## Architecture 17 | 18 | - [The Architecture of Open Source Applications (Volume 2): nginx](https://aosabook.org/en/nginx.html) 19 | - [Nginx Guts - Shedding light on Nginx internals](http://www.nginxguts.com/category/nginx/) 20 | - [Nginx discovery journey](https://www.nginx-discovery.com/) 21 | - [Nginx Internals](https://www.slideshare.net/joshzhu/nginx-internals) 22 | - [Inside NGINX: How We Designed for Performance & Scale](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/) 23 | - [Thread Pools in NGINX](https://www.nginx.com/blog/thread-pools-boost-performance-9x/) 24 | 25 | ## Configuration 26 | 27 | - [Beginner's Guide](https://nginx.org/en/docs/beginners_guide.html) 28 | - [Alphabetical index of variables](https://nginx.org/en/docs/varindex.html) 29 | - [Nginx Pitfalls](https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/) 30 | - [Useful Rewrites for Nginx](https://blog.engineyard.com/useful-rewrites-for-nginx) 31 | - [Nginx Configuration Primer](https://blog.martinfjordvald.com/nginx-primer/) 32 | - [Nginx Primer 2: From Apache to Nginx](https://blog.martinfjordvald.com/nginx-primer-2-from-apache-to-nginx/) 33 | - [Understanding the Nginx Configuration Inheritance Model](https://blog.martinfjordvald.com/understanding-the-nginx-configuration-inheritance-model/) 34 | - [Nginx HTTP server boilerplate configs](https://github.com/h5bp/server-configs-nginx) 35 | - [Nginx Boilerplate - Configuration template and a set of handy must-have snippets](https://github.com/nginx-boilerplate/nginx-boilerplate) 36 | - [How to Configure OCSP Stapling in Apache and Nginx](https://sslmate.com/blog/post/ocsp_stapling_in_apache_and_nginx) 37 | - [NGINX Config - Online nginx configuration generator](https://www.digitalocean.com/community/tools/nginx) 38 | - [Nice nginx features for developers](https://alex.dzyoba.com/blog/nginx-features-for-developers/) 39 | - [Nice nginx features for operators](https://alex.dzyoba.com/blog/nginx-features-for-operators/) 40 | - [Avoiding the Top 10 NGINX Configuration Mistakes](https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/) 41 | - [Gixy - Nginx configuration static analyzer](https://github.com/yandex/gixy) 42 | - [Nginx common configuration - Universal config and snippets](https://github.com/tldr-devops/nginx-common-configuration) 43 | 44 | ## Tutorials 45 | 46 | - [NGINX and NGINX Plus Admin Guide](https://docs.nginx.com/nginx/admin-guide/) 47 | - [agentzh's Nginx Tutorials](https://openresty.org/download/agentzh-nginx-tutorials-en.html) ([Source](https://github.com/openresty/nginx-tutorials)) 48 | - [Introduction to nginx.conf scripting](https://agentzh.org/misc/slides/nginx-conf-scripting/nginx-conf-scripting.html) 49 | - [Load Balancing with NGINX and NGINX Plus](https://www.nginx.com/blog/load-balancing-with-nginx-plus/) ([Part 2](https://www.nginx.com/blog/load-balancing-with-nginx-plus-part-2/)) 50 | - [Optimizing Nginx for High Traffic Loads](https://blog.martinfjordvald.com/optimizing-nginx-for-high-traffic-loads/) 51 | - [NGINX as a WebSockets Proxy](https://www.nginx.com/blog/websocket-nginx/) 52 | - [HTTP Keepalive Connections and Web Performance ](https://www.nginx.com/blog/http-keepalives-and-web-performance/) 53 | - [CORS on Nginx](https://enable-cors.org/server_nginx.html) 54 | - [Serving precompressed content with Nginx and Zopfli](https://www.cambus.net/serving-precompressed-content-with-nginx-and-zopfli/) 55 | - [Nginx on FreeBSD](https://www.cambus.net/nginx-on-freebsd/) 56 | - [Using New Debugging Features to Probe NGINX Internals](https://www.nginx.com/blog/new-debugging-features-probe-nginx-internals/) 57 | - [Performing A/B Testing with NGINX and NGINX Plus](https://www.nginx.com/blog/performing-a-b-testing-nginx-plus/) 58 | - [Improving NGINX Performance with Kernel TLS and SSL_sendfile()](https://www.nginx.com/blog/improving-nginx-performance-with-kernel-tls/) 59 | 60 | ## Modules development 61 | 62 | - [Official Development Guide](https://nginx.org/en/docs/dev/development_guide.html) 63 | - [Guide to Nginx Module Development](https://www.evanmiller.org/nginx-modules-guide.html) 64 | - [Advanced Topics In Nginx Module Development](https://www.evanmiller.org/nginx-modules-guide-advanced.html) 65 | 66 | ## APIs 67 | 68 | - [Telize - JSON IP and GeoIP REST API (IP Geolocation) built on Nginx and Lua](https://www.telize.com) 69 | - [GIN - JSON-API framework](http://gin.io/) 70 | - [Outbound API rate limits: the nginx way](https://www.monterail.com/blog/2011/outbound-api-rate-limits-the-nginx-way) 71 | - [Using Nginx to comply with a third-party API's rate limits](https://vitobotta.com/2014/01/12/nginx-rate-limits/) 72 | - [Kong - Management Layer for Microservices and APIs](https://konghq.com/kong/) 73 | 74 | ## Hacks 75 | 76 | - [Nginx JSON hacks](https://web.archive.org/web/20140921162448/http://www.gabrielweinberg.com/blog/2011/07/nginx-json-hacks.html) 77 | - [Using Environment Variables In Nginx.conf](https://web.archive.org/web/20170712003702/https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html) 78 | - [Log rotation directly within Nginx configuration file](https://www.cambus.net/log-rotation-directly-within-nginx-configuration-file/) 79 | - [Realtime pixel tracking with Nginx, syslog-ng, and Redis](https://benwilber.github.io/nginx/redis/syslog/pixel-tracking/2013/09/13/realtime-pixel-tracking-with-nginx-syslog-ng-and-redis.html) 80 | - [Dynamic log formats in Nginx](https://benwilber.github.io/nginx/syslog/logging/2015/08/26/dynamic-log-formats-in-nginx.html) 81 | - [Capture and delay unwanted requests](https://github.com/p0pr0ck5/lua-resty-tarpit) 82 | - [Nginx: a caching, thumbnailing, reverse proxying image server?](https://charlesleifer.com/blog/nginx-a-caching-thumbnailing-reverse-proxying-image-server-/) 83 | 84 | ## Tips 85 | 86 | - [Things you didn't know Nginx could do](https://www.slideshare.net/sarahnovotny/5-things-you-didnt-know-nginx-could-do) 87 | - [Finding the nginx gzip_comp_level sweet spot](https://mjanja.ch/2015/03/finding-the-nginx-gzip_comp_level-sweet-spot/) 88 | - [nginx mirroring tips and tricks](https://alex.dzyoba.com/blog/nginx-mirror/) 89 | 90 | ## Nginx + Lua 91 | 92 | - [Nginx, Lua, and beyond](https://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf) 93 | - [Pushing Nginx to its limit with Lua](https://blog.cloudflare.com/pushing-nginx-to-its-limit-with-lua/) 94 | - [Adding OAuth Support to Nginx via Lua](https://chairnerd.seatgeek.com/oauth-support-for-nginx-with-lua/) 95 | - [Scripting libdrizzle with Lua inside Nginx](https://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf) 96 | - [Nginx and Lua](https://web.archive.org/web/20141223070856/http://devblog.mixlr.com/2012/09/01/nginx-lua/) 97 | - [Writing an Nginx authentication module in Lua](https://www.stavros.io/posts/writing-an-nginx-authentication-module-in-lua/) 98 | - [Scaling TextRazor in the Cloud with Nginx and Lua](https://www.textrazor.com/blog/2013/03/scaling-textrazor-in-the-cloud-with-nginx-and-lua.html) 99 | - [LSSO - Lua + Nginx SSO System with an OAuth Backend](https://github.com/pirogoeth/lsso) 100 | - [Measuring Nginx Cache Performance using Lua and Redis](https://charlesleifer.com/blog/measuring-nginx-cache-performance-using-lua-and-redis/) 101 | - [nginx-lua - Nginx 1.19+ with LUA support based on Alpine Linux, Amazon Linux, CentOS, Debian, Fedora and Ubuntu.](https://github.com/fabiocicerchia/nginx-lua) 102 | 103 | ## Nginx + njs 104 | - [njs scripting language reference and examples](https://nginx.org/en/docs/njs/) 105 | - [Collection of njs use cases](https://github.com/f5devcentral/nginx-njs-usecases) 106 | - [JavaScript embedded on NGINX - Getting started with njs](https://www.bluedoa.com/javascript-embedded-on-nginx-getting-started-with-njs/) 107 | - [Create Nginx extensions in JavaScript](https://dev.to/metal3d/create-nginx-extensions-in-javascript-3310) 108 | - [Make your nginx config even more modular and reusable with njs 0.7.7](https://www.nginx.com/blog/make-nginx-config-even-more-modular-reusable-njs-0-7-7/) 109 | - [Diagnostic logging with the NGINX JavaScript module](https://www.nginx.com/blog/diagnostic-logging-nginx-javascript-module/) 110 | - [How to log request headers with NGINX and njs](https://wildwolf.name/how-to-log-request-headers-with-nginx-and-njs/) 111 | - [Using NGINX as an Object Storage Gateway via njs](https://www.nginx.com/blog/using-nginx-as-object-storage-gateway/) 112 | - [Easy HTTPS with NGINX and ACME via njs](https://steinkamp.us/posts/2023-08-10_easy-https-with-nginx) 113 | 114 | ## OpenResty 115 | 116 | - [OpenResty - Fast web app server by extending Nginx](https://openresty.org/en/) 117 | - [Lapis - A web framework for Lua or MoonScript powered by OpenResty](https://leafo.net/lapis/) 118 | - [Nginx image processing server with OpenResty and Lua](https://leafo.net/posts/creating_an_image_server.html) 119 | - [Building an OpenResty events server](https://github.com/cagerton/dropthat/) 120 | - [SysAdvent 2014 - OpenResty, Nginx and Lua](https://sysadvent.blogspot.com/2014/12/day-22-largely-unappreciated.html) ([Source](https://github.com/lusis/sysadvent-2014)) 121 | - [Ceryx - A dynamic reverse proxy](https://ide.sourcelair.com/blog/articles/75/ceryx-dynamic-nginx) 122 | - [An Introduction To OpenResty](https://openmymind.net/An-Introduction-To-OpenResty-Nginx-Lua/) 123 | - [Programming OpenResty (written by the OpenResty creator)](https://openresty.gitbooks.io/programming-openresty/content/) 124 | - [VeryNginx - Nginx distribution which provides WAF, Control Panel, and Dashboards](https://github.com/alexazhou/VeryNginx) 125 | 126 | ## Tengine 127 | 128 | - [Tengine Web Server](https://tengine.taobao.org) 129 | - [Difference between OpenResty and Tengine](https://github.com/openresty/openresty/issues/54) 130 | 131 | ## Talks 132 | 133 | - [NGINX Conference 2019 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXflDvBv642YFqT0UTqQGFsH) 134 | - [NGINX Conference 2018 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXe_Vc708VKvr5KJ4gnf1WxS) 135 | - [NGINX Conference 2017 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXeT-z_rcZ9yF0kV5SENZ-yt) 136 | - [NGINX Conference 2016 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXcOsB_dT26iu0BvbSxWYG1g) 137 | - [NGINX Conference 2015 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXdED9BR6GQ61A6d3fBzjpbn) 138 | - [NGINX Conference 2014 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXewvc6tjIGGFZ6DBKHEld3k) 139 | - [NGINX Conference](https://www.nginx.com/nginxconf/) 140 | - [NGINX User Summit 2014 - Lightning talks](https://www.youtube.com/playlist?list=PLGz_X9w9raXfTnRnI6Xl0LMhAKoTVVZv8) 141 | 142 | ## License 143 | 144 | [![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/) 145 | 146 | To the extent possible under law, [Frederic Cambus](https://www.cambus.net) has waived all copyright and related or neighboring rights to this work. 147 | --------------------------------------------------------------------------------