Product

Product Features How to Compare Docs Screenshots Why

Start here

Getting started Download Guides Frequently asked questions

More

Security Support Roadmap About

nginx modules

What the build includes and which feature each module makes possible.

Why nginx is built rather than installed

The nginx that comes with Ubuntu is built with a small set of features. Several of the things this software configures need features that are not in it, so nginx is compiled from source with all of them.

The cost is that you cannot update nginx with the usual system update command, and the build page is where that happens instead. The benefit is everything on this page.

Standard modules that matter

ModuleWhat it makes possible here
http_ssl, http_v2, http_v3TLS, HTTP/2 and HTTP/3 with QUIC.
stream, stream_ssl, stream_ssl_prereadTCP and UDP proxying, with TLS.
http_realip, stream_realipTrusting the real client address from a header when something sits in front.
http_stub_statusThe numbers the dashboard shows.
http_auth_requestThe subrequest based authentication path, including JWT validation.
http_gzip_static, http_sub, http_additionServing pre compressed files, and rewriting response bodies.
http_sliceRange requests split into cacheable slices, for large files.
http_secure_linkSigned URLs with an expiry.
http_davThe base for WebDAV support.
http_image_filterResizing and cropping images at the edge.
http_xslt, http_perlAvailable for the unusual cases that need them.
mail, mail_sslMail proxying, for the people who want it.
pcre-jit, threads, file-aioFaster regular expressions and better file handling.

Third party modules

ModuleWhat it makes possible here
lua-nginx-module and ngx_devel_kitThe faster JWT validation path, and anything else that needs logic inside nginx.
geoip2Country blocking against a MaxMind format database.
headers-moreFull control over request and response headers.
ngx_cache_purgeClearing cached objects without deleting the folder.
echo-nginx-moduleUseful for testing and for small synthetic responses.
substitutions-filterRewriting response bodies with more than one rule.
ngx-fancyindexPresentable directory listings for static folders.
nginx-dav-ext-moduleThe rest of WebDAV.
upload-progressProgress reporting for large uploads.
auth-pamAuthenticating against the system's own accounts.
nchanPublish and subscribe over HTTP, WebSocket and server sent events.
upstream-fairAn alternative balancing method.

Loaded rather than compiled in

ModSecurity is built as a loadable module, and only when asked for. A compiled in module is part of the binary whether anybody wants it or not, and ModSecurity links against libmodsecurity.so. If that library were ever missing or a version out of step, a statically linked nginx would not start at all, which would take down every node in the fleet over a feature most of them are not using.

Built this way, the file sits on disk doing nothing until a load_module line asks for it, and that line is only written for a node whose sites have the WAF on.

OpenSSL

The build links against OpenSSL 3.5, which carries ML-KEM. That is what makes post quantum key exchange available, and it is the main reason the build is done this way rather than using the system library.

Adding your own

The module list is a plain array near the top of nginx-installer.sh, in a folder|git-url|git-ref shape. Add an entry and rebuild. Do it on one node, confirm it works, then do the other, and remember that two nodes on different module lists is a fleet where a config can work on one and be refused by the other.