Angie modules optimized & extended
Current version: 1.11.6 (last built: 2026-05-27)
Sub-packages: 9 core + 100 modules (109 binary packages) · Patches: 7 · Distros: Debian bullseye / bookworm / trixie, Ubuntu jammy / noble / resolute
What is Angie?
Angie is a high-performance web server forked from NGINX by the original core NGINX developers. It is a true drop-in replacement — compatible with all NGINX configuration syntax — while adding features NGINX mainline hasn’t shipped yet: native ACME/Let’s Encrypt, a rich JSON status API, and active development by its original authors.
Our packages are built with the exact same optimizations and dynamic module set as our NGINX stack — same performance tuning, same security hardening, just swap the binary.
Why choose Angie?
- Built by the original NGINX core developers
- Native ACME/Let’s Encrypt — no Certbot needed (deep dive)
- Rich JSON status API at
/status— connections, upstreams, caches, SSL stats - 100% NGINX config compatible — no migration needed
- Linked against OpenSSL-NGINX, HTTP/3 QUIC, -Ofast -flto, zlib-ng, kTLS, TFO
See also: Angie vs NGINX feature comparison
Installation
See the How to use page to add the repository. Migrating from NGINX? Your /etc/nginx/ config works as-is.
Applied patches
The patch series applied to every Angie build (in order):
0002-Make-sure-signature-stays-the-same-in-all-nginx-buil.patch– keeps theServer:response header andnginx -voutput identical across the whole package matrix, so client fingerprints don’t drift between distros or rebuilds.1.30.0-zlib-ng.patch– teaches nginx’s gzip filter about zlib-ng in native mode, so the package links against the faster compressor without breaking ABI for callers expecting classic zlib.nginx_dynamic_tls_records.patch– enables the Cloudflare dynamic TLS record sizing logic so the first byte of TLS payload arrives in a single packet, cutting time-to-first-byte over the wire.nginx-ssl_cert_cb_yield.patch– lets Lua handlers yield (cosocket calls, sleeps, redis lookups…) from insidessl_certificate_by_lua*andssl_session_fetch_by_lua*callbacks; required for any non-trivial dynamic-certificate setup.http2-ktls-lingering-close-eio.patch– silences the spuriousSSL_read() failed (EIO)alert that mainline emits when an HTTP/2 client closes a kTLS connection during lingering-close; cosmetic only, but it filled error logs.openssl-4-compat.patch– Backported patches intoopenssl-4-compat.patchso the build works against OpenSSL 4 while still compiling cleanly on systems that ship OpenSSL 3.myguard-branding.patch– final branding sweep: replaces vendor strings and tweaks the default error pages so packaged installs identify asnginxonly, notnginx (Debian)ornginx (Ubuntu).
Bundled support libraries
Upstream libraries vendored into the build and linked into specific modules. Not loadable as nginx modules themselves; listed for transparency.
- libinjection – SQL injection and XSS detection library. Bundled because the
http-wafmodule links against it for its pattern-matching engine. - quickjs-ng – Maintained fork of the QuickJS JavaScript engine. Compiled and staged at build time so the njs dynamic module can be linked against the QuickJS engine instead of njs’s older bundled interpreter.
Module usage examples
See the module usage examples page for ModSecurity, GeoIP2, Brotli, Lua, rate limiting and more.
All dynamic modules
All modules ship as angie-module-* packages. Load them with load_module modules/ngx_*.so; at the top of your config.
Security & WAF modules
- angie-module-http-modsecurity – ModSecurity v3 WAF connector
- angie-module-http-naxsi – NAXSI open-source WAF
- angie-module-http-waf – ngx_waf high-performance firewall
- angie-module-http-testcookie-access – Cookie-based bot mitigation
- angie-module-http-js-challenge – JavaScript proof-of-work anti-DDoS
- angie-module-http-captcha – CAPTCHA challenge module
- angie-module-http-security-headers – Automatic security headers
- angie-module-http-bot-verifier – verifies declared bots (Googlebot etc.) by reverse-DNS
Authentication modules
- angie-module-http-auth-ldap – LDAP authentication
- angie-module-http-auth-pam – PAM authentication
- angie-module-http-auth-spnego – Kerberos/SPNEGO authentication
- angie-module-http-auth-hmac – HMAC-signed URL authentication
- angie-module-http-auth-internal – internal authentication helper for protected locations
- angie-module-http-auth-jwt – JWT validation and claims-based authorisation
- angie-module-http-auth-totp – Time-based one-time password (TOTP) authentication for Nginx
- angie-module-http-aws-auth – This nginx module can proxy requests to authenticated S3 backends using Amazon’s
- angie-module-http-encrypted-session – Encrypt/decrypt nginx variables
- angie-module-http-hmac-secure-link – HMAC-signed secure download links
Compression modules
- angie-module-http-brotli – Brotli compression, filter + static
- angie-module-http-zstd – Zstandard compression
- angie-module-http-unbrotli – transparently decompress Brotli-encoded upstream responses
- angie-module-http-unzstd – transparently decompress zstd-encoded upstream responses
- angie-module-http-compression-normalize – ngx_http_compression_normalize_module is an Nginx module designed to parse, normalize, and manage the Accept-Encoding headers from client requests.
- angie-module-http-compression-vary – ngx_http_compression_vary_filter_module is a header filter module used instead of the ‘gzip_vary’ directive.
Geo-location & analytics modules
- angie-module-http-geoip2 – MaxMind GeoIP2 HTTP lookup
- angie-module-http-vhost-traffic-status – Per-vhost traffic statistics
- angie-module-http-user-agent – Match browsers and crawlers
- angie-module-ipscrub – IP anonymizer for GDPR-compliant logging
- angie-module-http-statsd – emit nginx metrics to a StatsD collector
- angie-module-stream-sts – stream-context traffic status monitoring
Access control & rate limiting modules
- angie-module-http-access-control – fine-grained access control rules beyond allow/deny
- angie-module-http-access-plus – Limit access by HTTP method and address
- angie-module-http-dynamic-limit-req – Dynamically lock/release IPs
- angie-module-http-sysguard – Protect against high load and memory pressure
- angie-module-http-cors – Support Cross-Origin Resource Sharing (CORS) in Nginx.
- angie-module-http-cookies-filter – A NGINX module for fine-grained request cookies control.
- angie-module-http-cookie-flag – The Nginx module for adding cookie flag
Cache management modules
- angie-module-http-cache-purge – Purge proxy/fastcgi cache entries
- angie-module-http-cache-dechunk-filter – allows range request for cached response that was recieved from upstream with Transfer-Encoding: chunked.
- angie-module-http-srcache-filter – Transparent subrequest-based caching
- angie-module-http-slowfs-cache – slow filesystem caching layer for static assets
- angie-module-http-pagespeed – Google PageSpeed — optimize assets on the fly
- angie-module-http-upstream-cache-vars – expose upstream cache state as variables
Lua & scripting modules
- angie-module-http-lua – Embed Lua into request processing, OpenResty
- angie-module-stream-lua – Lua for TCP/UDP stream blocks
- angie-module-http-ndk – Nginx Development Kit, required by Lua modules
- angie-module-http-set-misc – set_md5, set_sha1, set_quote_json and more
- angie-module-http-echo – Shell-style echo/sleep/subrequest directives
- angie-module-http-eval – Evaluate upstream response into a variable
- angie-module-http-redis2 – Redis 2.0 protocol upstream
- angie-module-http-xss-filter – Native cross-site AJAX support
- angie-module-http-form-input – read application/x-www-form-urlencoded POST data into variables
- angie-module-http-iconv – on-the-fly character encoding conversion of responses
Headers & response manipulation modules
- angie-module-http-headers-more-filter – Set/clear any request or response header
- angie-module-http-subs-filter – Regex substitution in response body
- angie-module-http-trim-filter – Strip whitespace and HTML comments
- angie-module-http-length-hiding-filter – Pad responses to obscure content length
- angie-module-http-dynamic-etag – ETags for dynamic content
- angie-module-http-footer-filter – append content to response bodies
- angie-module-http-log-var-set – set variables specifically for use in access logs
- angie-module-http-proxy-var-set – set variables on proxied requests
- angie-module-http-extra-variables – additional built-in variables for logging and routing
- angie-module-http-array-var – array-typed variables for use with rewrite/lua
- angie-module-http-keyval – nginx-keyval is a key-value store dynamic module for nginx.
- angie-module-http-internal-redirect – issue internal redirects from config
- angie-module-http-loop-detect – ngx_http_loop_detect_module allows NGINX to use the CDN-Loop header to prevent request loops.
- angie-module-http-error-log-write – ngx_http_error_log_write_module allows writing error log entries based on conditional expressions in nginx configuration files..
- angie-module-http-rewrite-status-filter – rewrite upstream response status codes
Static serving & WebDAV modules
- angie-module-http-fancyindex – Styled directory listings
- angie-module-http-concat – Concatenate CSS/JS files in one request
- angie-module-http-dav-ext – Full WebDAV: PROPFIND, OPTIONS, LOCK
- angie-module-http-uploadprogress – Track upload progress
- angie-module-http-upload – resumable file upload handler
- angie-module-http-zip – stream ZIP archives assembled from upstream files
- angie-module-http-sorted-querystring – normalize querystring order for cache-key stability
- angie-module-http-cgi – Brings CGI support to Nginx and
Streaming & real-time modules
- angie-module-http-flv-live – HTTP-FLV live streaming with GOP cache
- angie-module-rtmp – RTMP streaming
- angie-module-nchan – Pub/sub for HTTP, SSE, WebSockets
- angie-module-http-doh – DNS-over-HTTPS endpoint
- angie-module-http-early-hints – HTTP 103 Early Hints
- angie-module-http-vod – video-on-demand packaging (HLS, DASH, MSS) on the fly
- angie-module-http-ts – MPEG-TS streaming module
- angie-module-http-server-redirect – server-block-level redirect helper
- angie-module-http-let – assign expressions to variables with arithmetic and string ops
Upstream & load balancing modules
- angie-module-http-dynamic-upstream – runtime upstream management via HTTP API
- angie-module-http-upstream-fair – (description pending)
- angie-module-http-combined-upstreams – The module introduces three directives add_upstream,
- angie-module-http-memc – (description pending)
- angie-module-http-enhanced-memc – (description pending)
- angie-module-http-postgres – direct PostgreSQL upstream backend
Other modules
- angie-module-http-limit-traffic-rate – Nginx directive limit_rate could limit connection’s speed, and limit_conn could limit connection number by given variable.
- angie-module-http-push-stream – (description pending)
- angie-module-http-upstream-log – The ngx_http_upstream_log_module module writes upstream request logs in the specified format, like ngx_http_log_module.
- angie-module-http-var – ngx_http_var_module is a nginx module that dynamically assigns new variables through predefined functions.
- angie-module-ssl-ct – (description pending)
- angie-module-njs – NGINX JavaScript — built against QuickJS-NG instead of njs’s native interpreter, so the language surface is full ES2023 (real
async/await,BigInt,Proxy, ES modules, modern regex,Intl) forjs_set/js_content/js_periodicscripting.
Patches (7 total)
The complete patch series applied to every angie build on this repository, in the exact order Debian packaging applies them (debian/patches/series):
- 0002-Make-sure-signature-stays-the-same-in-all-nginx-buil.patch — keeps the
Server:response header andangie -voutput identical across the whole package matrix, so client fingerprints don’t drift between distros or rebuilds. - 1.30.0-zlib-ng.patch — teaches Angie’s gzip filter about zlib-ng in native mode, so the package links against the faster compressor without breaking ABI for callers expecting classic zlib.
- nginx_dynamic_tls_records.patch — enables Cloudflare’s dynamic TLS record sizing logic so the first byte of TLS payload arrives in a single packet, cutting time-to-first-byte over the wire.
- nginx-ssl_cert_cb_yield.patch — lets Lua handlers yield (cosocket calls, sleeps, redis lookups…) from inside
ssl_certificate_by_lua*andssl_session_fetch_by_lua*callbacks; required for any non-trivial dynamic-certificate setup. - http2-ktls-lingering-close-eio.patch — silences the spurious
SSL_read() failed (EIO)alert that mainline emits when an HTTP/2 client closes a kTLS connection during lingering-close. - openssl-4-compat.patch — compatibility shims so Angie builds and links cleanly against openssl-nginx 4.x (deprecated APIs removed in OpenSSL 4).
- myguard-branding.patch — final branding sweep: replaces vendor strings and tweaks the default error pages so packaged installs identify as
angieonly, notangie (Debian)orangie (Ubuntu).
Build optimizations (2026)
- Linked against OpenSSL-NGINX — dedicated OpenSSL 3.5 built for webservers: kTLS offload, ec_nistp_64_gcc_128, RDRAND hardware entropy, no legacy ciphers or bloat
- TLS 1.3 + kTLS kernel TLS offload (
ssl_conf_command Options KTLS;) - HTTP/3 QUIC support enabled
- Compiled with -Ofast -flto=auto for maximum performance
- Linked against zlib-ng in native mode (SIMD-accelerated compression)
- jemalloc, TCP Fast Open, AIO threading support
Not included in our Angie build (and why)
Angie differs from our NGINX stack on these points:
- Certbot/ACME patches not needed — Angie includes native ACME/Let’s Encrypt support natively in the core. No external patches required. Use
acme { ... }directives directly in nginx.conf. - Fewer Debian compatibility patches — NGINX requires multiple Debian patches (pidfile race condition fixes, symbol signature patches for ABI stability). Angie has these issues fixed upstream since it’s actively maintained by the original NGINX developers.
- No proxy-connect patch needed — NGINX requires ngx_http_proxy_connect_module to support HTTP CONNECT tunneling. Angie already implements native CONNECT method support in the core, making the patch incompatible and unnecessary.
Supported distributions
- Debian Trixie (13), Bookworm (12), Bullseye (11)
- Ubuntu Resolute (26.04), Noble (24.04), Jammy (22.04)
Docker
Daily-rebuilt images on Docker Hub (eilandert). See the Docker page.
Post-Quantum Cryptography (PQC) ready
Angie from this repository is compiled against openssl-nginx 3.5, which ships ML-KEM (FIPS 203) as a stable algorithm. Add one directive to enable hybrid post-quantum key exchange for Chrome, Firefox, and Edge today:
ssl_ecdh_curve X25519MLKEM768:x25519:secp256r1:secp384r1;
Clients that support X25519MLKEM768 negotiate a hybrid X25519 + ML-KEM-768 handshake automatically. Clients that do not support it fall back to classical groups unchanged. See the Post-Quantum TLS configuration guide for the full setup, verification steps, and FAQ.
Related deep-dives
The modules and patches above are documented in detail across the rest of the site. Read these for the why and how, not just the what.
Angie itself
- Angie Web Server: The Complete Guide — Review, ACME, Migration, API and HTTP/3 — Angie vs NGINX, JSON status API, native ACME, migration steps.
- Angie 1.11.5 Released: 5 Security Fixes Explained — the security release this package tracks.
- Nginx & Angie: The Expert Guide to Maximum Performance and Security — the all-in-one tuning guide for both binaries.
TLS, HTTP/3 and OpenSSL
- openssl-nginx: The Dedicated OpenSSL Built Just for NGINX and Angie — the OpenSSL build this package links against.
- OpenSSL 4.0 for NGINX: Upgrading openssl-nginx from 3.x to 4.0 — what changes when we ship OpenSSL 4.
- TLS Configuration for NGINX and Angie: Get A+ on SSL Labs — ciphers, HSTS, OCSP, the full A+ recipe.
- How to Enable HTTP/3 on NGINX for Debian and Ubuntu (QUIC Guide 2026) — the QUIC + Alt-Svc walkthrough, applies to Angie too.
- Post-Quantum Cryptography with NGINX and Angie: ML-KEM, Hybrid TLS — turning on X25519MLKEM768 with this build.
Compression
- What Is Zstd? NGINX, Angie, History and Browser Support — what zstd is and which browsers accept it.
- Zstd vs Brotli vs zlib-ng: The NGINX Compression Deep Dive — encodings vs engines, CPU trade-offs, production configs.
- NGINX Brotli Compression: Install, Configure and Pre-Compress Static Assets — the install and tuning guide for the brotli module.
- zstd-nginx-module: What Broke, What We Fixed, and Why It Matters — the upstream bugs in the zstd module and our fork’s fixes.
Security, WAF and hardening
- How to Install ModSecurity and OWASP CRS on NGINX (Step-by-Step) — the install guide for the ModSecurity module + CRS.
- NGINX ModSecurity Setup on Debian and Ubuntu: WAF with OWASP Core Rule Set — the deeper ModSecurity tuning guide.
- WordPress Hardening Plugin for ModSecurity CRS — the WP-side companion.
- What Is the BREACH Attack? How It Works and How to Stop It — the compression side-channel and how to mitigate it.
- NGINX Rate Limiting: Protect Your Server from Bots, Scrapers and Brute Force —
limit_reqand dynamic rate limiting in practice.
Scripting (Lua and NJS)
- NGINX Lua Module: Your Web Server Just Got a Superpower — what the Lua module unlocks, with working examples.
- NGINX NJS: Write JavaScript Inside Your Web Server — NJS module in depth, plus NJS vs Lua trade-offs.
- OpenResty Lua Modules for NGINX and Angie — the bundled
lua-resty-*packages that ship alongside.
Performance, benchmarks and operations
- NGINX vs Apache Benchmark 2026: Performance, Memory and Real-World Throughput — why we run this stack instead of Apache.
- WordPress NGINX Configuration: PHP-FPM Tuning, FastCGI Cache and Redis — WordPress-focused tuning recipe, applies to Angie unchanged.
- NGINX Load Balancing: Upstream Config, Health Checks and Failover —
upstream { }patterns. - NGINX Reverse Proxy Configuration: The Complete Setup Guide — the canonical reverse-proxy walkthrough.
- NGINX and Angie on Kubernetes: Helm, Ingress, WAF, HTTP/3 and TLS — how Angie runs in a Helm/Ingress setup.
History, deprecations and releases
- nginx-core, nginx-full, nginx-light Are Gone — Here’s What to Use Instead — the migration path that produced this packaging.
- nginx-minimal: The Lean NGINX Build for WordPress, PHP, and Docker — the slim base companion package.
- NGINX on Debian 13 Trixie: Install, Modules and Modern Stack — Trixie-specific install notes.
- NGINX on Debian 13 Trixie: What Changed and How to Upgrade — the bookworm→trixie upgrade procedure.
- nginx 1.31.0 Released: Six CVEs Fixed, HTTP/2 Hardened, Buffer Overflow Worth Knowing About — the NGINX security release Angie tracks.
- Google PageSpeed for NGINX: What It Was, Why It Died, What to Use Instead — context for the PageSpeed module we still ship.
- Curl Patches Record Number of AI-Found Vulnerabilities — an ecosystem note on the security pipeline these builds depend on.
Mail, PHP and other packaged software
- Postfix + Dovecot Mail Server Setup on Debian 12 and 13 — the mail stack we package alongside.
- Rspamd Explained: How Modern Spam Filtering Actually Works — the rspamd package’s full explainer.
- PHP Snuffleupagus Tutorial — Harden PHP-FPM on Debian and Ubuntu — PHP-FPM hardening alongside this build.
- Hardening PHP with PHP-Snuffleupagus — the deeper Snuffleupagus rules guide.
- Valkey Explained: The Redis Fork That Actually Won — the Valkey package we publish.
- Database Boost: Free WordPress Database Optimization Plugin — the WP-side companion plugin.
- docker-cms: PHP 8.5 Docker Image for WordPress and CMS Hosting — container image bundling these packages.
- Docker Hardening for Self-Hosters: Rootless, Read-Only, Cap-Drop, Distroless — how we lock down the container images that ship Angie.
- Self-Hosted Vaultwarden: Docker Setup, Clients & Full Guide — another self-hosting walkthrough on this stack.
History and background
- The Enigma Machine: How Bletchley Park Cracked the Unbreakable Code — cryptography history, context for the TLS chapters above.
Report issues
Open an issue at github.com/eilandert/deb.myguard.nl.