NPP (Nginx Cache Purge Preload) lets you purge and preload your Nginx cache (FastCGI, Proxy, SCGI, uWSGI) straight from the WordPress dashboard. Built-in cache warming re-crawls your site after a purge, so pages are served from the Nginx cache again before visitors arrive. Purge a single URL or the
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.5 and PHP 7.4.
SourceWordPress plugins · Nov 7, 2026
01 / Source details
Aboutthistool.
NPP (Nginx Cache Purge Preload) lets you purge and preload your Nginx cache (FastCGI, Proxy, SCGI, uWSGI) straight from the WordPress dashboard. Built-in cache warming re-crawls your site after a purge, so pages are served from the Nginx cache again before visitors arrive.
Purge a single URL or the whole cache using the fastest method your server supports, automate it on content changes, and control everything from the admin bar, REST API or WP-CLI.
Supports fastcgi_cache , proxy_cache , scgi_cache and uwsgi_cache , and integrates with WooCommerce, Cloudflare APO and Redis Object Cache. Running Fail2Ban? NPP also works as a security dashboard for it, see below.
🛡️ Fail2Ban Dashboard
Run Fail2Ban on your Nginx server? See what it blocks, right inside WordPress. Fail2Ban keeps blocking; NPP shows you who, from where, and how often.
Live ban & unban feed with jail activity and repeat offenders
Top Attack Countries world map
Automatic network lookup : owner, ASN, country and abuse contact
One-click abuse reports to the offending network
Setup is three copy-paste steps in the Fail2Ban tab. See the FAQ below.
🖥️ Quick WP-CLI
Manage your Nginx cache and Fail2Ban dashboard entirely from the command line. Perfect for automation, cron jobs, panels, and headless workflows.
Explore NPP Containerized – Ready to run full stack Nginx Docker setup.
Follow the Complete Setup & Guide – Nginx config, permissions, purge, preload and troubleshooting, step by step.
Read the NPP Main Architecture – Technical deep dive article.
Refer to the plugin’s Help tab for more deeper additional guidance.
Features
Purge All Nginx Cache : Completely clear all cached data stored by Nginx.
Preload All Nginx Cache : Warm the Nginx cache with the most recent data for the entire website.
HTTP Purge (ngx_cache_purge) : When the Nginx cache module (ngx_cache_purge) is available, NPP uses it as the fastest purge path. Falls back gracefully to index and filesystem purge when the module is not present.
INDEX Purge : Leverages the preload-generated URL → Filepath index to directly resolve and purge cache without filesystem traversal. If the cache exists and is valid, purge is executed immediately for near-instant performance.
RG Purge : ripgrep-powered cache file lookup that replaces slow PHP directory scanning for single-URL purges, enabling near-instant deletes on large or FUSE-mounted caches. Automatically falls back to standard scan if unavailable.
Auto Preload Nginx Cache : Automatically preloads the cache when Auto Purge is enabled for a POST/PAGE or after the Purge All action.
Auto Purge Nginx Cache : Purge cache on Post/Page content changes, comment status updates, theme/plugin updates, or when compatible Cache Plugins trigger a purge. Nginx cache is preloaded automatically if Auto Preload is enabled (for the entire site or individual page).
Purge Scope (Related Pages) : Automatically purge related pages such as the Homepage, WooCommerce Shop page, and Category/Tag archives when a single URL is purged. Optionally preload those pages to keep the cache warm.
Preload Feeds : Take full control of RSS/Atom feed caching. Decide site‑wide or per‑URL whether the main feed, per‑post comment feeds, and taxonomy RSS feeds are included in the preload process.
Schedule Nginx Cache Purge & Preload via WP Cron : Automate the purge and preload process using WordPress Cron jobs.
Proxy Support for Preload : Route preload requests through a proxy server for edge-case environments and containerized deployments.
Live Preload Progress Monitoring : Watch the Nginx cache preload process in real time — complete with a dynamic progress bar, currently processed URL, 404 tracking, server load, and total completion time.
Remote Nginx Cache Purge & Preload via REST API : Remotely trigger cache purging and preloading through REST API endpoints.
Manual Nginx Cache Purge & Preload : Allow manual purging and preloading of cache through the table view in the Advanced Tab.
Nginx Cache Analyzer : Full HIT/MISS cache analyzer dashboard, from the last preload crawl with what is currently stored in the Nginx cache. Instantly spot uncached pages and Purge or Preload them directly in the Advanced Tab.
Preload All MISS : A targeted replacement for the expensive Preload All. Instead of purging and re‑caching everything (Preload All), it targets and populates only the cache entries that are not yet warmed. Perfect for sites with high cache coverage (>50%) where a full Preload All would be wasteful.
On-Page Nginx Cache Purge & Preload : Manually purge and preload Nginx cache for the currently visited page directly from the frontend.
Custom Cache Key Support : Define a regex pattern to parse URLs based on your custom _cache_key format.
Monitor Plugin and Nginx Cache Status : Monitor plugin status, cache status, and Nginx status from the Status tab.
Fail2Ban Dashboard : Live ban feed, repeat offenders, attack-country map, automatic IP network lookup and optional abuse reports. Fail2Ban keeps blocking; NPP adds the visibility.
Cache Coverage Ratio : Live gauge in the WordPress dashboard widget showing the cache coverage ratio, based on the last preload snapshot. Refreshable on demand without a page reload.
Cloudflare APO Sync : Automatically mirrors NPP purge actions to Cloudflare APO to keep edge cache synchronized with your Nginx cache.
Redis Object Cache Sync : Coordinates cache invalidation between NPP and Redis Object Cache during NPP-driven operations. NPP Purge All and Preload workflows handle Redis flushing at the appropriate stage to ensure both cache layers stay aligned.
WooCommerce Auto-Purge : Automatically purges Nginx cache when WooCommerce product stock quantity changes, stock status changes (in stock / out of stock / on backorder), or when an order is cancelled and stock is restored.
WP-CLI Support : Manage Nginx cache directly from the command line. Purge and preload cache, view status reports, inspect logs, update settings, flush cache, and manage scheduled tasks without accessing the WordPress admin dashboard.
Concurrent Purge Serialization : Atomic lock mechanism prevents simultaneous purge operations from colliding, ensuring cache integrity during concurrent admin actions or background events.
Modular by Design : Easily integrate with external scripts and automation tools.
User-Friendly Interface : Easy-to-use AJAX-powered settings, integrated into the WordPress admin bar and dashboard for quick access.
Admin Notices and Logs : Receive notifications and view logs for plugin status and all cache-related actions within the WordPress admin area.
Email Notifications : Receive email alerts upon completion of preload actions, with customizable templates to suit your needs.
Credits
This plugin is developed and maintained by Hasan CALISIR.
Bundled libraries, all MIT licensed: DataTables (datatables.net), Tempus Dominus (github.com/Eonasdan/tempus-dominus), Popper.js (github.com/popperjs/popper-core), jsVectorMap (github.com/themustafaomar/jsvectormap), and flag-icons (github.com/lipis/flag-icons).
Privacy Policy
NPP does not collect usage telemetry. The optional anonymous usage reporting available before version 2.1.5, including its opt-in mechanism, has been removed.
When configured, the optional Fail2Ban integration stores reported ban and unban events in your WordPress database. Network lookups and administrator-initiated emails may send data to third parties as described below.
External services
The optional Fail2Ban integration uses RIPEstat for network lookups. It also provides optional, administrator-initiated email features.
RIPEstat Data API (stat.ripe.net)
Provides network registration details, including network name, country, ASN, and abuse contacts, for public IP addresses reported as banned by Fail2Ban.
Data sent: The public IP address reported as banned, sent to RIPEstat’s whois and abuse-contact lookup endpoints, plus the “sourceapp” identifier described below.
When: From a background worker or WP-Cron after a ban event arrives and no cached result is available. These lookups require you to configure Fail2Ban to send events to the plugin’s webhook.
Provider: RIPE NCC.
Identifier: The plugin sends “npp-wp-plugin-fail2ban-monitor” by default. An administrator can optionally append a suffix, such as a domain or project name, under Fail2Ban > RIPEstat Lookups. The suffix is empty by default.
Optional emails
Abuse reports: Sent only when an administrator clicks Send or runs the WP-CLI command. The email contains the reported IP, ban timestamps and jail names, your site’s hostname and server IP, and the sender and contact details you configured. It goes to the abuse contact RIPEstat returns for that network.
RIPEstat registration: When an administrator reviews and sends a registration email, the configured identifier and contact details are sent to the RIPEstat team at RIPE NCC.
Neither abuse reports nor registration emails are sent automatically.
Support
For support and assistance, please contact Hasan CALISIR at hasan.calisir@psauxit.com.
License
This plugin is licensed under the GPLv2 or later.For more information, visit the plugin development page: Nginx Cache Purge Preload
01Upload the “fastcgi-cache-purge-and-preload-nginx” folder to the “/wp-content/plugins/” directory.
02Activate the plugin through the “Plugins” menu in the WordPress admin dashboard.
03Configure plugin settings under “Settings” -> “Nginx Cache Purge Preload” in the WordPress admin dashboard.
04Access “Nginx Cache Purge Preload” operations from the WordPress admin bar (frontend & backend), the Admin Dashboard, and the Plugin Settings page.
Automatic Installation
05Log in to your WordPress admin panel, navigate to the “Plugins” menu and click “Add New”.
06In the search field type “Nginx Cache Purge Preload” and click “Search Plugins”. From the search results, pick “Nginx Cache Purge Preload” and click “Install Now”. WordPress will ask you to confirm to complete the installation.
03 / Source details
Frequently asked questions.
Is NPP a trustworthy and secure plugin?
Yes. NPP is engineered with a highly defensive, multi-layered “Narrow Gate” architecture using a lazy bootstrap mechanism to minimize your server’s attack surface. To minimize performance overhead and vulnerability surfaces, NPP stays dormant on anonymous public traffic, verifying entry paths before heavy core files ever load into memory.
For hardened environment security, it also ships with its own secure privilege-dropping wrapper, safexec —a custom C-binary utility designed to isolate system commands and execute them under a low-privilege runtime user.
Does NPP require Nginx?
Yes. Nginx must be part of your web server stack. It does not matter if Nginx is configured as a frontend reverse proxy or as the direct backend server—as long as Nginx is handling the caching layer on a Linux environment, the plugin works perfectly.
It does not work on standalone Apache setups, restricted shared hosting, or environments where shell_exec and exec are disabled.
Can I monitor Fail2Ban from WordPress?
Yes. NPP shows your Fail2Ban bans and unbans in a live dashboard with jail activity, repeat offenders, a Top Attack Countries map and network details per IP. It is read-only: Fail2Ban keeps blocking as before, and NPP never bans, unbans or edits your jails. The feature is optional and separate from cache management.
How do I connect Fail2Ban to NPP?
Open the Fail2Ban tab, copy the generated nppp-webhook action file to /etc/fail2ban/action.d/ , add the generated line under each jail in jail.local , run sudo systemctl reload fail2ban , then press Test Connection. The Fail2Ban host needs curl and flock and must be able to reach your site. Several servers or jails can report to one dashboard.
Is the Fail2Ban webhook secure?
Yes. It requires a secret token you can regenerate at any time, validates every field, ignores replayed events and rate-limits requests. The tab also provides an optional Nginx rate-limit snippet, and rejected requests are listed in the Endpoint Attacks card.
Are abuse reports sent automatically?
No. A report is sent only when an administrator clicks Send in the Fail2Ban tab or runs the WP-CLI command. You can preview each report, send a test email, use dry-run mode, and set a minimum ban count and a per-IP cooldown.
What does the Fail2Ban dashboard store, and for how long?
The banned IP, jail, event type, timestamp and looked-up network details, in a dedicated database table. Events are deleted after 90 days by default, can be cleared from the Fail2Ban tab, and are removed on uninstall. See the Privacy Policy and External services sections.
Does NPP require the ngx_cache_purge Nginx module?
No. The ngx_cache_purge module is optional. When available, NPP uses it as the first purge path (HTTP Purge). If it is not present, NPP automatically falls back to a URL index lookup and then a full filesystem scan. Nothing breaks either way.
Currently relying on ngx_cache_purge module today introduces unnecessary security and stability risks to your server and not recommended.
Unproven Security (Lack of updates) : The original module project has not been actively maintained for several years. It receives no routine security reviews, vulnerability patches, or bug fixes.
Unreliable Codebase (Fragmented availability) : Because the original project stalled-abandoned, the community has created multiple independent “forks” just to keep it working. This fragmentation makes it nearly impossible to guarantee which version is actually secure or fully compatible with your nginx config and version.
Vulnerable Defaults (Outdated system packages) : Due to the lack of an proven, and trusted release, most Linux distributions default to shipping outdated, decade-old versions of this module. These legacy builds lack modern security standards and frequently experience compatibility issues in real-world production scenarios.
Which command-line utilities and tools are required?
Mostly basic, built-in shell tools are required. wget is required for cache preloading. For hardened shell execution, safexec is highly recommended — see the Help tab for installation instructions. For large cache-heavy websites, especially when Nginx cache paths are located on FUSE-based mounts (such as bindfs to solve permission issues), ripgrep (rg) is strongly recommended for significantly faster cache purge performance.
Which PHP functions must be removed from disable_functions?
Hard Dependencies
shell_exec – The primary dependency used for core plugin functionality.
exec – Required for executing ripgrep RG Purge.
Optional Dependencies:
proc_open , proc_close , proc_get_status – Required for the health check of background preload process.
putenv , getenv – Required to pass critical runtime flags to the safexec and drive the URL Normalization feature.
Why NPP not working on my environment?
The most common reasons are: shell_exec and exec is disabled, open_basedir restrictions prevent required filesystem access, the PHP-FPM user lacks write permission to the Nginx cache directory, or Nginx detection fails ( nginx.conf cannot be located). See the Help tab for a full environment checklist and solutions.
I am getting permission errors. What should I do?
This is the most common issue in environments where the WEBSERVER-USER (nginx/www-data) and PHP-FPM-USER are different. NPP provides a one-liner bash script to automate the fix using bindfs on monolithic servers. For containerized environments, users can review the full configuration setup via NPP Containerized See the Help tab → Permission Issues section or the GitHub repository for details.
Does NPP work with Cloudflare?
Yes. NPP has built-in Cloudflare APO Sync that mirrors every purge to Cloudflare’s edge cache automatically. Requires the official Cloudflare WordPress plugin. Enable it under Settings .
Does NPP work with Redis Object Cache?
Yes. NPP supports Redis Object Cache Sync, which keeps Redis and the Nginx cache aligned during purge and preload operations. When enabled, NPP flushes the Redis object cache at the correct point in the Nginx Purge + Preload chain to ensure fresh content is used when rebuilding cache. Enable it under Settings .
Is NPP compatible with WooCommerce?
Yes. NPP includes built-in WooCommerce Auto-Purge for stock changes and order events, and supports purging the Shop page as a related URL when a product is updated.
Can I use NPP alongside other caching plugins?
Yes, but disable page caching in other plugins to avoid conflicts. You can keep their frontend optimization features (minification, lazy loading) active.
For the best results, NPP pairs best with lightweight, minification-only trusted plugins. Because Nginx already handles your page caching instantly at the server level, using heavy, code-bloated page caching plugins only introduces unnecessary overhead even you disable page caching features. Keeping your frontend optimization layer as lean as possible is the ideal match for high-speed Nginx caching.
Where can I find the allowed Nginx cache paths?
NPP restricts cache paths by default to prevent accidental deletion of system files. Allowed roots are /dev/shm/ , /tmp/ , /var/ , and /cache/ . The path must be at least one level deep (e.g. /var/cache/nginx ). These restrictions can be completely disabled using the Bypass Path Restriction feature, which removes all path safety guardrails and allows any directory to be used as the Nginx cache path. Full details in the Help tab .
Does NPP support WP-CLI?
Yes. NPP includes full WP-CLI integration. You can purge, preload, check status, view logs, update settings, flush transients, and manage scheduled events directly from the terminal — no admin dashboard access required. Run wp help npp and wp help npp <subcommand> to see all available commands.
What Nginx cache types are supported by NPP?
NPP supports FastCGI , Proxy , SCGI , and uWSGI cache methods. The plugin automatically applies the appropriate purge strategy (HTTP Purge, INDEX Purge, or RG Purge).
What is HTTP Purge and how do I set it up?
HTTP Purge is an optional fast‑path that uses Nginx’s ngx_cache_purge module to delete cache entries via a simple HTTP request. It is the fastest possible single‑URL purge method because it avoids any filesystem scan.
What is RG Purge and should I enable it?
RG Purge is a much faster alternative to the traditional PHP filesystem scan. It uses ripgrep (rg) — line-oriented search tool written in Rust — to locate nginx cache files in a fraction of the time.
On a typical website with thousands of cached URLs, the built‑in PHP recursive iterator can take anywhere from 10 to 60 seconds to scan the disk and locate cache files for a single purge event. RG Purge reduces this cleanup time to 1–2 seconds regardless of cache size by using parallel directory traversal and memory‑mapped I/O.
When to enable: Strongly recommended for large or high-traffic sites with over 10,000 URLs, or any environment where Nginx cache paths are stored on slower disk arrays or FUSE-based mounts (like bindfs).
What is Index Purge and how does it speed up single‑URL purges?
During every cache preload, NPP quietly builds a persistent URL‑to‑filepath index. When you later purge a specific page (manually, or via auto‑purge), the plugin first checks this index. If the URL is found, NPP instantly knows the exact cache file location and deletes it immediately — with zero disk scanning . This is the second‑fastest purge path (FP2) and works even on sites with hundreds of thousands of cached files. The index is automatically updated after each purge and can be cleared manually from the Status tab if your cache structure changes.
What is safexec and why is it used?
safexec is a small, privilege‑dropping wrapper (written in C) created specifically for NPP. It is used to safely execute system commands like wget , and rg while enforcing strict security controls.
What it does?
Drops privileges to a low‑privilege user ( nobody ) before running the shell command.
FinderPress Media Auditor helps site administrators scan for broken images, missing Media Library files, unreachable media URLs, and other media issues across WordPress content. Use it to audit images, video, audio, PDFs, featured images, and attachment files without sending scan data to an external
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati