Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
547d128
updates to about subscription licenses topic
travisamartin Sep 23, 2025
6e23968
edits
travisamartin Sep 24, 2025
39a33a7
edits
travisamartin Sep 24, 2025
bf836f4
turned about subscriptions into a landing page
travisamartin Sep 25, 2025
48c964e
edits
travisamartin Sep 25, 2025
928e55f
edits
travisamartin Sep 25, 2025
02efd88
edits
travisamartin Sep 25, 2025
0182f44
Merge remote-tracking branch 'origin/main' into docs-1049-n-plus-lice…
travisamartin Sep 25, 2025
3d6f5b7
fixed links
travisamartin Sep 25, 2025
88f6a0f
edits
travisamartin Sep 25, 2025
157e632
moved pic
travisamartin Sep 25, 2025
efa3c3e
fixed link
travisamartin Sep 25, 2025
2f40af3
deleted flowchart pic from static dir
travisamartin Sep 26, 2025
9152948
edits
travisamartin Sep 26, 2025
6d17acd
updated index title
travisamartin Sep 26, 2025
10042aa
edits
travisamartin Sep 26, 2025
6412bfb
edits
travisamartin Sep 26, 2025
6bc82cc
edits
travisamartin Sep 26, 2025
2efeba6
deleted unused include
travisamartin Sep 26, 2025
08d83d7
added what's next link
travisamartin Sep 26, 2025
21e6402
Merge branch 'main' into docs-1049-n-plus-license-workflows
travisamartin Sep 26, 2025
ce36e44
added linkTitle
travisamartin Sep 29, 2025
4d21d15
Merge remote-tracking branch 'origin/main' into docs-1049-n-plus-lice…
travisamartin Sep 29, 2025
d707904
Merge branch 'docs-1049-n-plus-license-workflows' of github.com:nginx…
travisamartin Sep 29, 2025
2230707
bumped theme
travisamartin Sep 29, 2025
8dcd517
Merge remote-tracking branch 'origin' into docs-1049-n-plus-license-w…
travisamartin Sep 29, 2025
354d469
edits
travisamartin Sep 29, 2025
b1c1ee0
edits
travisamartin Sep 29, 2025
af39bc4
edits
travisamartin Sep 29, 2025
8e342cc
deleted related topics page
travisamartin Sep 29, 2025
206aed0
Update content/solutions/about-subscription-licenses/nginx-plus-licen…
travisamartin Sep 29, 2025
9a9aa8c
edits per tech review
travisamartin Sep 29, 2025
3a6c440
Merge branch 'docs-1049-n-plus-license-workflows' of github.com:nginx…
travisamartin Sep 29, 2025
739b457
fixed typo
travisamartin Sep 29, 2025
7a06290
Apply suggestions from code review
travisamartin Sep 29, 2025
c44b7ac
edits per tech review
travisamartin Sep 29, 2025
762fb78
edits per tech review
travisamartin Sep 30, 2025
644d280
edits
travisamartin Sep 30, 2025
7a02e4e
edits
travisamartin Sep 30, 2025
0e10fb2
updated metadata in getting started
travisamartin Sep 30, 2025
9280464
edits per tech review
travisamartin Sep 30, 2025
2a9b715
made individual pics for the workflows
travisamartin Sep 30, 2025
5b219e4
edited metadata for workflows topic
travisamartin Sep 30, 2025
9c7bd20
Merge remote-tracking branch 'origin' into docs-1049-n-plus-license-w…
travisamartin Sep 30, 2025
ca82cf8
edits
travisamartin Sep 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions content/includes/licensing-and-reporting/apply-jwt.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@ file:
systemctl reload nginx
```

**If SELinux is enabled**:
1. If SELinux is enabled, set the correct file context so NGINX can read the license:

Set the correct file context so NGINX can read the license:

```shell
chcon -t httpd_config_t /etc/nginx/license.jwt
```
```shell
chcon -t httpd_config_t /etc/nginx/license.jwt
```
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,23 @@
docs:
---

1. Open port `443` for NGINX Instance Manager.
1. Allow NGINX Plus instances to connect to NGINX Instance Manager over HTTPS (TCP `443`).

2. On each NGINX Plus instance, update the [`usage_report`](https://nginx.org/en/docs/ngx_mgmt_module.html#usage_report) directive in the [`mgmt`](https://nginx.org/en/docs/ngx_mgmt_module.html) block of the NGINX configuration (`/etc/nginx/nginx.conf`) to point to your NGINX Instance Manager host:
1. On each NGINX Plus instance, set the [`usage_report`](https://nginx.org/en/docs/ngx_mgmt_module.html#usage_report) directive in the [`mgmt`](https://nginx.org/en/docs/ngx_mgmt_module.html) block of `/etc/nginx/nginx.conf` to point to your NGINX Instance Manager host:

```nginx
mgmt {
usage_report endpoint=<NGINX-INSTANCE-MANAGER-FQDN>;
usage_report endpoint=<NGINX-INSTANCE-MANAGER-FQDN>;
}
```

{{<call-out "note" "Extra steps for self-signed certificates">}}If you use self-signed certificates in your NGINX Instance Manager environment, follow the steps in [Configure SSL verification for usage reporting with self-signed certificates]({{< ref "nim/system-configuration/secure-traffic.md#configure-ssl-verify" >}}).{{</call-out>}}

3. Reload NGINX:
1. Reload NGINX:

``` bash
systemctl reload nginx
```

{{<call-out "note" "If you’re using self-signed certificates" >}}
If you’re using self-signed certificates with NGINX Instance Manager,
see [Configure SSL verification for self-signed certificates]({{< ref "nim/system-configuration/secure-traffic.md#configure-ssl-verify" >}}) for additional steps.
{{</call-out>}}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
docs:
---

If you plan to use a custom path for the license file, note that **custom paths won’t work until after the R33 upgrade**. You’ll need to create a placeholder file at `/etc/nginx/license.jwt` or `/usr/local/etc/nginx/license.jwt` on FreeBSD before upgrading.
If you’re upgrading from NGINX Plus R32 or earlier to R33 or later and plan to use a custom path for the license file, note that the custom path isn’t recognized until after the upgrade. You must first create a placeholder file at `/etc/nginx/license.jwt` (or `/usr/local/etc/nginx/license.jwt` on FreeBSD).

1. **Before upgrading**: Create the placeholder file by running:
1. **Before upgrading**: Create the placeholder file:

```bash
touch /etc/nginx/license.jwt
```

2. **After upgrading**: Update the [`license_token`](https://nginx.org/en/docs/ngx_mgmt_module.html#license_token) directive in the NGINX configuration [`mgmt`](https://nginx.org/en/docs/ngx_mgmt_module.html) block to point to your custom path:
1. **After upgrading**: Update the [`license_token`](https://nginx.org/en/docs/ngx_mgmt_module.html#license_token) directive in the [`mgmt`](https://nginx.org/en/docs/ngx_mgmt_module.html) block of the configuration to point to your custom path:

```nginx
mgmt {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,22 @@ file:
- content/solutions/about-subscription-licenses.md
---

1. In the NGINX One Console, go to **Manage > Config Sync Groups**, then select your group.

If you haven't created a Config Sync Group yet, see [Manage Config Sync Groups]({{< ref "/nginx-one/nginx-configs/config-sync-groups/manage-config-sync-groups.md" >}}) for setup instructions.
2. Select the **Configuration** tab, then choose **Edit Configuration**.
3. Select **Add File**, then choose **New Configuration File**.
4. In the **File name** field, enter:

{{<call-out "note" "Before you begin">}}
Before you deploy with a Config Sync Group, you need to create one in the NGINX One Console.
If you haven’t created a group yet, see [Manage Config Sync Groups]({{< ref "/nginx-one/nginx-configs/config-sync-groups/manage-config-sync-groups.md" >}}) for instructions.
{{</call-out>}}

1. In the NGINX One Console, go to **Manage > Config Sync Groups**, then select your group.

2. Open the **Configuration** tab and select **Edit Configuration**.

3. Select **Add File**, then choose **New Configuration File**.

4. In the **File name** field, enter the exact path:
- On Linux: `/etc/nginx/license.jwt`
- On FreeBSD: `/usr/local/etc/nginx/license.jwt`
The name must be exact.
5. Paste the contents of your JWT license file into the editor.
6. Select **Next** to preview the diff, then **Save and Publish** to apply the update.

5. Paste the contents of your JWT license file into the editor.

6. Select **Next** to preview the changes, then choose **Save and Publish** to apply the update.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
docs:
---

Monitor the [NGINX error log](https://nginx.org/en/docs/ngx_core_module.html#error_log), typically located at `/var/log/nginx/error.log`, for subscription-related issues such as failed usage reports or approaching license expirations — to catch problems early and keep your subscription compliant.
Monitor the [NGINX error log](https://nginx.org/en/docs/ngx_core_module.html#error_log), usually at `/var/log/nginx/error.log`, to identify subscription issues early. The log records problems such as failed usage reports or licenses that are about to expire. Check it regularly to avoid downtime and stay compliant.

<br>
You can also use the [license API endpoint](https://demo.nginx.com/api/9/license) to check license status programmatically. For details, see the [ngx_http_api_module docs](https://nginx.org/en/docs/http/ngx_http_api_module.html#def_nginx_license_object).

Examples of subscription-related log entries include:
Examples of log entries:

- **Failure to upload usage reports**:
- **Failed usage reports:**

``` text
[error] 36387#36387: server returned 500 for <fqdn>:<port> during usage report
Expand All @@ -17,17 +17,19 @@ Examples of subscription-related log entries include:
[error] 38888#88: server returned 401 for <ip_address>:443 during usage report
```

- **License approaching expiration**:
- **License nearing expiration:**

``` text
[warn] license will expire in 14 days
```

- **License expiration**:
- **License expired:**

``` text
[alert] license expiry; grace period will end in 89 days
[emerg] license expired
```

{{< call-out "important" >}}When a license expires, NGINX Plus stops processing traffic.{{< /call-out >}}
{{< call-out "important" "Important" >}}
NGINX Plus stops processing traffic if the license has been expired for more than 90 days.
{{< /call-out >}}
29 changes: 15 additions & 14 deletions content/includes/licensing-and-reporting/reported-usage-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,39 @@
docs:
---

NGINX Plus automatically sends usage data to F5 every hour by default. This data is sent as a `POST` request and includes details like how much traffic is processed and how long the instance has been running. Here's an example of the data that's sent:
By default, NGINX Plus sends usage data to F5 every hour in a `POST` request. The report includes information such as traffic volume, runtime, and instance activity.

Here’s an example of a usage report:

```json
{
"version": "<nginx_version>",
"uuid": "<nginx_uuid>",
"nap": "<active/inactive>", // status of NGINX App Protect
"nap": "<active/inactive>", // NGINX App Protect status
"http": {
"client": {
"received": 0, // bytes received
"sent": 0, // bytes sent
"requests": 0 // number of HTTP requests processed
"sent": 0, // bytes sent
"requests": 0 // HTTP requests processed
},
"upstream": {
"received": 0, // bytes received
"sent": 0 // bytes sent
"sent": 0 // bytes sent
}
},
"stream": {
"client": {
"received": 0, // bytes received
"sent": 0 // bytes sent
"sent": 0 // bytes sent
},
"upstream": {
"received": 0, // bytes received
"sent": 0 // bytes sent
"sent": 0 // bytes sent
}
},
"workers": 0, // number of worker processes running
"uptime": 0, // number of seconds the instance has been running
"reloads": 0, // number of times the instance has been reloaded
"start_time": "epoch", // start time of data collection for the report
"end_time": "epoch" // end time of data collection for the report
}
```
"workers": 0, // number of worker processes running
"uptime": 0, // seconds the instance has been running
"reloads": 0, // number of reloads
"start_time": "epoch", // start of data collection
"end_time": "epoch" // end of data collection
}
25 changes: 21 additions & 4 deletions content/solutions/_index.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,29 @@
---
title: Subscription Licensing & Solutions
title: Subscription licensing & solutions
nd-docs: null
toc: true
weight: 1
nd-content-type: landing-page
nd-landing-page: true
---

This section provides information about managing subscription licenses for NGINX products. Learn about license requirements, how to handle common issues, and ensure compliance to keep systems running smoothly.
## Subscription licensing

{{<card-section showAsCards="true" isFeaturedSection="true">}}
{{<card title="Get started" titleUrl="about-subscription-licenses/getting-started/" icon="unplug" isFullSize="true">}}
Learn how NGINX Plus subscription licensing works, what’s required, and how to set up your environment.
{{</card >}}
{{</card-section>}}

{{<card-section showAsCards="true" >}}
{{<card title="Licensing workflows" titleUrl="about-subscription-licenses/nginx-plus-licensing-workflows/" icon="workflow" >}}
View flowcharts that show license validation and usage reporting checks at startup, renewal, and during operation.
{{</card>}}
{{<card title="Instructional videos" titleUrl="about-subscription-licenses/instructional-videos/" icon="youtube" >}}
Watch step-by-step videos on sending usage reports and installing or upgrading NGINX Plus.
{{</ card >}}
{{</card-section>}}



### Topics in this section:

- [About subscription licenses]({{< ref "solutions/about-subscription-licenses.md" >}})
Loading