About Angie#

Angie /andʒi/ is an efficient, powerful, and scalable web server that was forked from nginx:

  • Conceived by ex-devs from the original team to venture beyond the earlier vision and act as a drop-in replacement without major changes to module setup or configuration.

  • Includes most capabilities of nginx 1.31.2 and a number of new features.

We build binary packages for a range of systems and architectures, as well as Docker images. The source code is open in our public repositories under a BSD-like license.

Also, a commercial version with additional features is marketed as Angie PRO.

A choice of ready-made Angie packages, Docker images, and source code build options.

Startup and run-time control; configuration, modules, directives, and variables.

Resolving technical issues with Angie, available feedback routes.

Information for developers who want to contribute to the project.

Current Version#

Angie 1.12.1 and Angie PRO 1.12.1 were released on July 17, 2026. New versions appear quarterly; in between, we publish urgent fixes and important updates.

See also the complete version history for Angie and Angie PRO.

Angie Advantages over nginx#

Core advantages available in the free open-source version of Angie:

Observability and monitoring

  • Exposing basic information about the web server, its configuration, as well as metrics of proxied servers, client connections, shared memory zones, TLS certificates, and many other things via a RESTful API interface in JSON format.

  • Collecting arbitrary custom metrics for HTTP and stream traffic in real time with the Metric module, using configurable aggregation methods (counters, histograms, moving averages, and so on); metrics are grouped by arbitrary keys and exposed through the statistics API.

  • Exporting statistics in Prometheus format with customizable templates.

  • Enhanced error logging with the error_log directive: message filtering with the filter= parameter, JSON output with the format= parameter, and a configurable logging rate with the rate= parameter, plus custom tags via the error_log_user_tag directive.

  • Monitoring the server through the browser with the Console Light visual monitoring tool. See the online demo: https://console.angie.software/

TLS and security

  • The ACME client in Angie, enabled in our packages and images, so there is no separate module to install: automatic issuance and renewal of TLS certificates with HTTP, DNS, and TLS-ALPN domain validation. DNS validation opens the way to wildcard certificates, ACME also works in the stream module, and the acme_hook directive lets a custom handler fulfill any of these validation methods.

  • TLS 1.3 Early Data (0-RTT) support in the stream module.

  • Server- and client-side support for NTLS when using the TongSuo TLS library, enabled at build time.

Proxying and load balancing

  • Dynamic updating of upstream groups based on events and labels from Docker containers (or similar tools like Podman) without server reload.

  • Genuine response-time load balancing: requests go to the server with the lowest measured response time, tracked as an exponentially weighted moving average whose smoothing factor is configurable, from inert averaging to a quick reaction to spikes.

  • Recommissioning upstream servers after a failure smoothly using the slow_start option of the server directive in both HTTP and stream upstreams.

  • Session binding for the protocols of the stream module (TCP/UDP): all connections within one session are directed to the same proxied server.

  • Graceful decommissioning of a proxied server in the stream module with the drain option of the server directive: the server stops accepting new connections but keeps serving sessions already bound to it.

Protocols and traffic

  • Production-ready HTTP/3 support for both client and proxied server connections, with the ability to use different protocol versions (HTTP/1.x, HTTP/2, HTTP/3) independently on each side (nginx's HTTP/3 is limited to the server side and remains experimental, suffering from degradations after reloads).

  • A built-in DoH server (DNS over HTTPS, RFC 8484): it accepts DNS queries over HTTP/HTTPS and proxies them to DNS server groups over UDP or TCP.

  • Passing PROXY Protocol v2 to proxied servers in the stream module, with the ability to set arbitrary TLV values via the proxy_protocol_tlv directive.

  • Converting images between formats, including to HEIC and AVIF, with the convert parameter of the image_filter directive.

  • Extending authorization and balancing capabilities for the MQTT protocol with the mqtt_preread directive under stream.

  • Informing balancing decisions with RDP protocol's session cookies via the rdp_preread directive under stream.

  • Limiting the MP4 file transfer rate proportionally to its bitrate, thus reducing the bandwidth load.

  • Support for the XOAUTH2 and OAUTHBEARER authentication methods in the mail proxy.

Simpler configuration and operations

  • Automatic DNS resolver configuration from /etc/resolv.conf: the file is re-read on changes, eliminating the need to specify DNS server addresses manually.

  • Several matching expressions at once in a single location directive: blocks with shared settings can be combined.

  • The goto directive in the rewrite module, performing an internal redirect to a named location without modifying the URI, in place of workarounds based on try_files or error_page.

  • Flushing the shared memory zone in proxy_cache_path to disk: the cache index contents are preserved between restarts and updates, which eliminates the cache load delay and brings the server online even faster.

  • The time_format directive, defining a variable with a custom time format, supporting strftime()-like specifiers and %L for milliseconds.

  • Pre-built binary packages for many popular third-party modules.

Additional Angie PRO Features#

Commercial Angie PRO adds the following to the open-source version:

Dynamic configuration and management

  • Managing proxied servers through a RESTful dynamic configuration API: servers can be put into and taken out of balancing, and their weights and other parameters changed on the fly, without reloading worker processes. The visual monitoring console Console Light can also be used to manage the server in your browser.

  • Overriding the server signature on error pages and in the Server header field with an arbitrary value using the server_tokens directive.

Advanced balancing and fault tolerance

  • Balancing by feedback: peers are selected by a variable value; it is assumed to come from the peers themselves, reporting CPU load or other metrics.

  • Waiting queue for requests, configured using the queue directive in the upstream block: if no server can be picked for a request on the first attempt, for example during a load spike, it joins the queue instead of being rejected outright.

  • Proactively checking the state of proxied servers by sending periodic probing requests: a failing server leaves balancing before a client request reaches it, not after.

  • The no_port directive in an upstream block of the stream module, unbinding the port from the group's servers: the port is given in the proxy_pass directive, so a single group can serve proxying to different ports without duplicating the server list.

  • The backup_switch directive in the upstream block: backup servers can continue serving requests when the primary servers become accessible again.

Sessions, connections, and caching

  • The sticky learn mode with session storage in an external store, which allows joining multiple balancers in a cluster.

  • Conditional binding of client connections to the proxied server connection, which also enables proxying NTLM.

  • The proxy_bind directive, evaluating variables after each proxied server selection: the outgoing address can depend on the selected server; for example, through the $upstream_current_addr variable.

  • Cache sharding in the proxy module, which enables distributing it across different disks depending on the properties of the response.