Overview of Angie features
masterAngie builds upon the capabilities of nginx 1.31.2 and introduces several advanced features across multiple categories:
Protocols & Connectivity
- Production-ready HTTP/3: Supports both client and proxied server connections, allowing independent protocol versions (HTTP/1.x, HTTP/2, HTTP/3) on opposite sides.
- DNS over HTTPS (DoH): Built-in RFC 8484 server module for proxying DNS queries via HTTP/HTTPS to UDP/TCP server groups.
- PROXY Protocol V2: Supports passing arbitrary TLV values.
- MQTT & RDP Support: Enhanced authorization/balancing for MQTT and session cookie-based balancing for RDP.
- Mail Proxy: Supports XOAUTH2 and OAUTHBEARER authentication.
TLS & Certificate Management
- Automatic HTTPS: Built-in ACME support (HTTP, DNS, and ALPN challenges) for multi-domain, wildcard, and IP certificates, including ACME profiles and EAB.
- TLS 1.3 Early Data (0-RTT): Supported in both HTTP and stream modules.
- NTLS Support: Enabled via the
TongsuoTLS library at build time.
Load Balancing & Upstream
- Dynamic Docker Upstreams: Update upstream groups based on Docker/Podman container events without server reloads.
- Response-Time-Aware Load Balancing: Uses a probability-based algorithm to distribute traffic based on measured average response times.
- Enhanced Session Binding: Supports session binding for both HTTP and stream upstreams, including
learnanddrainmodes. - Slow Start: Recommissions upstream servers smoothly after failure in both HTTP and stream upstreams.
Observability & Monitoring
- RESTful API: Exposes configuration and metrics (connections, shared memory, TLS, etc.) in JSON format.
- Prometheus Integration: Exports statistics in Prometheus format with customizable templates.
- Console Light: A visual monitoring tool accessible via the browser.
- Metric Module: Real-time statistics collection for HTTP and stream traffic (counters, histograms, moving averages).
- Enhanced Logging: Supports message filtering (
filter=), user tags (error_log_user_tag), JSON output (format=), and rate limiting (rate=).
Configuration & Operations
- Combined Locations: Use multiple matching expressions in a single
locationdirective. - Rewrite
goto: Performs an internal redirect to a named location without modifying the URI. - Automatic DNS Resolver: Automatically configures the resolver from
/etc/resolv.confand re-reads it on changes. - Custom Time Format: The
time_formatdirective allows customstrftime()-like specifiers including%Lfor milliseconds.