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 theformat=parameter, and a configurable logging rate with therate=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
streammodule.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_startoption of the server directive in both HTTP and stream upstreams.Session binding for the protocols of the
streammodule (TCP/UDP): all connections within one session are directed to the same proxied server.Graceful decommissioning of a proxied server in the
streammodule with thedrainoption 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
streammodule, 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
convertparameter 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
locationdirective: 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_filesorerror_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%Lfor 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
Serverheader 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
upstreamblock: 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
upstreamblock of thestreammodule, 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
upstreamblock: 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.