2026年11月12日
2026年11月12日
NGINX Plus vs Open Source Nginx: Features, Licensing and How to Choose
This article is a localized edition of the Japanese original. Read the Japanese original
Nginx comes in two editions: the free open source version, and NGINX Plus, a commercial version sold by F5. NGINX Plus builds on the open source version, adding features for load balancing, monitoring and authentication, plus support from F5.
This article sorts out which features are exclusive to NGINX Plus, based on the nginx.org documentation (each module's page states when it is "available as part of our commercial subscription") and the official NGINX Plus documentation. The information is current as of November 2026. Features that used to be Plus-only keep moving into the open source version, so check the latest documentation when you evaluate it.
Bottom line: the free version is enough for most WordPress sites
If you run WordPress on one or a few web servers, the open source version is almost always sufficient. Caching, HTTPS, HTTP/2 and HTTP/3, rate limiting and basic load balancing are all available in the free version.
Situations where NGINX Plus is worth considering include:
- You load-balance across many application servers and want unresponsive servers removed automatically before user requests fail (active health checks)
- You want to add and remove servers through an API, without editing config files and reloading
- You want detailed statistics through an API or a monitoring dashboard
- You want Nginx to handle JWT or OpenID Connect authentication
- You want to synchronize state such as sessions across multiple Nginx instances
- You need a software support contract
Main NGINX Plus-only features
These are the main modules and features that the nginx.org documentation lists as part of the commercial subscription.
| Feature | Module / directive | What it does |
|---|---|---|
| Active health checks | ngx_http_upstream_hc_module (health_check) |
Sends periodic check requests to upstream servers and removes unhealthy ones |
| API | ngx_http_api_module |
Adds, removes and reconfigures upstream servers without a reload, and returns statistics as JSON |
| Monitoring dashboard | ngx_http_api_module and the bundled dashboard |
Shows connections, responses, upstream server status and more on screen |
| Key-value store | ngx_http_keyval_module |
Uses keys and values that can be changed through the API as variables in the configuration |
| JWT authentication | ngx_http_auth_jwt_module |
Validates JSON Web Tokens to allow access |
| OpenID Connect | ngx_http_oidc_module |
Handles OpenID Connect login in Nginx |
| State synchronization | ngx_stream_zone_sync_module |
Synchronizes shared memory contents (such as sticky sessions) across multiple Nginx instances |
| Fine-grained load balancing control | queue, ntlm and state in upstream; slow_start on server |
A queue that waits for free capacity, NTLM authentication passthrough, saving the server list to a file, and gradual ramp-up for recovered servers |
NGINX Plus uses ngx_mgmt_module for license management and usage reporting (see the next section).
Features recently added to the open source version
Of the features that used to be NGINX Plus-only, the following are now available in the open source version too (checked against the nginx.org changelog and documentation).
| Feature | Open source version that added it |
|---|---|
resolve on server in upstream (updates upstream servers as DNS changes), and resolver inside upstream |
1.27.3 |
Session affinity (sticky), and route and drain on server |
1.29.6 |
Load balancing by response time (least_time) |
1.31.0 |
Note that the standard packages in Linux distributions are often older versions. Check the version with nginx -v, and to use these features, install a newer version from the packages distributed by nginx.org.
Licensing and pricing
- NGINX Plus is a paid subscription. Pricing isn't published; you contact F5. You can request a trial from the official website.
- Since NGINX Plus R33 (November 2024), each instance needs a JWT license file obtained from MyF5. On Linux it goes in
/etc/nginx/. - Instances report usage to F5 periodically, and if the initial report doesn't get through, NGINX Plus stops processing traffic. In environments without internet access, reports go through NGINX Instance Manager.
- As of October 2026, releases no longer use numbers like "R36"; they are named PLS.37, with two tracks: LTS for long-term support and CR, which receives new features.
The open source version is under a 2-clause BSD license and is free to use.
Alternatives in the free version
Detect failing upstream servers (passive health checks)
The open source version can also take a server out of rotation for a while after real requests to it fail.
upstream wp_backend {
server 192.168.1.10 max_fails=3 fail_timeout=30s;
server 192.168.1.11 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://wp_backend;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# If a server can't be reached or doesn't respond, retry on the next server
proxy_next_upstream error timeout;
}
}
max_fails=3 fail_timeout=30s: a server that fails 3 times within 30 seconds is removed from rotation for 30 seconds (the defaults aremax_fails=1andfail_timeout=10s).- Failures are detected through user requests, so some requests get failed responses before the server is removed. That is the difference from NGINX Plus active health checks, which send their own check requests.
Load balancing setup is covered in "Setting up a load balancer with Nginx", and the different balancing methods in "Nginx load balancing algorithms".
View connection counts (stub_status)
The open source ngx_http_stub_status_module shows basic connection and request numbers. It is built into the Ubuntu/Debian packages and the nginx.org packages (you can use it if --with-http_stub_status_module appears in the output of nginx -V).
server {
listen 127.0.0.1:8080;
location = /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
sudo nginx -t && sudo systemctl reload nginx
curl http://127.0.0.1:8080/nginx_status
It shows Active connections (current connections), cumulative accepted connections and requests, and the number of connections reading, writing and waiting. There is no per-upstream status or response-code breakdown like the NGINX Plus API provides. A common approach is to collect these numbers with monitoring software such as Zabbix or Prometheus and graph them.
Access control and authentication
Rate limiting (limit_req), connection limits (limit_conn), Basic authentication (auth_basic) and auth_request, which delegates authentication to another server, are all available in the open source version. They are usually enough to protect the WordPress login page (see "Rate limiting with Nginx limit_req").
Reference: writing an NGINX Plus active health check
In NGINX Plus, you specify a zone that keeps upstream state in shared memory, and put health_check in the location. The open source version doesn't support health_check, and the configuration test fails with an error.
upstream wp_backend {
zone wp_backend 64k;
server 192.168.1.10;
server 192.168.1.11;
}
server {
listen 80;
location / {
proxy_pass http://wp_backend;
# Check / every 5 seconds; remove after 3 consecutive failures, restore after 2 consecutive successes
health_check interval=5 fails=3 passes=2 uri=/;
}
}
Cautions
- The feature split in this article is as of November 2026. Check each module's page on nginx.org for the "commercial subscription" note.
- Even in the open source version, new features only exist in new versions. Check the version with
nginx -vbefore relying on one. - Before trialing or buying NGINX Plus, confirm that license file placement and usage reporting will work in your environment (for example, whether it can reach the internet).
Summary
- NGINX Plus is the commercial edition that adds active health checks, an API and dashboard, JWT and OpenID Connect authentication, state synchronization and more, plus support from F5, on top of the open source version
resolve(1.27.3),sticky(1.29.6) andleast_time(1.31.0) are now available in the open source version- NGINX Plus needs a license file per instance and usage reporting, and pricing is by contacting F5
- For WordPress running on a few servers, the open source version's
max_fails/fail_timeout,stub_statusandlimit_reqare usually enough
Questions about WordPress? The publisher of this site is based in Japan and replies in Japanese. Contact (Japanese)