Installation#
You can install Angie by:
Setting up our binary repo
Downloading a Docker image
Building it from source
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.18, 3.17, 3.16, 3.15 |
x86-64, arm64 |
|
10 |
x86-64, arm64 |
|
4.7 |
arm64 |
|
9, 8 |
x86-64, arm64 |
|
12, 11, 10 |
x86-64, arm64 |
|
13, 12 |
x86-64 |
|
9, 8 |
x86-64, arm64 |
|
7.3 |
x86-64, arm64 |
|
9, 8 |
x86-64, arm64 |
|
23.04, 22.04, 20.04 |
x86-64, arm64 |
AlmaLinux, CentOS, Oracle Linux, RED OS, Rocky Linux#
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/73/ 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
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
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 JWT client authentication. |
|
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. |
|
Enables echo, sleep, time, exec, and other shell-style commands in the configuration file. |
|
Enhances the capabilities of the built-in http_memcached module 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 JWT validity checks. |
|
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 Nginx Development Kit (NDK) for module development. |
|
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. |
|
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. |
To use an installed module in the configuration, load it with the load_module directive.
Docker Images#
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.3.0
docker.angie.software/angie:1.3.0-alpine
docker.angie.software/angie:1.3.0-centos
docker.angie.software/angie:1.3.0-debian
docker.angie.software/angie:1.3.0-oracle
docker.angie.software/angie:1.3.0-rocky
docker.angie.software/angie:1.3.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.3.0
Date: 19.09.2023 10:42:54 GMT
Content-Type: text/html
Content-Length: 543
Last-Modified: Fri, 28 Jul 2023 14: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 maintainer="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.18
LABEL maintainer="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 sources#
It is recommended to install Angie from packages. If, for any reason, you need an own build, archived sources are available for download:
.tar.gz from site
$ curl -O https://download.angie.software/files/angie-1.3.0.tar.gz
Sources are available on GitHub as well
Unarchive the sources:
$ tar xzf angie-1.3.0.tar.gz
Build to be run inside sources directory
$ cd angie-1.3.0
The build is configured using the configure script. It defines various aspects of the system, including the methods Angie is allowed to use for connection processing. At the end it creates a Makefile.
The configure script supports the linked parameters.
After configuration, Angie is compiled and installed using make.
$ ./configure
$ make
$ make install
configure script parameters#
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/logs/access.log |
|
prefix/client_body_temp |
|
prefix/proxy_temp |
|
prefix/fastcgi_temp |
|
prefix/uwsgi_temp |
|
prefix/scgi_temp |
Functionality and dependencies#
|
|
|
|
|
|
|
|
|
|
|
|
|
Angie modules#
http
#
Enable additional modules#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Disable standard modules#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
stream
#
Enable additional modules#
|
|
|
|
|
Disable standard modules#
|
|
|
|
|
|
|
|
|
|
|
mail
#
Enable additional modules#
|
|
Disable standard modules#
|
|
|
Compilation parameters#
|
|
|
|
|
|
|
|
|
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.2.13