diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index f08087005..a74e38c32 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -26,8 +26,8 @@ content/nginx/nms/agent/* @nginx/nginx-agent
content/nap-dos/* @nginx/dos-docs-approvers
# F5 WAF for NGINX
-content/nap-waf/* @nginx/nap-docs-approvers
-data/nap-waf/* @nginx/nap-docs-approvers
+content/waf/* @nginx/waf
+content/includes/waf/* @nginx/waf
# NGINXaaS for Azure
content/nginxaas-azure/* @nginx/n4a-docs-approvers
diff --git a/content/agent/configuration/configuration-overview.md b/content/agent/configuration/configuration-overview.md
index 0a85eede6..22a602330 100644
--- a/content/agent/configuration/configuration-overview.md
+++ b/content/agent/configuration/configuration-overview.md
@@ -3,8 +3,9 @@ title: Basic configuration
draft: false
weight: 100
toc: true
-nd-docs: DOCS-1229
nd-content-type: how-to
+nd-product: Agent
+nd-docs: DOCS-1229
---
The following sections explain how to configure NGINX Agent using configuration files, CLI flags, and environment variables.
@@ -27,8 +28,7 @@ The default locations of configuration files for NGINX Agent are `/etc/nginx-age
Examples of the configuration files are provided below:
-
- example nginx-agent.conf
+{{< details summary="Open nginx-agent.conf example">}}
{{< call-out "note" >}}
In the following example `nginx-agent.conf` file, you can change the `server.host` and `server.grpcPort` to connect to the control plane.
@@ -112,11 +112,9 @@ nginx_app_protect:
precompiled_publication: true
```
-
-
+{{< /details >}}
-
- example dynamic-agent.conf
+{{< details summary="Open dynamic-agent.conf example">}}
{{< call-out "note" >}}
Default location in Linux environments: `/var/lib/nginx-agent/agent-dynamic.conf`
@@ -146,7 +144,7 @@ tags:
- qa
```
-
+{{< /details >}}
## CLI Flags & Environment Variables
@@ -239,8 +237,7 @@ Default location in FreeBSD environments: `/var/db/nginx-agent/agent-dynamic.con
By default, NGINX Agent rotates logs daily using logrotate with the following configuration:
-
- NGINX Agent Logrotate Configuration
+{{< details summary="Logrotate configuration example" >}}
``` yaml
/var/log/nginx-agent/*.log
@@ -263,7 +260,7 @@ By default, NGINX Agent rotates logs daily using logrotate with the following co
notifempty
}
```
-
+{{< /details >}}
If you need to change the default configuration, update the file at `/etc/logrotate.d/nginx-agent`.
diff --git a/content/includes/nim/disconnected/license-usage-offline-script.md b/content/includes/nim/disconnected/license-usage-offline-script.md
index 72a5e49e0..5fd325aee 100644
--- a/content/includes/nim/disconnected/license-usage-offline-script.md
+++ b/content/includes/nim/disconnected/license-usage-offline-script.md
@@ -2,10 +2,9 @@
nd-docs: "DOCS-1662"
---
-
-View the full contents of the license_usage_offline.sh script
+{{< details summary="Full license_usage_offline.sh script" >}}
-``` bash
+```shell
#!/bin/bash
# Function to encode the username and password to base64
@@ -413,4 +412,4 @@ curl --insecure --location "https://$ip_address/api/platform/v1/report/upload" \
echo "Report acknowledgement successfully uploaded to NGINX Instance Manager $ip_address."
```
-
+{{< /details >}}
diff --git a/content/ngf/install/helm.md b/content/ngf/install/helm.md
index a7e08fe01..0daf283e5 100644
--- a/content/ngf/install/helm.md
+++ b/content/ngf/install/helm.md
@@ -22,8 +22,7 @@ To complete this guide, you will need:
{{< call-out "important" >}} If you’d like to use NGINX Plus, some additional setup is also required: {{< /call-out >}}
-
-NGINX Plus JWT setup
+{{< details summary="NGINX Plus JWT setup" >}}
{{< include "/ngf/installation/jwt-password-note.md" >}}
@@ -41,7 +40,7 @@ To complete this guide, you will need:
{{< call-out "note" >}} For more information on why this is needed and additional configuration options, including how to report to NGINX Instance Manager instead, see the [NGINX Plus Image and JWT Requirement]({{< ref "/ngf/install/nginx-plus.md" >}}) document. {{< /call-out >}}
-
+{{< /details >}}
## Deploy NGINX Gateway Fabric
diff --git a/content/ngf/install/manifests.md b/content/ngf/install/manifests.md
index 3a7552e6d..c656b3798 100644
--- a/content/ngf/install/manifests.md
+++ b/content/ngf/install/manifests.md
@@ -20,8 +20,7 @@ To complete this guide, you'll need to install:
{{< call-out "important" >}} If you’d like to use NGINX Plus, some additional setup is also required: {{< /call-out >}}
-
-NGINX Plus JWT setup
+{{< details summary="NGINX Plus JWT setup" >}}
{{< include "/ngf/installation/jwt-password-note.md" >}}
@@ -39,7 +38,7 @@ To complete this guide, you'll need to install:
{{< call-out "note" >}} For more information on why this is needed and additional configuration options, including how to report to NGINX Instance Manager instead, see the [NGINX Plus Image and JWT Requirement]({{< ref "/ngf/install/nginx-plus.md" >}}) document. {{< /call-out >}}
-
+{{< /details >}}
## Deploy NGINX Gateway Fabric
diff --git a/content/nginx-one/agent/install-upgrade/install-from-oss-repo.md b/content/nginx-one/agent/install-upgrade/install-from-oss-repo.md
index f0bf93874..1fa08aaf7 100644
--- a/content/nginx-one/agent/install-upgrade/install-from-oss-repo.md
+++ b/content/nginx-one/agent/install-upgrade/install-from-oss-repo.md
@@ -29,59 +29,53 @@ Before you install NGINX Agent for the first time on your system, you need to se
up the `nginx-agent` packages repository. Afterward, you can install and update
NGINX Agent from the repository.
-
-Install NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
-
-### Install NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
+### Install NGINX Agent on Alpine Linux
-{{< include "/agent/installation/oss/oss-rhel.md" >}}
+{{< details summary="Expand instructions" >}}
-
+{{< include "/agent/installation/oss/oss-alpine.md" >}}
-
-Install NGINX Agent on Ubuntu
+{{< /details >}}
-### Install NGINX Agent on Ubuntu
+### Install NGINX Agent on Amazon Linux
-{{< include "/agent/installation/oss/oss-ubuntu.md" >}}
+{{< details summary="Expand instructions" >}}
-
+{{< include "/agent/installation/oss/oss-amazon-linux.md" >}}
-
-Install NGINX Agent on Debian
+{{< /details >}}
### Install NGINX Agent on Debian
+{{< details summary="Expand instructions" >}}
+
{{< include "/agent/installation/oss/oss-debian.md" >}}
-
+{{< /details >}}
-
-Install NGINX Agent on SLES
+### Install NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
-### Install NGINX Agent on SLES
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/oss/oss-sles.md" >}}
+{{< include "/agent/installation/oss/oss-rhel.md" >}}
-
+{{< /details >}}
-
-Install NGINX Agent on Alpine Linux
+### Install NGINX Agent on SLES
-### Install NGINX Agent on Alpine Linux
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/oss/oss-alpine.md" >}}
+{{< include "/agent/installation/oss/oss-sles.md" >}}
-
+{{< /details >}}
-
-Install NGINX Agent on Amazon Linux
+### Install NGINX Agent on Ubuntu
-### Install NGINX Agent on Amazon Linux
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/oss/oss-amazon-linux.md" >}}
+{{< include "/agent/installation/oss/oss-ubuntu.md" >}}
-
+{{< /details >}}
### Manually connect NGINX Agent to NGINX One Console
diff --git a/content/nginx-one/agent/install-upgrade/install-from-plus-repo.md b/content/nginx-one/agent/install-upgrade/install-from-plus-repo.md
index 726814b19..939f16a4f 100644
--- a/content/nginx-one/agent/install-upgrade/install-from-plus-repo.md
+++ b/content/nginx-one/agent/install-upgrade/install-from-plus-repo.md
@@ -2,7 +2,8 @@
title: Install from NGINX Plus repo
toc: true
weight: 200
-docs: DOCS-000
+nd-content-type: how-to
+nd-product: NGINX One
nd-docs: DOCS-1877
---
@@ -16,7 +17,7 @@ For a quick guide on how to connect your instance to NGINX One Console see: [Con
## Overview
-Follow the steps in this guide to install NGINX Agent in your NGINX instance using
+Follow the steps in this guide to install F5 NGINX Agent in your NGINX instance using
the NGINX Plus repository.
## Before you begin
@@ -29,59 +30,53 @@ Before you install NGINX Agent for the first time on your system, you need to
set up the `nginx-agent` packages repository. Afterward, you can install and update
NGINX Agent from the repository.
+### Install NGINX Agent on Alpine Linux
-
-Install NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
+{{< details summary="Expand instructions" >}}
-### Install NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
-
-{{< include "/agent/installation/plus/plus-rhel.md" >}}
+{{< include "/agent/installation/plus/plus-alpine.md" >}}
-
+{{< /details >}}
-
-Install NGINX Agent on Ubuntu
+### Install NGINX Agent on Amazon Linux
-### Install NGINX Agent on Ubuntu
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/plus/plus-ubuntu.md" >}}
+{{< include "/agent/installation/plus/plus-amazon-linux.md" >}}
-
+{{< /details >}}
-
-Install NGINX Agent on Debian
+### Install NGINX Agent on Debian
-### Install NGINX Agent on Debian
+{{< details summary="Expand instructions" >}}
{{< include "/agent/installation/plus/plus-debian.md" >}}
-
+{{< /details >}}
-
-Install NGINX Agent on SLES
+### Install NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
-### Install NGINX Agent on SLES
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/plus/plus-sles.md" >}}
+{{< include "/agent/installation/plus/plus-rhel.md" >}}
-
+{{< /details >}}
-
-Install NGINX Agent on Alpine Linux
+### Install NGINX Agent on SLES
-### Install NGINX Agent on Alpine Linux
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/plus/plus-alpine.md" >}}
+{{< include "/agent/installation/plus/plus-sles.md" >}}
-
-
-Install NGINX Agent on Amazon Linux
+{{< /details >}}
-### Install NGINX Agent on Amazon Linux
+### Install NGINX Agent on Ubuntu
-{{< include "/agent/installation/plus/plus-amazon-linux.md" >}}
+{{< details summary="Expand instructions" >}}
+
+{{< include "/agent/installation/plus/plus-ubuntu.md" >}}
-
+{{< /details >}}
### Manually connect NGINX Agent to NGINX One Console
diff --git a/content/nginx-one/agent/install-upgrade/uninstall.md b/content/nginx-one/agent/install-upgrade/uninstall.md
index 0a4137c09..27330e0ce 100644
--- a/content/nginx-one/agent/install-upgrade/uninstall.md
+++ b/content/nginx-one/agent/install-upgrade/uninstall.md
@@ -1,8 +1,9 @@
---
title: Uninstall NGINX Agent
-toc: true
+toc: false
weight: 500
-docs: DOCS-000
+nd-content-type: how-to
+nd-product: NGINX One
nd-docs: DOCS-1874
---
@@ -18,56 +19,52 @@ The user following performing the uninstall steps needs to have `root` privilege
Complete the following steps on each host where you've installed NGINX Agent
-
-Uninstall NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
-
-### Uninstall NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
+### Uninstall NGINX Agent on Alpine Linux
-{{< include "/agent/installation/uninstall/uninstall-rhel.md" >}}
+{{< details summary="Expand instructions" >}}
-
+{{< include "/agent/installation/uninstall/uninstall-alpine.md" >}}
-
-Uninstall NGINX Agent on Ubuntu
+{{< /details >}}
-### Uninstall NGINX Agent on Ubuntu
+### Uninstall NGINX Agent on Amazon Linux
-{{< include "/agent/installation/uninstall/uninstall-ubuntu.md" >}}
+{{< details summary="Expand instructions" >}}
-
+{{< include "/agent/installation/uninstall/uninstall-amazon-linux.md" >}}
-
-Uninstall NGINX Agent on Debian
+{{< /details >}}
### Uninstall NGINX Agent on Debian
+{{< details summary="Expand instructions" >}}
+
{{< include "/agent/installation/uninstall/uninstall-debian.md" >}}
-
+{{< /details >}}
-
-Uninstall NGINX Agent on SLES
+### Uninstall NGINX Agent on RHEL, CentOS, Rocky Linux, AlmaLinux, and Oracle Linux
-### Uninstall NGINX Agent on SLES
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/uninstall/uninstall-sles.md" >}}
+{{< include "/agent/installation/uninstall/uninstall-rhel.md" >}}
-
+{{< /details >}}
-
-Uninstall NGINX Agent on Alpine Linux
+### Uninstall NGINX Agent on SLES
-### Uninstall NGINX Agent on Alpine Linux
+{{< details summary="Expand instructions" >}}
-{{< include "/agent/installation/uninstall/uninstall-alpine.md" >}}
+{{< include "/agent/installation/uninstall/uninstall-sles.md" >}}
-
+{{< /details >}}
-
-Uninstall NGINX Agent on Amazon Linux
+### Uninstall NGINX Agent on Ubuntu
-### Uninstall NGINX Agent on Amazon Linux
+{{< details summary="Expand instructions" >}}
+
+{{< include "/agent/installation/uninstall/uninstall-ubuntu.md" >}}
+
+{{< /details >}}
-{{< include "/agent/installation/uninstall/uninstall-amazon-linux.md" >}}
-
diff --git a/content/nginx-one/getting-started.md b/content/nginx-one/getting-started.md
index e21753600..ca2d4a061 100644
--- a/content/nginx-one/getting-started.md
+++ b/content/nginx-one/getting-started.md
@@ -2,8 +2,8 @@
title: Get started
toc: true
weight: 100
-type: how-to
-product: NGINX One
+nd-content-type: how-to
+nd-product: NGINX One
---
The F5 NGINX One Console makes it easy to manage NGINX instances across locations and environments. The console lets you monitor and control your NGINX fleet from one place—you can check configurations, track performance metrics, identify security vulnerabilities, manage SSL certificates, and more.
@@ -26,12 +26,10 @@ NGINX One offers the following key benefits:
If you already have accessed F5 Distributed Cloud and have NGINX instances available, you can skip these sections and start to [Add your NGINX instances to NGINX One](#add-your-nginx-instances-to-nginx-one). Otherwise, take these steps to "onboard" yourself to NGINX One Console.
-
-If you want to register for a trial
+{{< details summary="Register for a trial" >}}
### Register for a trial subscription
-
If you want to register for a trial, navigate to https://account.f5.com/myf5. If needed, select **Sign up** to get an account. Then follow these steps:
1. Navigate to https://account.f5.com/myf5 and log in.
@@ -39,44 +37,36 @@ If you want to register for a trial, navigate to https://account.f5.com/myf5. If
1. Find **F5 NGINX**. Sign up for the trial.
1. The trial may require approval.
-
+{{< /details >}}
-
-Confirm access to the F5 Distributed Cloud
+{{< details summary="Confirm access to the F5 Distributed Cloud" >}}
### Confirm access to the F5 Distributed Cloud
{{< include "/nginx-one/cloud-access.md" >}}
-
+{{< /details >}}
-
-Confirm access to NGINX One Console
+{{< details summary="Confirm access to NGINX One Console" >}}
### Confirm access to NGINX One Console
{{< include "/nginx-one/cloud-access-nginx.md" >}}
-
+{{< /details >}}
-
-Install an instance of NGINX
+{{< details summary="Install an NGINX instance" >}}
### Install an instance of NGINX
{{< include "/nginx-one/install-nginx.md" >}}
-
+{{< /details >}}
-
-Make sure you're running a supported Linux distribution
-
-NGINX Agent sets up communication between your NGINX Instance and NGINX One Console. Make sure your Linux operating system is listed below. The installation script for NGINX Agent is compatible with these distributions and versions.
+{{< details summary="Check you're running a supported Linux distribution" >}}
### NGINX Agent installation script: supported distributions
-{{}}
-
| Distribution | Version | Architecture |
|------------------------------|----------------------|-----------------|
| AlmaLinux | 8, 9 | x86_64, aarch64 |
@@ -90,13 +80,7 @@ NGINX Agent sets up communication between your NGINX Instance and NGINX One Cons
| Rocky Linux | 8, 9 | x86_64, aarch64 |
| Ubuntu | 20.04 LTS, 22.04 LTS | x86_64, aarch64 |
-{{}}
-
-
-
-
-
----
+{{< /details >}}
## Add your NGINX instances to NGINX One
diff --git a/content/nginx/admin-guide/installing-nginx/installing-nginx-plus.md b/content/nginx/admin-guide/installing-nginx/installing-nginx-plus.md
index 4a174b64b..02dea81e7 100644
--- a/content/nginx/admin-guide/installing-nginx/installing-nginx-plus.md
+++ b/content/nginx/admin-guide/installing-nginx/installing-nginx-plus.md
@@ -1,12 +1,12 @@
---
+title: Installing NGINX Plus
description: Install and upgrade F5 NGINX Plus with step-by-step instructions for
the base package and dynamic modules on all supported Linux distributions.
-nd-docs: DOCS-414
-title: Installing NGINX Plus
toc: true
weight: 100
-type:
-- how-to
+nd-content-type: how-to
+nd-product: NGINX+
+nd-docs: DOCS-414
---
This article explains how to install NGINX Plus on different operating systems, upgrade existing NGINX Plus installation, install and enable dynamic modules, install in rootless mode or when offline.
@@ -98,10 +98,13 @@ This article explains how to install NGINX Plus on different operating systems,
sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/nginx-plus-8.repo
```
-
- Learn how to pin NGINX Plus to a specific version
- {{}}{{< include "nginx-plus/install/pin-to-version/pin-rhel8-R32.md" >}}{{}}
-
+ {{< details summary="Pin NGINX Plus to a specific version" >}}
+
+ {{< call-out "note">}}
+ {{< include "nginx-plus/install/pin-to-version/pin-rhel8-R32.md" >}}
+ {{< /call-out >}}
+
+ {{< /details >}}
1. {{< include "nginx-plus/install/install-nginx-plus-package-dnf.md" >}}
@@ -135,10 +138,13 @@ This article explains how to install NGINX Plus on different operating systems,
sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/plus-9.repo
```
-
- Learn how to pin NGINX Plus to a specific version
- {{}}{{< include "nginx-plus/install/pin-to-version/pin-rhel9-R32.md" >}}{{}}
-
+ {{< details summary="Pin NGINX Plus to a specific version" >}}
+
+ {{< call-out "note">}}
+ {{< include "nginx-plus/install/pin-to-version/pin-rhel9-R32.md" >}}
+ {{< /call-out >}}
+
+ {{< /details >}}
1. {{< include "nginx-plus/install/install-nginx-plus-package-dnf.md" >}}
@@ -216,10 +222,13 @@ NGINX Plus can be installed on the following versions of Debian or Ubuntu:
| sudo tee /etc/apt/sources.list.d/nginx-plus.list
```
-
- Learn how to pin NGINX Plus to a specific version
- {{}}{{< include "nginx-plus/install/pin-to-version/pin-debian-ubuntu-R32.md" >}}{{}}
-
+ {{< details summary="Pin NGINX Plus to a specific version" >}}
+
+ {{< call-out "note">}}
+ {{< include "nginx-plus/install/pin-to-version/pin-debian-ubuntu-R32.md" >}}
+ {{< /call-out >}}
+
+ {{< /details >}}
1. Download the **nginx-plus** apt configuration to **/etc/apt/apt.conf.d**:
diff --git a/content/nginxaas-azure/disaster-recovery.md b/content/nginxaas-azure/disaster-recovery.md
index afa5d8927..675ca4c06 100644
--- a/content/nginxaas-azure/disaster-recovery.md
+++ b/content/nginxaas-azure/disaster-recovery.md
@@ -1,29 +1,23 @@
---
title: Disaster recovery
-weight: 650
-toc: true
url: /nginxaas/azure/disaster-recovery/
-type:
-- how-to
+toc: true
+weight: 650
+nd-content-type: how-to
+nd-product: N4Azure
---
-
This guide describes how to configure disaster recovery (DR) for F5 NGINXaaS for Azure deployments in separate (ideally [paired](https://learn.microsoft.com/en-us/azure/reliability/regions-paired)) Azure regions, ensuring upstream access remains available even if the primary NGINXaaS deployment in a region fails. The deployment architecture ensures users can access backend application servers (upstreams) continuously from an alternative region if the primary NGINXaaS deployment becomes unavailable. The solution leverages Terraform, Azure Traffic Manager, Azure Virtual Network (VNet) peering, and unique subnets to support failover.
----
-
**Architecture Overview**
{{< img src="nginxaas-azure/n4a-dr-topology.png" alt="The diagram illustrates the configuration of F5 NGINXaaS for Azure deployments for disaster recovery. It shows how the end users can still access the applications provided by AppServer - Primary1 and AppServer - Primary2 if the primary NGINXaaS deployment goes down." >}}
-
- Each region has its own VNet, subnet, and NGINXaaS for Azure deployment.
- The NGINXaaS for Azure deployment needs to have a public frontend to leverage Azure Traffic Manager.
- Cross region connectivity ensures that upstreams are reachable from either deployment. We use VNet peering in this guide to establish that connectivity.
- Upstreams (for example, VMs) are accessible from either NGINX deployment.
----
-
## Prerequisites
- Two Azure regions selected for DR.
@@ -36,8 +30,6 @@ This guide describes how to configure disaster recovery (DR) for F5 NGINXaaS for
- Secondary Region Virtual Network Address Space: `172.16.0.0/16`
{{< /call-out >}}
----
-
## Configure disaster recovery
### Step 1: Terrraform setup
@@ -65,8 +57,7 @@ terraform apply --auto-approve
Each region requires its own VNet, subnet(s), public IP and network security group.
-
-This sample Terraform code creates the prerequisite resources.
+{{< details summary="Terraform code for necessary resources" >}}
```hcl
# Primary Region
@@ -168,16 +159,14 @@ resource "azurerm_subnet_network_security_group_association" "secondary_virtual_
network_security_group_id = azurerm_network_security_group.secondary_virtual_network_nsg.id
}
```
-
----
+{{< /details >}}
### Step 3: Configure app servers (upstreams)
You may already have upstreams in the primary region that you wish to reverse proxy using NGINXaaS. For the sake of completion, the following example shows creation of Primary Subnet 2, NICs for the upstreams and the upstreams themselves. The upstream VMs need to be in a subnet separate from the NGINXaaS deployment subnet in the **primary region**.
-
-This sample Terraform code creates and configures the upstreams.
+{{< details summary="Terraform code for creating and configuring upstreams" >}}
```hcl
resource "azurerm_subnet" "primary_subnet_2" {
@@ -228,19 +217,20 @@ resource "azurerm_linux_virtual_machine" "nginx_upstream_vm" {
)
}
```
-
-
-> **Note**: As a best practice, maintain identical upstream resources in your secondary region as in your primary region to ensure full protection and availability in the event of a region-wide outage or disaster.
+{{< /details >}}
----
+{{< call-out "note" >}}
+
+As a best practice, maintain identical upstream resources in your secondary region as in your primary region to ensure full protection and availability in the event of a region-wide outage or disaster.
+
+{{< /call-out >}}
### Step 4: Peer the VNets
Peer the virtual networks so that the upstream app servers are accessible from either primary or secondary NGINXaaS deployment.
-
-This sample Terraform code configures peering for the virtual networks.
+{{< details summary="Terraform code for configuring virtual network peeting" >}}
```hcl
resource "azurerm_virtual_network_peering" "primary_vnet_to_secondary_vnet" {
@@ -257,22 +247,20 @@ resource "azurerm_virtual_network_peering" "secondary_vnet_to_primary_vnet" {
remote_virtual_network_id = azurerm_virtual_network.primary_virtual_network.id
}
```
-
-
+
+{{< /details >}}
- **Subnet Peering for Overlapping VNets:**
If overlapping address spaces are unavoidable, use subnet-level peering to selectively peer only the required subnets.
{{< call-out "note" >}}As of May 2025, subnet peering is not available by default for all subscriptions. To use this feature, you must have the subscription on which you want to configure subnet peering be registered with Azure. Please review the configuration details and limitations in this [document](https://learn.microsoft.com/en-us/azure/virtual-network/how-to-configure-subnet-peering).{{< /call-out >}}
----
### Step 5: Deploy NGINXaaS for Azure in each region
Reverse proxy your upstreams using NGINXaaS. Since the virtual networks are peered, both deployments would be able to access the upstreams.
-
-This sample Terraform code deploys and configures both primary and secondary NGINXaaS deployments.
+{{< details summary="Terraform code for deploying and configuring primary and secondary NGINXaaS deployments" >}}
```hcl
resource "azurerm_nginx_deployment" "primary_nginxaas_deployment" {
@@ -391,17 +379,15 @@ EOT
}
}
```
-
----
+{{< /details >}}
### Step 6: DNS and failover
- Use Azure Traffic Manager to direct traffic to the primary NGINXaaS deployment.
- When the primary deployment is detected as being unhealthy, Azure Traffic Manager updates the public DNS record of your service to point to the public IP of the NGINXaaS deployment in the secondary region.
-
-This sample Terraform code configures Azure Traffic Manager to point to both NGINXaaS deployments.
+{{< details summary="Terraform code for configuring Azure Traffic Manager to point to both NGINXaaS deployments" >}}
```hcl
resource "azurerm_traffic_manager_profile" "nginxaas_failover_monitor" {
@@ -439,9 +425,8 @@ resource "azurerm_traffic_manager_external_endpoint" "secondary" {
target = azurerm_nginx_deployment.secondary_nginxaas_deployment.ip_address
}
```
-
----
+{{< /details >}}
## Failover process
@@ -449,8 +434,6 @@ resource "azurerm_traffic_manager_external_endpoint" "secondary" {
1. **Failover**: If the primary region deployment is deemed unhealthy, Azure Traffic Manager updates the DNS record for the service to route traffic to the secondary region's NGINXaaS deployment.
1. **Recovery**: Once the primary region deployment recovers, Azure Traffic Manager automatically restores DNS records to the primary endpoint when its health probes detect recovery and confirm the primary endpoint is healthy again.
----
-
## Summary
By deploying NGINXaaS in separate regions with unique subnets and peered VNets, and configuring upstreams and DNS for failover, this topology ensures high availability and DR for your applications. Lastly, always monitor and test your failover paths.
diff --git a/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md b/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md
index a18e13ad4..d5cc3cf92 100644
--- a/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md
+++ b/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md
@@ -1,11 +1,11 @@
---
title: Deploy using the Azure portal
-weight: 100
+url: /nginxaas/azure/getting-started/create-deployment/deploy-azure-portal/
toc: true
+weight: 100
+nd-content-type: how-to
+nd-product: N4Azure
nd-docs: DOCS-878
-url: /nginxaas/azure/getting-started/create-deployment/deploy-azure-portal/
-type:
-- how-to
---
## Overview
@@ -20,7 +20,6 @@ You can start the NGINXaaS deployment process by visiting the [Create NGINXaaS](
1. Use the search field to find "NGINXaaS" in the Azure Portal. In the Services results, select **NGINXaaS**.
1. Select **+ Create** on the **NGINXaaS** page to start the deployment process.
-
## Create a deployment
### Basics tab
@@ -66,9 +65,7 @@ You can start the NGINXaaS deployment process by visiting the [Create NGINXaaS](
- If you plan on using an IPv6 address on the frontend, make sure the subnet is dual-stack, i.e., the subnet has both IPv4 and IPv6 address spaces. Attempting to use a subnet that is not dual-stack will cause deployment creation to fail.
- Changes to a virtual network's DNS settings will not be applied automatically to your NGINXaaS deployment. To ensure DNS settings are applied, you must add any custom DNS servers to the VNET's DNS settings before creating an NGINXaaS deployment. As a workaround for existing deployments, we recommend using the [`resolver` directive](https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver) to explicitly specify your name server(s) and the [`resolve` parameter](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#resolve) to automatically re-resolve the domain name of the server without restarting NGINX.
-
- Example of using the resolver directive
- For example,
+ {{< details summary="Resolver directive example" >}}
```nginx
resolver 10.0.0.2 valid=10s;
@@ -83,7 +80,7 @@ You can start the NGINXaaS deployment process by visiting the [Create NGINXaaS](
}
}
```
-
+ {{< /details >}}
1. Next, select **Tags**.
diff --git a/content/nginxaas-azure/getting-started/nginx-configuration/overview.md b/content/nginxaas-azure/getting-started/nginx-configuration/overview.md
index 1ac6ff7ad..b8028aaa0 100644
--- a/content/nginxaas-azure/getting-started/nginx-configuration/overview.md
+++ b/content/nginxaas-azure/getting-started/nginx-configuration/overview.md
@@ -88,11 +88,10 @@ Some directives cannot be overridden by the user provided configuration.
## Configuration directives list
-
-Alphabetical index of directives
-
NGINXaaS for Azure supports a limited set of NGINX directives.
+{{< details summary="Alphabetical index of directives">}}
+
[absolute_redirect](https://nginx.org/en/docs/http/ngx_http_core_module.html#absolute_redirect)\
[accept_mutex](https://nginx.org/en/docs/ngx_core_module.html#accept_mutex)\
[accept_mutex_delay](https://nginx.org/en/docs/ngx_core_module.html#accept_mutex_delay)\
@@ -925,10 +924,10 @@ NGINXaaS for Azure supports a limited set of NGINX directives.
[zone_sync_ssl_verify](https://nginx.org/en/docs/stream/ngx_stream_zone_sync_module.html#zone_sync_ssl_verify)\
[zone_sync_ssl_verify_depth](https://nginx.org/en/docs/stream/ngx_stream_zone_sync_module.html#zone_sync_ssl_verify_depth)\
[zone_sync_timeout](https://nginx.org/en/docs/stream/ngx_stream_zone_sync_module.html#zone_sync_timeout)
-
-
-Lua dynamic module directives
+{{< /details >}}
+
+{{< details summary="Lua dynamic module directives">}}
[lua_load_resty_core](https://github.com/openresty/lua-nginx-module?tab=readme-ov-file#lua_load_resty_core)\
[lua_use_default_type](https://github.com/openresty/lua-nginx-module?tab=readme-ov-file#lua_use_default_type)\
@@ -1005,14 +1004,14 @@ NGINXaaS for Azure supports a limited set of NGINX directives.
[lua_max_running_timers](https://github.com/openresty/lua-nginx-module?tab=readme-ov-file#lua_max_running_timers)\
[lua_sa_restart](https://github.com/openresty/lua-nginx-module?tab=readme-ov-file#lua_sa_restart)\
[lua_worker_thread_vm_pool_size](https://github.com/openresty/lua-nginx-module?tab=readme-ov-file#lua_worker_thread_vm_pool_size)
-
+{{< /details >}}
-
-GeoIP2 dynamic module directives
+{{< details summary="GeoIP2 dynamic module directives">}}
[geoip2 (ngx_http_geo2_module)](https://github.com/leev/ngx_http_geoip2_module#user-content-download-maxmind-geolite2-database-optional)\
[geoip2 (ngx_stream_geo2_module)](https://github.com/leev/ngx_http_geoip2_module#user-content-download-maxmind-geolite2-database-optional)\
[geoip2_proxy (ngx_http_geo2_module)](https://github.com/leev/ngx_http_geoip2_module#user-content-download-maxmind-geolite2-database-optional)\
[geoip2_proxy_recursive (ngx_http_geo2_module)](https://github.com/leev/ngx_http_geoip2_module#user-content-download-maxmind-geolite2-database-optional)\
-
+
+{{< /details >}}
\ No newline at end of file
diff --git a/content/nginxaas-azure/getting-started/ssl-tls-certificates/overview.md b/content/nginxaas-azure/getting-started/ssl-tls-certificates/overview.md
index f4b4a0693..2e340c567 100644
--- a/content/nginxaas-azure/getting-started/ssl-tls-certificates/overview.md
+++ b/content/nginxaas-azure/getting-started/ssl-tls-certificates/overview.md
@@ -1,10 +1,10 @@
---
title: Overview
-weight: 50
-toc: true
url: /nginxaas/azure/getting-started/ssl-tls-certificates/overview/
-type:
-- how-to
+toc: true
+weight: 50
+nd-content-type: how-to
+nd-product: N4Azure
---
F5 NGINXaaS for Azure (NGINXaaS) enables customers to secure traffic by adding SSL/TLS certificates to a deployment. NGINXaaS can fetch certificates directly from Azure Key Vault, rotate certificates, and provide observability on the status of your certificates.
@@ -62,25 +62,24 @@ For Azure client tools, such as the Azure CLI or Azure Resource Manager, the cer
To view the status of your SSL/TLS certificates, [enable monitoring]({{< ref "/nginxaas-azure/monitoring/enable-monitoring.md" >}}) for your NGINXaaS deployment and navigate to the **Metrics** tab in the Azure portal. View the `nginxaas.certificates` metric under the `nginxaas statistics` metric namespace. The `nginxaas.certificates` metric allows you to filter by certificate name and the status of the certificate. The status dimension reports the health of your certificates through the following values:
- {{< table >}}
+{{< table >}}
- | Status | Description |
- | ------------- | ------------- |
- | `active` | The certificate was successfully fetched from AKV. |
- | `unauthorized`| Azure returned a 401/403 error when fetching the certificate from AKV, which usually indicates an issue with the deployment's [Managed Identity]({{< ref "/nginxaas-azure/getting-started/managed-identity-portal.md" >}}). |
- | `not found` | Azure returned a 404 error when fetching the certificate from AKV. |
- | `incompatible`| An error occurred while fetching or processing the certificate from AKV.
The possible reasons include:
Error while downloading certificate and key
Missing content type in certificate
Missing content in certificate
Unrecognized content type, certificate not in PEM or PKCS12 format
|
+| Status | Description |
+| ------------- | ------------- |
+| `active` | The certificate was successfully fetched from AKV. |
+| `unauthorized`| Azure returned a 401/403 error when fetching the certificate from AKV, which usually indicates an issue with the deployment's [Managed Identity]({{< ref "/nginxaas-azure/getting-started/managed-identity-portal.md" >}}). |
+| `not found` | Azure returned a 404 error when fetching the certificate from AKV. |
+| `incompatible`| An error occurred while fetching or processing the certificate from AKV.
The possible reasons include:
Error while downloading certificate and key
Missing content type in certificate
Missing content in certificate
Unrecognized content type, certificate not in PEM or PKCS12 format