<a id="about"></a>

# About Angie

Angie
/[andʒi](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet)/
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](https://en.angie.software//angie/docs/configuration/migration.md#migration)
  without major changes to module setup or configuration.
* Includes most capabilities of
  [nginx |nginxversion|](https://nginx.org/en/CHANGES)
  and a number of [new features](#index-features-oss).

We build binary packages for a range of
[systems and architectures](https://en.angie.software//angie/docs/installation/index.md#install-packages),
as well as
[Docker images](https://en.angie.software//angie/docs/installation/docker.md#docker-images).
The source code is open in our
[public repositories](https://en.angie.software//angie/docs/development.md#development)
under a
[BSD-like license](https://en.angie.software//angie/license-angie.md#license-angie).

Also, a commercial version with [additional features](#index-features-pro)
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.

<a id="current-version"></a>

## Current Version

**Angie |angie_version|** and **Angie PRO |angie_pro_version|** were released on **|angie_release_date|**.
New versions appear quarterly;
in between, we publish urgent fixes and important updates.

See also the complete version history for
[Angie](https://en.angie.software//angie/docs/oss_changes.md#oss-changes)
and
[Angie PRO](https://en.angie.software//angie/docs/pro_changes.md#pro-changes).

<a id="index-features-oss"></a>

## Features

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

- Supporting [HTTP/3](https://en.angie.software//angie/docs/configuration/modules/http/http_v3.md#http-v3) for client connections,
  as well as for [proxied server](https://en.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-http-version) connections,
  with the ability to independently use different protocol versions
  (HTTP/1.x, HTTP/2, HTTP/3)
  on opposite sides.
- Automatic HTTPS provisions TLS certificates using built-in [ACME](https://en.angie.software//angie/docs/configuration/modules/http/http_acme.md#id1) protocol support.
- Simplifying configuration: the `location` directive
  can define several matching expressions at once, which enables
  [combining](https://en.angie.software//angie/docs/configuration/modules/http/index.md#combined-locations) blocks with shared settings.
- Exposing basic information about the web server,
  its [configuration](https://en.angie.software//angie/docs/configuration/modules/http/http_api.md#a-api-config-files),
  as well as [metrics](https://en.angie.software//angie/docs/configuration/modules/http/http_api.md#metrics) of proxied servers, client connections,
  shared memory zones, and many other things
  via a RESTful [API](https://en.angie.software//angie/docs/configuration/modules/http/http_api.md#a-api) interface in JSON format.
- Exporting statistics in [Prometheus](https://en.angie.software//angie/docs/configuration/modules/http/http_prometheus.md#id1) format
  with [customizable templates](https://en.angie.software//angie/docs/configuration/modules/http/http_prometheus.md#prometheus-template).
- Monitoring the server through the browser with the
  [Console Light](https://en.angie.software//angie/docs/configuration/monitoring.md#monitoring) visual monitoring tool.
  See the online demo: [https://console.angie.software/](https://console.angie.software/)
- Dynamic updating of upstream groups based on events and labels from
  [Docker containers](https://en.angie.software//angie/docs/configuration/modules/http/http_docker.md#http-docker) (or similar tools like Podman) without
  server reload.
- Flushing the shared memory zone in [proxy_cache_path](https://en.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-path) to disk
  preserves the cache index contents between restarts and updates,
  which eliminates the cache load delay and brings the server online even faster.
- [Session binding](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-sticky) mode, which directs all requests
  within one session to the same proxied server.
- Recommissioning upstream servers after a failure smoothly
  using the `slow_start` option of the [server](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-server) directive.
- Limiting the [MP4 file transfer rate](https://en.angie.software//angie/docs/configuration/modules/http/http_mp4.md#mp4-limit-rate)
  proportionally to its bitrate,
  thus reducing the bandwidth load.
- Extending authorization and balancing capabilities for the MQTT protocol
  with the [mqtt_preread](https://en.angie.software//angie/docs/configuration/modules/stream/stream_mqtt_preread.md#s-mqtt-preread) directive under `stream`.
- Informing balancing decisions with RDP protocol's session cookies
  via the [rdp_preread](https://en.angie.software//angie/docs/configuration/modules/stream/stream_rdp_preread.md#s-rdp-preread) directive under `stream`.
- [Server](https://en.angie.software//angie/docs/configuration/modules/http/http_ssl.md#ssl-ntls)- and [client-side](https://en.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-ssl-ntls)
  support for NTLS when using the
  [TongSuo](https://github.com/Tongsuo-Project/Tongsuo)
  TLS library, enabled [at build time](https://en.angie.software//angie/docs/installation/sourcebuild.md#install-source-features).
- Pre-built [binary packages](https://en.angie.software//angie/docs/installation/external-modules/index.md#install-thirdpartymodules)
  for many popular third-party modules.

---

<a id="index-features-pro"></a>

Commercial Angie PRO adds the following
to the [publicly available features](#index-features-oss):

- Managing of proxied servers
  through a RESTful dynamic configuration
  [API](https://en.angie.software//angie/docs/configuration/modules/http/http_api.md#api-config);
  the visual monitoring console [Console Light](https://en.angie.software//angie/docs/configuration/monitoring.md#monitoring)
  can also be used to manage the server in your browser.
- Proactively checking the state of proxied servers by
  sending periodic [probing requests](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream_probe.md#u-upstream-probe).
- Load balancing based on [average response time](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-least-time)
  from proxied servers with [customizable smoothing factor](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-response-time-factor).
- [Feedback-based](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-feedback) load balancing
  that selects peers based on a variable value;
  supposedly, it comes from the peers themselves,
  reporting their CPU load or other metrics.
- Waiting queue for requests,
  configured using the [queue](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-queue) directive
  in the `upstream` block.
- Additional binding mode [sticky learn](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-sticky),
  enabling detection and storage of client sessions in shared memory
  or external storage, which allows joining multiple balancers in a cluster.
- Using the [backup_switch](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-backup-switch) directive
  in the `upstream` block of the HTTP module allows backup servers
  to continue serving requests when the primary servers become accessible again.
- Conditional [binding of client connections](https://en.angie.software//angie/docs/configuration/modules/http/http_upstream.md#u-bind-conn)
  to the proxied server connection, which also enables proxying NTLM.
- Cache sharding in the proxy module, which enables distributing it between
  [locations](https://en.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache) depending on the properties of the response.
- Server signature on error pages and in the `Server` header field
  can be hidden or overridden with the [server_tokens](https://en.angie.software//angie/docs/configuration/modules/http/index.md#server-tokens) directive.
