Important: this page is meant for users of the Plesk control panel. If you are interested in building a panel-less web server powered by NGINX, check out the main NGINX Extras page instead.

What is NGINX Extras for Plesk?

The NGINX Extras is our enormous collection of dynamic NGINX module packages.

Users of the Plesk control panel may install Plesk-compatible NGINX module packages from our repository.

Our Plesk-compatible NGINX module packages allow you to expand the base NGINX which was shipped with Plesk from a simple webserver to a modern application stack with support of:

  • better Brotli support
  • dynamic ETag support
  • automatic security headers
  • and a whole lot more!

We support the same set of RPM-based operating systems as Plesk. This includes RHEL, CentOS, AlmaLinux, RockyLinux, CloudLinux, etc.

NGINX Extras for Plesk features:

  • Leverage dynamic modules. You can keep the bare minimum NGINX and any modules you wish, extending as you need. Not a bloatware NGINX build!
  • Is the largest collection of pre-built dynamic NGINX modules for Plesk on the Internet in a single repository
  • Allows you to keep SELinux enabled, and avoid the common pitfalls of compiled installs
  • Powered by CDN!

Getting started

Install repository configuration

sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm

Once the repository configuration is installed, activate your subscription to the GetPageSpeed repository.

Subscribed? Proceed with installing the modules to build your ultimate high-performance web stack.

Install NGINX modules for Plesk

Thanks to the nature of dynamic modules, you can install just the modules you want instead of using bloatware NGINX installation.

For example, to install the Dynamic ETag module for NGINX in Plesk, run:

sudo yum -y install sw-nginx-module-dynamic-etag

Then follow the installation prompt to enable it:

sudo plesk sbin nginx_modules_ctl --enable dynamic-etag

Now you can use the module’s directives (according to its documentation), in your NGINX configuration.

To list available modules for installation, run:

sudo yum list available | grep sw-nginx-module

Installing and enabling an NGINX module can be done with:

sudo yum -y install sw-nginx-module-<handle>
sudo plesk sbin nginx_modules_ctl --enable <handle>

For example, to install the Security Headers module, you may run:

sudo yum -y install sw-nginx-module-security-headers
sudo plesk sbin nginx_modules_ctl --enable security-headers 

Safe place for NGINX directives

Because the control panel can easily overwrite things upon updates or edits in its interface, you must know how to safely add additional configuration directives.
Safely means that your configuration will be preserved upon Plesk updates.
The placement will depend upon the scope that you want the new directives to apply to.

Customize NGINX configuration for a single website

If you want to customize a single website’s NGINX configuration to make use of the installed modules, you can typically do so via the Plesk interface and add relevant directives there:

  • In the Plesk interface, proceed to “Websites & Domains”.
  • Along the desired website, choose “Hosting & DNS”, then “Apache & nginx Settings”.
  • Put your additional NGINX directives under the “Additional nginx directives” section

Customize NGINX configuration globally

If you want to apply some global NGINX configuration for all the websites at once, it is advisable to create /etc/nginx/conf.d/custom.conf and place the extra configuration directives there.

Customize non-HTTP NGINX configuration globally

Finally, if a module (for example, RTMP) requires directives to be placed outside http {} context, then you can create /etc/nginx/modules.conf.d/zzz_custom.conf and add those directives there.
Such filename will ensure the loading of directives after NGINX loaded the modules.

Modules of interest

A list of some of the most interesting module packages follows (remember, there are actually 50+ available, see below). In the tables below a package’s name is hyperlinked with either a relevant tutorial by GetPageSpeed, when available, or project’s homepage.

Important: while following instructions on those pages, be sure to install packages with the sw- prefix, and use plesk sbin nginx_modules_ctl --enable ... command which will be displayed after installation for enabling, Do not manually edit nginx.conf!

Package Name Description
sw-nginx-module-geoip2 GeoIP2 module for NGINX
sw-nginx-module-rtmp NGINX RTMP module
sw-nginx-module-cache-purge NGINX Cache Purge module
sw-nginx-module-dynamic-etag NGINX Dynamic ETag module
sw-nginx-module-jpeg Adds overlays (e.g. a logo, visual watermark) on JPEGs when they are requested
sw-nginx-module-headers-more Set, add, and clear arbitrary output headers in NGINX http servers
sw-nginx-module-auth-pam HTTP PAM authentication module
sw-nginx-module-fancyindex Generation of file
listings, like the built-in autoindex module does, but adding
a touch of style

The above table is just for a few of the utmost interest. But there are actually more than 50 modules available. You can get the complete list here or simply run yum search sw-nginx-module.

For further details about our RPM repository, see dedicated repository page.

You can provide any feedback and submit/request additional modules to be built in our public NGINX Extras repository.

NGINX Extras for Plesk vs NGINX Plus feature availability

Feature Description NGINX Plus GetPageSpeed NGINX Extras
Plesk compatibility Not Compatible Compatible
NGINX Modules Availability 32 modules Over 50 modules, including exclusive like Dynamic ETag, Security Headers
Packages Availability Only NGINX Modules Hundreds of useful performance and security related packages
JWT authentication Yes Yes, via nginx-module-jwt module package
Adobe HTTP Dynamic Streaming built-in ngx_http_f4f_module Yes, via nginx-module-f4fhds module package
Pricing Over $2,500 yearly for a single instance $140 yearly for a single IP (includes unlimited machines behind public IP)