NGINX modules for Plesk — $5/mo, half the Plus price
100+ sw-nginx-module-* packages built for Plesk's sw-nginx ABI. RTMP streaming, security headers, Zstandard, dynamic ETag and more — installable with yum, dnf, or apt, then enabled with one plesk sbin nginx_modules_ctl command.
What is NGINX Extras for Plesk?
A focused subscription channel for one audience: Plesk control-panel admins. The Plesk-shipped NGINX (sw-nginx) is a separate binary with its own ABI, so it cannot load the modules we build for stock NGINX. We solve that by maintaining a parallel build of every relevant module against sw-nginx, shipped under the sw- prefix.
The end result: extend the bare NGINX Plesk gave you into a modern application stack — without leaving the panel, recompiling anything, or disabling SELinux.
- Dynamic modules — install only what you need, no bloatware
- The largest pre-built collection of Plesk-compatible NGINX modules anywhere
- SELinux stays enforcing — no compiled-install pitfalls
- CDN-powered package delivery
Quick install example
# 1. Add the repository
sudo yum -y install \
https://extras.getpagespeed.com/release-latest.rpm
# 2. Activate your subscription at
# https://www.getpagespeed.com/plesk-subscribe
# 3. Install a module — e.g. Dynamic ETag
sudo yum -y install sw-nginx-module-dynamic-etag
# Ubuntu/Debian alternative:
# curl -fsSL https://extras.getpagespeed.com/release-latest.deb \
# -o /tmp/getpagespeed-extras-release.deb
# sudo apt install /tmp/getpagespeed-extras-release.deb
# sudo apt update
# sudo apt install sw-nginx-module-dynamic-etag
# 4. Enable it via Plesk's supported command
sudo plesk sbin nginx_modules_ctl \
--enable dynamic-etag
No compilation | SELinux enforcing | Plesk-safe
Featured Plesk-compatible NGINX modules
Each installable with yum, dnf, or apt install sw-nginx-module-<handle> and enabled via plesk sbin nginx_modules_ctl.
RTMP Streaming
sw-nginx-module-rtmpTurn the NGINX shipped with Plesk into a complete media streaming server. Live streaming, HLS/DASH output, recording, transcoding hooks — without leaving the Plesk control panel.
Automatic Security Headers
sw-nginx-module-security-headersEmit HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options and friends automatically. One module, every Plesk-managed vhost hardened.
Zstandard Compression
sw-nginx-module-zstdServe Zstandard-compressed responses directly from Plesk's NGINX. Modern browsers get fast decompression and smaller transfers while older clients keep gzip fallback.
Dynamic ETag
sw-nginx-module-dynamic-etagConditional GET for dynamic pages. NGINX hashes the response body and returns 304 Not Modified when the client already has the latest version — instant bandwidth savings on busy WordPress / WooCommerce sites.
JWT Authentication
sw-nginx-module-jwtValidate signed JWTs at the Plesk NGINX edge for API authentication and stateless authorization without sending every request to the application.
Cache Purge
sw-nginx-module-cache-purgeSelective purge of NGINX proxy_cache entries — close the gap with Varnish without leaving the Plesk stack. Integrates cleanly with WordPress cache-purge plugins.
Plus 100+ more sw-nginx modules
Specialised modules for streaming, load balancing, scripting, monitoring
sw-nginx-module-auth-pam
HTTP authentication via Linux PAM
sw-nginx-module-headers-more
Set, add, and clear arbitrary HTTP headers
sw-nginx-module-fancyindex
Stylish directory listings (custom templates)
sw-nginx-module-njs
Server-side JavaScript for HTTP request processing
sw-nginx-module-immerse
Inline asset embedding for faster first paint
sw-nginx-module-postgres
Direct PostgreSQL query handling from NGINX
sw-nginx-module-set-misc
Additional rewrite and variable manipulation directives
sw-nginx-module-sysguard
Reject requests when load/memory exceed thresholds
sw-nginx-module-upstream-fair
Fair load balancing across upstreams
sw-nginx-module-flv
Pseudo-streaming for FLV media
NGINX modules for Plesk vs NGINX Plus
NGINX Plus is not Plesk-compatible. This is.
| Feature | NGINX Plus | NGINX modules for Plesk |
|---|---|---|
| Plesk control-panel compatibility | Not compatible | Compatible — built for sw-nginx |
| Module count | 32 | 100+ sw-nginx-module-* packages |
| Exclusive modules | — | Dynamic ETag, Security Headers, Cache Purge |
| SELinux enforcing | N/A on Plesk | Yes on RPM; native Plesk paths on DEB |
| JWT authentication | Yes | Yes, via sw-nginx-module-jwt |
| RTMP / HLS streaming | — | Yes, via sw-nginx-module-rtmp |
| Starting price | $3,675+/yr per instance | $5/mo per server |
Get a module installed in under 3 minutes
From repo to enabled inside the Plesk-managed NGINX
Install the repository
Add the Plesk RPM channel or the stable APT repository.
sudo yum -y install \
https://extras.getpagespeed.com/release-latest.rpm
# Ubuntu/Debian:
curl -fsSL https://extras.getpagespeed.com/release-latest.deb \
-o /tmp/getpagespeed-extras-release.deb
sudo apt install /tmp/getpagespeed-extras-release.deb
sudo apt update
Activate the $5/mo Plesk tier
Enter the server's public IP at checkout.
Subscribe — /plesk-subscribeInstall & enable a module
Example: Dynamic ETag for conditional GET.
sudo yum -y install \
sw-nginx-module-dynamic-etag
# Ubuntu/Debian:
sudo apt install sw-nginx-module-dynamic-etag
sudo plesk sbin nginx_modules_ctl \
--enable dynamic-etag
$5/mo or $50/yr · cancel anytime
Where to put NGINX directives so Plesk does not eat them
The control panel rewrites parts of the NGINX configuration on routine actions. Where you place your directives decides whether they survive the next Plesk update.
Per-vhost (one website)
In the Plesk UI: Websites & Domains → pick the site → Hosting & DNS → Apache & nginx Settings → paste under Additional nginx directives. Plesk stores these in its own templates and reapplies them on every reconfig.
Globally inside http {}
Create /etc/nginx/conf.d/custom.conf. Plesk leaves conf.d/ alone; everything you put there is included in the main http {} block.
Globally outside http {} (e.g. RTMP)
Some modules (RTMP is the obvious one) need directives at the top level of nginx.conf, not inside http {}. Put those in /etc/nginx/modules.conf.d/zzz_custom.conf — the zzz_ prefix guarantees the file loads after NGINX has loaded the dynamic modules themselves, so the new directives are recognised.
Frequently asked questions
Everything Plesk admins ask before subscribing
Because it is a strictly narrower product. The Plesk tier opens only sw-nginx-module-* packages built for Plesk's sw-nginx ABI. The Plus tier also includes our stock NGINX packages, alternate NGINX builds, dependencies, and general server tools that a Plesk host does not need.
Carving Plesk out as its own tier prices the actual delivered value rather than charging for unrelated repository access.
Yes — keep the Plesk-shipped sw-nginx exactly as Plesk installed it. Our packages are add-on modules for that same sw-nginx, never replacements. Enable them via the supported Plesk command:
sudo plesk sbin nginx_modules_ctl --enable <module>Plesk updates will not strip the modules; the install paths are designed to survive routine Plesk upgrades.
Yes on RPM-based systems — that is a key reason to use packaged modules instead of compiling your own. RPM packages ship the appropriate SELinux integration where required. Debian and Ubuntu packages install into Plesk's native module paths and require no SELinux workaround.
Yes. We support the same RPM-based operating systems Plesk supports: RHEL, CentOS, AlmaLinux, Rocky Linux, CloudLinux, Amazon Linux, on EL7 / EL8 / EL9 / EL10. Both x86_64 and aarch64 (ARM64) builds are published.
Yes. The production DEB cohort supports Ubuntu 20.04, Ubuntu 22.04, and Ubuntu 24.04 plus Debian 12 and Debian 13 on amd64. Install the APT repository package, then install the same sw-nginx-module-<handle> names used on RPM systems. Every DEB depends on the exact Plesk sw-nginx package version it was built against.
Drop your subscription and re-subscribe to the regular Plus tier at that point — the stock-nginx repo channel covers everything you would need. The Plesk tier is intentionally specific to sw-nginx; there is no point paying for it once you no longer run Plesk.
Per the IP address of the server you list at checkout — the same mechanism used by every other GetPageSpeed subscription. yum, dnf, and apt package requests from that IP get authorised; everything else is rejected at the repository layer. No license keys, no JWT, no environment files.
Ready to extend Plesk's NGINX?
$5/mo or $50/yr · one IP per subscription · cancel anytime
Subscribe — /plesk-subscribe