Installation#
You can install Angie by:
Setting up our binary repo
Downloading a Docker image (OSS only)
Building it from source (OSS only)
Binary Packages#
To install and update Angie using your distro’s package manager, add and set up the Angie package repository.
Supported Distributions#
Distro |
Versions |
Architectures |
---|---|---|
9, 8 |
x86-64, arm64 |
|
3.19, 3.18, 3.17, 3.16 |
x86-64, arm64 |
|
10 |
x86-64, arm64 |
|
4.7 |
arm64 |
|
9, 8, 7 |
x86-64, arm64 |
|
12, 11, 10 |
x86-64, arm64 |
|
14, 13 |
x86-64, arm64 |
|
15 |
x86-64, arm64 |
|
9, 8 |
x86-64, arm64 |
|
8 |
x86-64 |
|
9, 8 |
x86-64, arm64 |
|
Chrome 12 |
x86-64, arm64 |
|
22.04, 20.04 |
x86-64, arm64 |
Alma, CentOS, Oracle, RED OS, Rocky, ROSA#
To add the repo, create a file named /etc/yum.repos.d/nginx.repo with the following contents:
[angie] name=Angie repo baseurl=https://download.angie.software/angie/almalinux/$releasever/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc
[angie] name=Angie repo baseurl=https://download.angie.software/angie/centos/$releasever/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc
[angie] name=Angie repo baseurl=https://download.angie.software/angie/oracle/$releasever/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc
[angie] name=Angie repo baseurl=https://download.angie.software/angie/redos/$releasever/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc
[angie] name=Angie repo baseurl=https://download.angie.software/angie/rocky/$releasever/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc
[angie] name=Angie repo baseurl=https://download.angie.software/angie/rosa-chrome/$releasever/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc priority=9
[angie] name=Angie repo baseurl=https://download.angie.software/angie/rosa/$releasever/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc priority=9
Install the Angie package:
$ sudo yum install -y angie
(Optional) Install the dynamic module packages you need:
$ sudo yum install -y <PACKAGE NAME>
Start the service:
$ sudo systemctl start angie
To autostart Angie after server reboot:
$ sudo systemctl enable angie
Alpine#
Install the prerequisites for adding the Angie repo:
$ sudo apk update $ sudo apk add curl ca-certificates
Download the public key of the Angie repo for package verification:
$ sudo curl -o /etc/apk/keys/angie-signing.rsa \ https://angie.software/keys/angie-signing.rsa
Add the Angie repo:
$ echo "https://download.angie.software/angie/alpine/v$(egrep -o \ '[0-9]+\.[0-9]+' /etc/alpine-release)/main" \ | sudo tee -a /etc/apk/repositories > /dev/null
Update the repo indexes:
$ sudo apk update
Install the Angie package:
$ sudo apk add angie
(Optional) Install the dynamic module packages you need:
$ sudo apk add <PACKAGE NAME>
Start the service:
$ sudo service angie start
To autostart Angie on server reboot:
$ sudo rc-update add angie
ALT Linux#
Create the
/etc/ssl/angie
directory:$ sudo mkdir -p /etc/ssl/angie/
Install the prerequisites for adding the Angie repo:
$ sudo apt-get update $ sudo apt-get install -y curl apt-https
Download the public key of the Angie repo for package verification:
$ sudo curl -o /etc/ssl/angie/angie-signing.gpg \ https://angie.software/keys/angie-signing.gpg
Import the downloaded key into the trusted key ring:
$ sudo gpg --no-default-keyring \ --keyring /usr/lib/alt-gpgkeys/pubring.gpg --import /etc/ssl/angie/angie-signing.gpg
Save the key’s signature:
$ echo 'simple-key "angie" { Fingerprint "EB8EAF3D4EF1B1ECF34865A2617AB978CB849A76"; Name "Angie (Signing Key) <devops@tech.wbsrv.ru>"; }' | sudo tee /etc/apt/vendors.list.d/angie.list > /dev/null
Add the Angie repo:
$ echo "rpm [angie] https://download.angie.software/angie/altlinux/10/ $(uname -m) main" \ | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
$ echo "rpm [angie] https://download.angie.software/angie/altlinux-sp/10/ $(uname -m) main" \ | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
$ echo "rpm [angie] https://download.angie.software/angie/altlinux-sp/8/ $(uname -m) main" \ | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
Update the repo indexes:
$ sudo apt-get update
Install the Angie package:
$ sudo apt-get install -y angie
(Optional) Install the dynamic module packages you need:
$ sudo apt-get install -y <PACKAGE NAME>
Start the service:
$ sudo systemctl start angie
To autostart Angie on server reboot:
$ sudo systemctl enable angie
Astra SE#
Install the prerequisites for adding the Angie repo:
$ sudo apt-get update $ sudo apt-get install -y ca-certificates curl lsb-release
Download the public key of the Angie repo for package verification:
$ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \ https://angie.software/keys/angie-signing.gpg
Add the Angie repo:
$ echo "deb https://download.angie.software/angie/astra-se/$(egrep -o \ '[0-9]+.[0-9]+' /etc/astra_version) unstable main" \ | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
Update the repo indexes:
$ sudo apt-get update
(Optional) When running a Closed Software Environment (CSE), install the key package for Angie binary verification:
$ sudo apt-get install -y angie-digsig-key
Update the CSE:
$ sudo update-initramfs -uk all
Then restart the server:
$ sudo shutdown -r now
Install the Angie package:
$ sudo apt-get install -y angie
(Optional) Install the dynamic module packages you need:
$ sudo apt-get install -y <PACKAGE NAME>
Debian, Ubuntu#
Install the prerequisites for adding the Angie repo:
$ sudo apt-get update $ sudo apt-get install -y ca-certificates curl lsb-release
Download the public key of the Angie repo for package verification:
$ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \ https://angie.software/keys/angie-signing.gpg
Add the Angie repo:
$ echo "deb https://download.angie.software/angie/debian/ `lsb_release -cs` main" \ | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
$ echo "deb https://download.angie.software/angie/ubuntu/ `lsb_release -cs` main" \ | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
Update the repo indexes:
$ sudo apt-get update
Install the Angie package:
$ sudo apt-get install -y angie
(Optional) Install the dynamic module packages you need:
$ sudo apt-get install -y <PACKAGE NAME>
FreeBSD#
To add the Angie repo, create these directories:
$ sudo mkdir -p /usr/local/etc/pkg/angie/ /usr/local/etc/pkg/repos/
To configure the repo, create a file named /usr/local/etc/pkg/repos/angie.conf with the following contents:
angie: { url: "https://download.angie.software/angie/freebsd/${VERSION_MAJOR}/${ARCH}", signature_type: "pubkey", pubkey: "/usr/local/etc/pkg/angie/angie-signing.rsa", enabled: yes }
Download the public key of the Angie repo for package verification:
$ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \ https://angie.software/keys/angie-signing.gpg
Update the repo indexes:
$ sudo pkg update
Install the Angie package:
$ sudo pkg install -y angie
(Optional) Install the dynamic module packages you need:
$ sudo pkg install -y <PACKAGE NAME>
Start the service:
$ sudo service angie start
To autostart Angie on server reboot:
$ sudo sysrc angie_enable=YES
openSUSE#
To add the repo, create a file named /etc/zypp/repos.d/angie.repo with the following contents:
[angie] name=Angie repo baseurl=https://download.angie.software/angie/opensuse/$releasever_major/ gpgcheck=1 enabled=1 gpgkey=https://angie.software/keys/angie-signing.gpg.asc
Update the repo indexes:
$ sudo zypper refresh
Install the Angie package:
$ sudo zypper install -y angie
(Optional) Install the dynamic module packages you need:
$ sudo zypper install -y <PACKAGE NAME>
Start the service:
$ sudo systemctl start angie
To autostart Angie after server reboot:
$ sudo systemctl enable angie
Dynamic Modules#
To extend Angie’s basic functionality, you can add a variety of dynamic modules, available as ready-made packages from our repository.
Modules can also be built from source code; compile them against the corresponding Angie version.
Dynamic module packages distributed as part of Angie:
Adds a filter to transform .jpeg, .gif, .png, and .webp images. |
|
angie-module-njs: http_js_module, stream_js_module |
Enable using njs (a JavaScript subset) in Angie configuration in the http and stream contexts, respectively. |
Enables writing location and variable handlers in Perl, and also invoking Perl from SSI. |
|
Adds a filter to transform XML responses with XSLT stylesheets. |
We also build and publish in our repository the following third-party module packages:
Adds client JWT authentication. |
|
Adds support for authentication against multiple LDAP servers. |
|
Adds SPNEGO, GSSAPI support. |
|
Enables Brotli for dynamic and static response compression. |
|
Enables purging FastCGI, proxy, SCGI, and uWSGI cache contents. |
|
Extends WebDAV method support, adding PROPFIND and OPTIONS. |
|
Used to dynamically lock IPs and release them periodically. |
|
Enables echo, sleep, time, exec, and other shell-style commands in the configuration file. |
|
Enhances the capabilities of the built-in http_memcached module. |
|
Enables capturing subrequest response bodies in variables. |
|
angie-module-geoip2: http_geoip2, stream_geoip2 |
Enables geodata lookup in the MaxMind GeoIP2 database. |
Enables setting and clearing input and output headers. |
|
Enables variables created from key-value pairs. |
|
angie-module-lua: http_lua_module, stream_lua_module |
Enable using Lua in Angie configuration in the http and stream contexts, respectively. |
Adds a connector that enables ModSecurity rules. Note The package needs extra setup. |
|
Adds Nginx Development Kit (NDK) for module development. |
|
Enables sending telemetry data to an OpenTelemetry collector. |
|
Adds distributed tracing of Angie requests via OpenTracing; includes data export plugins for Zipkin and DataDog. |
|
Enables direct communication with PostgreSQL databases. |
|
Enables Redis 2.0 for HTTP upstreams. |
|
Enables RTMP for live streaming and video on demand. |
|
Adds various set_xxx directives to the rewrite module. |
|
Enables regex string substitutions in the HTTP response body. |
|
Enables robot mitigation using a cookie-based challenge-response mechanism. |
|
Adds the multipart/form-data encoding (RFC 1867) for file upload, enabling resumable uploads. |
|
Enables repackaging .mp4 files for HLS, HDS, MSS, and DASH streaming. |
|
Enables assembling ZIP archives dynamically. |
|
Enables Zstandard compression. |
To use an installed module in the configuration, load it with the load_module directive.
Docker Images (OSS)#
To run Angie in a Docker container, use an image from our registry:
docker.angie.software/angie
docker.angie.software/angie:latest
docker.angie.software/angie:1.5.0
docker.angie.software/angie:1.5.0-minimal
docker.angie.software/angie:1.5.0-alpine
docker.angie.software/angie:1.5.0-centos
docker.angie.software/angie:1.5.0-debian
docker.angie.software/angie:1.5.0-oracle
docker.angie.software/angie:1.5.0-rocky
docker.angie.software/angie:1.5.0-ubuntu
To start a container with Angie at port 8080,
enabling read-only access to the /var/www/
static file directory
and the angie.conf
file in the current working directory:
$ docker run --rm --name angie -v /var/www:/usr/share/angie/html:ro \
-v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d docker.angie.software/angie:latest
$ curl -I localhost:8080
HTTP/1.1 200 OK
Server: Angie/1.5.0
Date: Wed, 27 Mar 2024 10:42:54 GMT
Content-Type: text/html
Content-Length: 543
Last-Modified: Wed, 27 Mar 2024 09:12:23 GMT
Connection: keep-alive
ETag: "64c3ccc7-21f"
Accept-Ranges: bytes
Setups like this can be used for local development and configuration.
Also, you can build your own image
based on a supported distro,
adding the Angie layer with packages
or source code.
A couple of such Dockerfile
examples:
FROM debian:12
LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"
ARG DEBIAN_FRONTEND=noninteractive
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
ca-certificates lsb-release curl \
&& curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
https://angie.software/keys/angie-signing.gpg \
&& echo "deb https://download.angie.software/angie/debian/ `lsb_release \
-cs` main" > /etc/apt/sources.list.d/angie.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
angie angie-module-geoip2 angie-module-njs \
&& apt-get remove --auto-remove --purge -y lsb-release \
&& rm -Rf /var/lib/apt/lists \
/etc/apt/sources.list.d/angie.list \
/etc/apt/trusted.gpg.d/angie-signing.gpg \
&& ln -sf /dev/stdout /var/log/angie/access.log \
&& ln -sf /dev/stderr /var/log/angie/error.log
EXPOSE 80
CMD ["angie", "-g", "daemon off;"]
FROM alpine:3.19
LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"
RUN set -x \
&& apk add --no-cache ca-certificates curl \
&& curl -o /etc/apk/keys/angie-signing.rsa https://angie.software/keys/angie-signing.rsa \
&& echo "https://download.angie.software/angie/alpine/v$(egrep -o \
'[0-9]+\.[0-9]+' /etc/alpine-release)/main" >> /etc/apk/repositories \
&& apk add --no-cache angie angie-module-geoip2 angie-module-njs \
&& rm /etc/apk/keys/angie-signing.rsa \
&& ln -sf /dev/stdout /var/log/angie/access.log \
&& ln -sf /dev/stderr /var/log/angie/error.log
EXPOSE 80
CMD ["angie", "-g", "daemon off;"]
To build a myangie
image in the Dockerfile
’s directory
and start a container in the same way as described above:
$ docker build -t myangie .
$ docker run --rm --name myangie -v /var/www:/usr/share/angie/html:ro \
-v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d myangie
Building From Source (OSS)#
We recommend installing Angie from packages. If you still need your own build:
Download the
.tar.gz
archive from our website:$ curl -O https://download.angie.software/files/angie-1.5.0.tar.gz
Unpack the sources and enter the code directory:
$ tar -xpf angie-1.5.0.tar.gz $ cd angie-1.5.0
To prepare the build, use the
configure
script to determine the specific traits of the OS where the build occurs, in particular, the methods that Angie can use to handle connections. After a successful run, the script creates aMakefile
.Before running
configure
, browse the options to choose the optimal layout:$ ./configure <OPTIONS>
When
Makefile
is ready, build and install Angie:$ make $ make install
configure
Options#
General#
Parameter |
Default |
---|---|
|
|
|
nobody |
|
is set to the name of an unprivileged user |
|
|
|
objs |
Paths#
Parameter |
Default |
---|---|
|
/usr/local/angie |
|
<prefix>/sbin/angie |
|
<prefix>/modules |
|
<prefix>/conf/angie.conf |
|
<prefix>/logs/error.log |
|
<prefix>/logs/angie.pid |
|
<prefix>/logs/angie.lock |
|
<prefix>/acme_client |
|
<prefix>/logs/access.log |
|
<prefix>/client_body_temp |
|
<prefix>/proxy_temp |
|
<prefix>/fastcgi_temp |
|
<prefix>/uwsgi_temp |
|
<prefix>/scgi_temp |
Features and dependencies#
|
|
|
|
|
|
|
|
|
|
|
|
|
Angie Modules#
http
#
Enabling additional modules#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Disable standard modules#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
stream
#
Enable additional modules#
|
|
|
|
|
|
Disable standard modules#
|
|
|
|
|
|
|
|
|
|
|
mail
#
Enable additional modules#
|
|
Disable standard modules#
|
|
|
Build options#
|
|
|
|
|
|
|
|
|
Example of parameters usage#
./configure \
--sbin-path=/usr/sbin/angie/ \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-http_ssl_module \
--with-pcre=../pcre2-10.40 \
--with-zlib=../zlib-1.3