How to install nginx-mod (aarch64)
High-performance web server
Install
sudo dnf -y install https://extras.getpagespeed.com/release-latest.rpm sudo dnf -y install dnf-plugins-core sudo dnf config-manager --enable getpagespeed-extras-nginx-mod sudo dnf -y install nginx-mod
Description
nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server. This version adds some patches to improve performance: * HPACK by Cloudflare * Dynamic TLS records Built with QuicTLS to support HTTP/3, ensuring you're at the forefront of web technology. Be careful using this in production. This package merely addresses all the crazy folks who want you to compile NGINX to get the above features. The compiled NGINX is evil for many reasons. For more info, see: https://www.getpagespeed.com/server-setup/where-compilation-went-wrong The lesser, as well as faster evil is here. Packaged install is easier to use in production and is also easier to roll back to stable NGINX version in case there's an issue with those patches.
Architecture
Optimized for aarch64 (ARM64) architecture. It can be used on AWS Graviton instances, as well as Raspberry Pi 4 and newer.
RPMs
| Package | Size | Changelog |
|---|---|---|
| nginx-mod-1.30.3-53.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-06-16) - gps_license: bump to 1.4.0. New identity probe endpoint: send · Accept: application/vnd.getpagespeed.nginx-probe+json on any URL to · receive a 200 + JSON identifying the install (module version, nginx · version, package_source, current status/enforcement, distro, arch). · Doubles as a fleet-inventory + compliance-audit handle. Probe path is · not access-logged, emits no error_log lines, and is invisible on · non-probe requests. Runs at PREACCESS so it answers regardless of · enforcement state. |
| nginx-mod-1.30.2-53.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-06-16) - gps_license: bump to 1.4.0. New identity probe endpoint: send · Accept: application/vnd.getpagespeed.nginx-probe+json on any URL to · receive a 200 + JSON identifying the install (module version, nginx · version, package_source, current status/enforcement, distro, arch). · Doubles as a fleet-inventory + compliance-audit handle. Probe path is · not access-logged, emits no error_log lines, and is invisible on · non-probe requests. Runs at PREACCESS so it answers regardless of · enforcement state. |
| nginx-mod-1.30.2-52.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-06-11) - gps_license: bump to 1.3.0. New FOOTER enforcement tier: when the · backend pushes enforcement=footer (or it is set locally), unlicensed · text/html responses get a small fixed-position GetPageSpeed notice · appended; the site stays fully up and the notice disappears once a · valid license token is installed. Default enforcement remains soft; · hard/503 stays reserved for revoked tokens. Filter registers in the · AUX slot so it runs before gzip. |
| nginx-mod-1.30.2-51.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-31) - gps_license: bump to 1.2.0. Operator-facing 503s now point at · /nginx-license-token/ |
| nginx-mod-1.30.2-50.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-31) - gps_license: bump to 1.2.0. Operator-facing 503s now point at · /nginx-license-token/ |
| nginx-mod-1.30.2-49.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-18) - Bundle nginx-gps SELinux policy: allow outbound HTTPS from httpd_t · (license reporting + future integrations) and bind UDP 443 for HTTP/3. · Paired with `semanage port -a -t http_port_t -p udp 443` in %post for · EL <= 9 where the UDP label is missing. |
| nginx-mod-1.30.1-49.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-18) - Bundle nginx-gps SELinux policy: allow outbound HTTPS from httpd_t · (license reporting + future integrations) and bind UDP 443 for HTTP/3. · Paired with `semanage port -a -t http_port_t -p udp 443` in %post for · EL <= 9 where the UDP label is missing. |
| nginx-mod-1.30.1-48.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-05) - gps_license: bump to 1.1.1 (host telemetry: distro/arch/package_source). · - gps_license: enable on RHEL >= 8 and Amazon Linux >= 2 (was Fedora / · SUSE / EL7 only). Pass package_source=nginx_mod via cc_opt. |
| nginx-mod-1.30.1-47.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-05) - gps_license: bump to 1.1.1 (host telemetry: distro/arch/package_source). · - gps_license: enable on RHEL >= 8 and Amazon Linux >= 2 (was Fedora / · SUSE / EL7 only). Pass package_source=nginx_mod via cc_opt. |
| nginx-mod-1.30.0-47.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-05) - gps_license: bump to 1.1.1 (host telemetry: distro/arch/package_source). · - gps_license: enable on RHEL >= 8 and Amazon Linux >= 2 (was Fedora / · SUSE / EL7 only). Pass package_source=nginx_mod via cc_opt. |
| nginx-mod-1.30.0-46.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-05-04) - limit_req: nano-r/s internal storage so low rates (1r/Y, 1r/d, 2r/h) · actually leak instead of being permanently stuck at 429. |
| nginx-mod-1.30.0-45.fc44.gps.aarch64 | 1.1 MiB |
Danila Vershinin (2026-04-23) - Raise Obsoletes/Provides epoch for nginx-mod-mail / nginx-mod-stream from 1 · to %{nginx_epoch} (2), using the same synthetic -99 release pattern already · in use on line 238 for the nginx name. EL9 AppStream ships these split · sub-packages at epoch 2, so the prior "<= 1:%{version}" boundary silently · never matched and left them stranded on upgrade, deadlocking dnf with · "nginx-mod-stream requires nginx(abi) = 1.20.1" on AL9 and AL10. |