Angie web server for Debian & Ubuntu
The maintained NGINX fork by its original core devs, packaged for apt — native ACME/Let’s Encrypt, a JSON status API, HTTP/3 (QUIC), and the same hardening + 101 dynamic modules as our NGINX stack. Your /etc/nginx/ config works unchanged.
Want a maintained NGINX fork you can apt install on Debian or Ubuntu and point at your existing config? That is what these Angie packages are. After F5 acquired NGINX, mainline development slowed and several long-requested features never landed; Angie is the answer from the people who wrote NGINX in the first place — same engine, same config language, actively shipped.
Because Angie is a true drop-in, migrating is one command, not a rewrite: install angie, keep /etc/nginx/, restart. You get the features NGINX never shipped (automatic ACME certificates, a live JSON status API) on top of the identical hardened build, OpenSSL-NGINX, HTTP/3 and dynamic-module set documented below. New to Angie? Start with the Angie vs NGINX complete guide.
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.myguard-branding.patch– final branding sweep: replaces vendor strings and tweaks the default error pages so packaged installs identify asnginxonly, notnginx (Debian)ornginx (Ubuntu).ssl-fingerprint.patch– Captures the raw ClientHello in nginx core and exposes thefp_*fields onngx_ssl_connection_sthat thelibnginx-mod-ssl-fingerprintmodule reads to compute JA3/JA4. Inert unless that module is built. Directive reference →
Standalone libraries provided
Upstream libraries built and shipped alongside the modules. Not loadable as nginx/angie modules themselves; listed for transparency.
- libmodsecurity3 – v3 library component used by the nginx connector.
- libcoraza – C/Go WAF engine linked by angie-module-http-coraza; runs SecLang/OWASP CRS rules as a ModSecurity v3 replacement.
- modsecurity-crs – OWASP ModSecurity Core Rule Set.
- libjemalloc2 – jemalloc allocator, built specifically for NGINX (use the one from this repo).
- libz-ng2 – next-generation zlib data-compression library (native mode).
- lua-resty – bundle of the most-used Lua modules for libnginx-mod-http-lua.
- lua-resty-core – FFI-based Lua API for ngx_http_lua_module / ngx_stream_lua_module (OpenResty).
- lua-resty-lrucache – Lua-land LRU cache based on the LuaJIT FFI (OpenResty).
- openssl-nginx – dedicated OpenSSL build tuned for nginx (kTLS, QUIC, leaner crypto defaults).
- PSOL – Page Speed Optimisation Library, per-distro builds for ngx_pagespeed.
- libinjection – SQL injection and XSS detection library, linked into the http-waf module’s pattern-matching engine.
- quickjs-ng – maintained fork of the QuickJS JavaScript engine, staged at build time so the njs module links against it 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-coraza – Coraza WAF for nginx — a Go-powered, drop-in replacement for
http-modsecuritythat speaks the same SecLang rules and OWASP CRS, embedded as a dynamic module vialibcoraza. Write-up → - 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-error-abuse – temporarily blocks clients that generate too many HTTP errors (fail2ban-style
429for403/404/5xxstorms), enforced in-process with an exact sliding window, shared-memory counters, optional disk persistence and optional Redis/Valkey cluster-wide bans. - 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-turbo – Built-in full-page micro-cache for nginx — Varnish-style page caching without Varnish, served from shared memory. Must be the last dynamic module loaded. Write-up →
- 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
TLS & fingerprinting modules
- angie-module-ssl-fingerprint – A high performance nginx module for ja4, ja3, and http2 fingerprint. Write-up →
Other modules
- angie-module-http-autocert – Automatic TLS certificates for NGINX — built into the server.
- 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. - angie-module-http-otel – OpenTelemetry (OTel) is an observability framework for monitoring, tracing, troubleshooting, and optimizing applications.
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.
Frequently asked questions
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.
- How to defend your webserver against vibe-coded AI exploit scanners and bots — 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.