Angie and Angie PRO updated to version 1.12.0#

13.07.2026

Angie and Angie PRO 1.12.0 have been released — a large feature update. Open-source Angie gains response-time load balancing, sticky "learn" mode and server draining (ported from Angie PRO), a stream Metrics module, a DNS-over-HTTPS server, a certificates API, expanded ACME, and error-log filtering and JSON output; the release is based on the latest nginx with CONNECT tunneling.

Angie and its commercial version, Angie PRO — 1.12.0 — are now available, with a large set of new capabilities in each edition. If the 1.11.0 release felt major, this one goes even further: the list of changes in each edition surpassed 30 items.

Six Angie PRO features are now available in the open-source edition:

  • Load balancing by the average response time, using the least_time directive for proxied http and stream servers: for http it accounts for the time to receive the header or the full response, and for stream the time to establish the connection and receive bytes. The smoothing factor is configurable via the response_time_factor directive.

  • The learn mode of the sticky directive — binding clients to servers by dynamically generated keys. Sessions are kept in shared memory, and how they are created and looked up is flexibly configured through variables, for example by a cookie from the proxied server's response.

  • The drain mode — graceful removal of a server from rotation: new requests are no longer sent to it while already-bound clients are served to completion, and the server moves into a new draining state. Zero-downtime deployment as it should be.

  • Average response time in the statistics API: the /status/http/upstreams/ and /status/stream/upstreams/ sections now report several metrics per server — for http the time to receive the header and the full response, and for stream the time to establish the connection and to receive the first and last byte. The smoothing factor is set via response_time_factor, with Prometheus support.

Among the other new features in both editions:

  • A built-in DNS-over-HTTPS server: the new DoH module (RFC 8484) accepts DNS queries over HTTP/HTTPS and proxies them to DNS servers over UDP or TCP. Standing up your own DoH server takes just a few lines of configuration.

  • Expanded ACME: certificates for IP addresses (via Let's Encrypt, with profile support), External Account Binding (EAB) for commercial certificate authorities (DigiCert, SSL.com, and others) through HMAC authentication, improved compatibility with SSL.com and similar servers, and the acme_dns_ttl directive for providers that filter DNS responses with a low TTL.

  • Zero-configuration DNS: the resolver configuration is now enabled by default — Angie reads /etc/resolv.conf itself and watches it for changes, so DNS server addresses no longer need to be specified by hand; turn it off with resolver off.

  • Error logging taken to a new level: message filtering via filter= and error_log_user_tag tags for routing events to handlers, JSON output for the error log, a rate limit via rate= (1000 messages per second by default), and the time_format directive with strftime() and %L for milliseconds. In addition, SSL session keys can be logged via ssl_keylog_file and proxy_ssl_keylog_file.

  • Cleaner configuration: the goto directive in the rewrite module performs an internal redirect to a named location without changing the URI and works inside an if block, doing away with workarounds built on try_files and error_page. The built-in error pages and AutoIndex listings gained a dark color scheme.

  • Statistics and observability: the Metrics module is now available for the stream module as well — counters, histograms, and moving averages via the /status/stream/metric_zones/ API section, with Prometheus support; the new /certificates/ API section gathers all certificates from the configuration and those obtained by ACME clients in one place, simplifying expiry monitoring; and the $upstream_transport variable shows the transport (TCP or UDP) chosen for each connection attempt to a server in the group.

  • Sync with nginx 1.31.2: all of its functionality is included, notably the new Tunnel module for CONNECT tunneling (Angie as an HTTP proxy for arbitrary TCP traffic), proxying to servers over HTTP/2, and the new $ssl_sigalgs variable with the list of signature algorithms the client supports.

In Angie PRO, additionally:

  • proxy_pass with a port for stream groups: the port can be specified directly in proxy_pass for a server group where it is not set. A single group can then be used to proxy to different ports — each server's status is tracked uniformly, and a server being unavailable is accounted for across all ports at once. The no_port directive explicitly marks a group as not using ports.

  • proxy_bind now evaluates variables after the server is selected, so an outgoing connection can be bound to an address that depends on the specific chosen server.

  • The $upstream_current_addr variable holds the address of the current upstream server and is available as early as the moment it is selected — handy together with proxy_bind. Unlike $upstream_addr, it always contains exactly one address.

  • Atomic switching of a server between the primary and backup groups — with a single request to the backup field in the /config API.

  • The feedback field in the statistics API: when the balancing method of the same name is used, it shows each server's current accumulated dynamic weight.

More details about the changes:

P.S. By the way, in a week — on 21 July — Angie turns four, so this release is also a small gift for the occasion. Thanks to everyone who is with us!

Have a great day!