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 are max_fails=1 and fail_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 -v before 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) and least_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_status and limit_req are usually enough

Questions about WordPress? The publisher of this site is based in Japan and replies in Japanese. Contact (Japanese)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲