Skip to content
Draft
Show file tree
Hide file tree
Changes from 5 commits
Commits
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
4 changes: 2 additions & 2 deletions content/includes/nginxaas-azure/ncu-description.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ An NGINX Capacity Unit (NCU) quantifies the capacity of an NGINX instance based
An NGINX Capacity Unit consists of the following parameters:

* CPU: an NCU provides 20 [Azure Compute Units](https://learn.microsoft.com/en-us/azure/virtual-machines/acu) (ACUs)
* Bandwidth: an NCU provides 60 Mbps of network throughput
* Concurrent connections: an NCU provides 400 concurrent connections. This performance is not guaranteed when F5 WAF for NGINX is used with NGINXaaS
* Bandwidth: an NCU provides 2.2 Mbps of network throughput
* Concurrent connections: an NCU provides 3000 concurrent connections. This performance is not guaranteed when F5 WAF for NGINX is used with NGINXaaS
3 changes: 2 additions & 1 deletion content/nginxaas-azure/app-protect/enable-waf.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ type:
This guide explains how to enable F5 WAF for NGINX on a F5 NGINX as a Service for Azure (NGINXaaS) deployment. [F5 WAF for NGINX](https://docs.nginx.com/nginx-app-protect-waf/v5) provides web application firewall (WAF) security protection for your web applications, including OWASP Top 10; response inspection; Meta characters check; HTTP protocol compliance; evasion techniques; disallowed file types; JSON & XML well-formedness; sensitive parameters & Data Guard.

## Before you start
- F5 WAF for NGINX can only be enabled on NGINXaaS for Azure deployments with the **Standard v2** [plan]({{< ref "/nginxaas-azure/billing/overview.md" >}})

- F5 WAF for NGINX can only be enabled on NGINXaaS for Azure deployments with the **Standard v2** and **Standard v3** [plan]({{< ref "/nginxaas-azure/billing/overview.md" >}})

## Enable F5 WAF for NGINX

Expand Down
34 changes: 28 additions & 6 deletions content/nginxaas-azure/billing/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,18 @@ NGINXaaS for Azure is billed monthly based on hourly consumption.

F5 NGINXaaS for Azure (NGINXaaS) provides two pricing plans.

### Standard V3 plan

The Standard V3 plan is an upgraded, purpose-built solution for modern enterprises looking to simplify application traffic management and scale workloads effortlessly. This improved plan offers a [99.95% uptime SLA](https://www.f5.com/pdf/customer-support/eusa-sla.pdf), high availability through active-active deployments, redundancy, lossless rolling upgrades, and dynamic autoscaling capabilities to optimize both performance and cost.

The Standard V3 plan introduces dynamic autoscaling that ensures consumption pricing - customers pay only for what they use. Each NGINX Capacity Unit (NCU) delivers 2.2 Mbps bandwidth and 3,000 connections, providing unmatched flexibility and scalability to suit diverse workloads.

The Standard V3 pricing model is designed to optimize efficiency and transparency: customers benefit from an affordable fixed price per deployment ($0.25/hour) that covers baseline overhead, while NCU usage ($0.008/hour/unit) and data processing ($0.005/GB) allow costs to scale precisely with demand. NGINXaaS is a consumption-based service, metered hourly, and billed monthly in NGINX Capacity Units (NCUs).

The SKU for the Standard V3 pricing plan is `standardv3_Monthly`.

The Standard V3 plan allows for optional Web Application Firewall (WAF) configuration and a higher number of listen ports, offering enhanced security and connectivity options for enterprise applications.

Comment on lines +19 to +30
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets run this by Sundar and check if he is okay with this description. I would rephrase this to make it more human written.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I took this description from this confluence doc. I will check with sundar on this.

### Standard V2 plan

The Standard V2 plan is designed for production workloads offering a [99.95% uptime SLA](https://www.f5.com/pdf/customer-support/eusa-sla.pdf), high availability through active-active deployments, redundancy, autoscaling, lossless rolling upgrades, and more. Choosing the Standard V2 plan will result in billing based on metered consumption of NGINX Capacity Units (NCU).
Expand Down Expand Up @@ -44,22 +56,32 @@ The SKU for the Basic pricing plan is `basic_Monthly`.

Each NCU provisioned (not consumed) is billed at the rate specified on the [Azure Marketplace Offer](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/f5-networks.f5-nginx-for-azure?tab=Overview). The minimum usage interval is 1 hour, and the maximum provisioned NCU size is billed for that hour.

*Billing Example 1*: "I provisioned a 20 NCU NGINXaaS deployment in East US 2 at 9:04AM and then deleted it at 10:45AM."
*Billing Example 1*: "I provisioned a 20 NCU NGINXaaS deployment in East US 2 at 9:04AM and then deleted it at 10:45AM. Assuming 1GB data processed"

* The hourly rate in East US 2 is `$0.03/NCU/hour`.
* The hourly fixed price per deployment is `$0.25/hour`
* The hourly NCU rate in East US 2 is `$0.008/NCU/hour`
* The data processing price is `$0.005/GB`
* 9:00 hour: `20 NCU·hour`
* 10:00 hour: `20 NCU·hour`
* Total NCU·hours: `40 NCU·hour`
* Total: `40 NCU·hour * $0.03/NCU/hour = $1.20`.
* Fixed deployment cost: `2 hours * $0.25/hour = $0.50`
* NCU usage cost: `40 NCU·hour * $0.008/NCU/hour = $0.32`
* Data processing cost: `1 GB * $0.0096/GB = $0.005`
Copy link
Contributor

@russokj russokj Nov 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The math looks wrong for data processing cost, or I don't quite understand it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I forgot replacing $0.0096 with $0.005.
The correct value updated is : Data processing cost: 1 GB * $0.005/GB = $0.005``

* Total: `$0.50 + $0.32 + $0.005 = $0.87`

*Billing Example 2*: "I provisioned a 40 NCU NGINXaaS deployment in West Europe at 9:34AM. At 10:04AM I resized it to 20 NCUs. I then deleted it at 11:45AM."
*Billing Example 2*: "I provisioned a 40 NCU NGINXaaS deployment in West Europe at 9:34AM. At 10:04AM I resized it to 20 NCUs. I then deleted it at 11:45AM. Assuming 2.5GB data processed"

* The hourly rate in West Europe is `$0.05/NCU/hour`.
* The hourly fixed price per deployment is `$0.25/hour`
* The hourly NCU rate in West Europe is `$0.008/NCU/hour`
* The data processing price is `$0.005/GB`
* 9:00 hour: `40 NCU·hour`
* 10:00 hour: `40 NCU·hour`
* 11:00 hour: `20 NCU·hour`
* Total NCU·hours: `100 NCU·hour`
* Total: `100 NCU·hours * 0.05$/NCU/hour = $5.00`.
* Fixed deployment cost: `3 hours * $0.25/hour = $0.75`
* NCU usage cost: `100 NCU·hour * $0.008/NCU/hour = $0.80`
* Data processing cost: `2.5 GB * $0.005/GB = $0.125`
* Total: `$0.75 + $0.80 + $0.125 = $1.675`

{{< call-out "note" >}}Further guidance:
* For how many NCUs should you provision and how to scale to match workload, see the [Scaling Guidance]({{< ref "/nginxaas-azure/quickstart/scaling.md" >}})
Expand Down
23 changes: 18 additions & 5 deletions content/nginxaas-azure/billing/usage-and-cost-estimator.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type:
<link rel="stylesheet" href="/nginxaas-azure/css/cost-calculator_v2.css">
<div id="calculator" data-testid="calculator">
<h3 id="calculator-section-heading" data-testid="calculator-section-heading">
Cost Estimation for Standard V2 Plan
Cost Estimation for Standard V3 Plan
<button id="printButton">Print Estimate</button>
</h3>
<div class="section" data-testid="calculator-section-content">
Expand Down Expand Up @@ -99,10 +99,16 @@ Max(
</div>
<div class="form-field">
<label for="numListenPorts">
Listen Ports <span class="label-details">- first 5 are included</span>
Listen Ports <span class="label-details">- first 5 are included (1 additional port = 2 NCU)</span>
</label>
<input id="numListenPorts" data-testid="input-numListenPorts" type="number"/>
</div>
<div class="form-field">
<label for="dataProcessedGB">
Data Processed <span class="label-details">- GB per month</span>
</label>
<input id="dataProcessedGB" data-testid="input-dataProcessedGB" type="number" min="0" />
</div>
<div class="form-field">
<label for="isWAF">
Utilize WAF <span class="label-details"></span>
Expand All @@ -121,20 +127,27 @@ Max(
<summary>Show calculations</summary>
<div class="details-content">
<div class="details-section">
<h5>Standard V3 Pricing Components:</h5>
<p class="math">
<var id="cost-detail-hours"></var> hours * ((<var id="cost-detail-ncus"></var> NCUs * <var id="cost-detail-tier-cost"></var> per NCU per hour) + <var id="cost-detail-listen-ports"></var> additional listen ports * <var id="cost-detail-listen-ports-cost"></var>) = <var id="cost-detail-total"></var>
</br>
<var id="cost-detail-hours"></var> hours × (<var id="cost-detail-deployment-fee"></var> fixed deployment + <var id="cost-detail-ncus"></var> NCUs × <var id="cost-detail-tier-cost"></var> per NCU per hour + <var id="cost-detail-listen-ports"></var> additional listen ports × 2 NCUs × <var id="cost-detail-listen-ports-cost"></var>) +
<var id="cost-detail-data-processed"></var> GB × <var id="cost-detail-data-processing-cost"></var> per GB<br/>
<strong>Total:</strong> <var id="cost-detail-total"></var>
</p>
</div>
<div class="details-section">
<h5>Regional Pricing:</h5>
<table class="math" id="tiers-costs-table">
<tr>
<th>Region</th>
<th>Tier</th>
<th>Cost per NCU/hr</th>
<th>NCU Cost/hr (No WAF)</th>
<th>NCU Cost/hr (With WAF)</th>
<th>Fixed Deployment/hr (No WAF)</th>
<th>Fixed Deployment/hr (With WAF)</th>
</tr>
<!-- tier costs data appended here -->
</table>
<p><em>Note: Deployment fees and NCU costs vary by region tier and WAF usage. Data processing cost is $0.005/GB across all configurations.</em></p>
</div>
</div>
</details>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ az nginx deployment create --deployment-name

```shell
az nginx deployment create --name myDeployment --resource-group \
myResourceGroup --location eastus2 --sku name="standardv2_Monthly" \
myResourceGroup --location eastus2 --sku name="standardv3_Monthly" \
--network-profile front-end-ip-configuration="{public-ip-addresses:[{id:/subscriptions/mySubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP}]}" \
network-interface-configuration="{subnet-id:/subscriptions/mySubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
```
Expand All @@ -51,15 +51,15 @@ az nginx deployment create --deployment-name
```shell
az nginx deployment create --name myDeployment --resource-group \
myResourceGroup --location eastus2 --sku \
name="standardv2_Monthly" --network-profile \
name="standardv3_Monthly" --network-profile \
front-end-ip-configuration="{private-ip-addresses:[{private-ip-allocation-method:Static,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:10.0.0.2}]}" \
network-interface-configuration="{subnet-id:/subscriptions/mySubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
```

```shell
az nginx deployment create --name myDeployment --resource-group \
myResourceGroup --location eastus2 --sku \
name="standardv2_Monthly" --network-profile \
name="standardv3_Monthly" --network-profile \
front-end-ip-configuration="{private-ip-addresses:[{private-ip-allocation-method:Dynamic,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:10.0.0.2}]}" \
network-interface-configuration="{subnet-id:/subscriptions/mySubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
```
Expand All @@ -68,7 +68,7 @@ az nginx deployment create --deployment-name

```shell
az nginx deployment create --name myDeployment --resource-group \
myResourceGroup --location eastus2 --sku name="standardv2_Monthly" \
myResourceGroup --location eastus2 --sku name="standardv3_Monthly" \
--network-profile front-end-ip-configuration="{public-ip-addresses:[{id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/pubIPv4},{id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/pubIPv6}]}" \
network-interface-configuration="{subnet-id:/subscriptions/mySubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
```
Expand All @@ -78,7 +78,7 @@ az nginx deployment create --deployment-name
```shell
az nginx deployment create --name myDeployment --resource-group \
myResourceGroup --location eastus2 --sku \
name="standardv2_Monthly" --network-profile \
name="standardv3_Monthly" --network-profile \
front-end-ip-configuration="{private-ip-addresses:[{private-ip-allocation-method:Static,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:10.0.0.2},{private-ip-allocation-method:Static,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:2001:0db8:85a3:0000:0000:8a2e:0370:7334}]}" \
network-interface-configuration="{subnet-id:/subscriptions/mySubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
```
Expand All @@ -87,7 +87,7 @@ az nginx deployment create --deployment-name

```shell
az nginx deployment create --deployment-name myDeployment --resource-group \
myResourceGroup --location eastus2 --sku name=standardv2_Monthly \
myResourceGroup --location eastus2 --sku name=standardv3_Monthly \
--network-profile \
network-interface-configuration='{subnet-id:/subscriptions/subscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/vnet-azclitest/subnets/mySubnet}' \
front-end-ip-configuration='{public-ip-addresses:[{id:/subscriptions/subscriptionId/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP}]}' \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ You can start the NGINXaaS deployment process by visiting the [Create NGINXaaS](
| Resource group | Specify whether you want to create a new resource group or use an existing one.<br> For more information, see [Azure Resource Group overview](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/overview). |
| Name | Provide a unique name for your deployment. |
| Region | Select the region you want to deploy to. |
| Pricing Plan | Select the Standard V2 plan. For more information, see [Pricing Plans]({{< ref "/nginxaas-azure/billing/overview.md#pricing-plans">}}) |
| Pricing Plan | Select the Standard V3 plan. For more information, see [Pricing Plans]({{< ref "/nginxaas-azure/billing/overview.md#pricing-plans">}}) |
| Scaling | Select Manual to set the capacity of your deployment in NCUs or select Autoscale to automatically adjust the capacity of your deployment. Learn more about NCUs in [Scaling Guidance]({{< ref "/nginxaas-azure/quickstart/scaling.md" >}}). |
| Email | Provide an email address that can be notified about service alerts, maintenance data and activity reports. |
| Upgrade Channel | Select the desired upgrade channel for your deployment. For more information, see [Upgrade Channels]({{< ref "/nginxaas-azure/quickstart/upgrade-channels.md" >}}). |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Some directives cannot be overridden by the user provided configuration.
|------------------ | ----------------------- | -----------------|
| `user` | `nginx` | The `nginx` user has the correct permissions for accessing certificates, policy files and other auxfiles. |
| `worker_processes` | `auto` | Set to `auto` to automatically set `worker_processes` to the number of CPU cores. |
| `worker_connections` | <ul><li>Standard V2 plan `4000`</li><li>basic plan `100`</li></ul> | To ensure reasonable performance of the NGINXaaS deployment for Standard V2 plan, the `worker_connections` is fixed at 400/NCU; for basic plan this is set lower.<br><br> Changing the value in the config has no effect on the NGINX process in the deployment. |
| `worker_connections` | <ul><li>Standard V3 plan `30000`</li><li>basic plan `3000`</li></ul> | To ensure reasonable performance of the NGINXaaS deployment for Standard V3 plan, the `worker_connections` is fixed at 3000/NCU; for basic plan this is set lower.<br><br> Changing the value in the config has no effect on the NGINX process in the deployment. |
| `pid` | `/run/nginx/nginx.pid` | Set to this value to allow NGINXaaS to automatically manage the NGINX master process. |
| `daemon` | `on` | Automatically set to `on` to allow NGINXaaS to manage the NGINX master process. |
| `master_process` | `on` | This directive is intended for NGINX developers. |
Expand All @@ -84,7 +84,7 @@ Some directives cannot be overridden by the user provided configuration.

- The [Basic]({{< ref "/nginxaas-azure/billing/overview.md#basic-plan" >}}) plan (and the deprecated Standard (v1) plan) supports a maximum of 5 listen ports in the NGINX configuration. Configurations that specify over 5 unique ports are rejected.

- The [Standard V2]({{< ref "/nginxaas-azure/billing/overview.md#standard-v2-plan" >}}) plan allow users to listen on more than 5 ports. The first five ports under this plan come at no extra cost and there are charges for each additional port utilized.
- The [Standard V3]({{< ref "/nginxaas-azure/billing/overview.md#standard-v3-plan" >}}) plan allow users to listen on more than 5 ports. The first five ports under this plan come at no extra cost and there are charges for each additional port utilized.

## Configuration directives list

Expand Down
2 changes: 1 addition & 1 deletion content/nginxaas-azure/overview/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ NGINXaaS for Azure is supported in the following regions:

### Redundancy

With the Standard V2 Plan, NGINXaaS uses the following redundancy features to keep your service available.
With the Standard V3 Plan, NGINXaaS uses the following redundancy features to keep your service available.

- We run _at least_ two NGINX Plus instances for each deployment in an active-active pattern
- NGINX Plus is constantly monitored for health. Any unhealthy instances are replaced with new ones
Expand Down
Loading