diff --git a/AGENTS.md b/AGENTS.md
index dfe3547df1..64bcb5d265 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -92,6 +92,7 @@ the **Product names** list at the end of this file. Do not invent codes or other
## Hugo shortcodes and includes
### Include files
+
```markdown
{{< include "nic/kubernetes-terminology.md" >}}
{{< include "waf/install-selinux-warning.md" >}}
@@ -103,6 +104,7 @@ the **Product names** list at the end of this file. Do not invent codes or other
- Keep include files context-agnostic and modular
### Call-outs
+
```markdown
{{< call-out class="note" title="Note" >}} Text here. {{< /call-out >}}
{{< call-out class="warning" title="Warning" >}} Text here. {{< /call-out >}}
@@ -112,6 +114,7 @@ the **Product names** list at the end of this file. Do not invent codes or other
Refer to the admonitions topic in the style guide for when to use each type.
### Internal links
+
Always use the ref shortcode with absolute paths and file extensions:
```markdown
@@ -122,6 +125,7 @@ Always use the ref shortcode with absolute paths and file extensions:
Never use relative links or bare markdown links for internal content.
### Version shortcodes
+
```markdown
{{< nic-version >}} # NGINX Ingress Controller version
{{< version-ngf >}} # NGINX Gateway Fabric version
@@ -170,6 +174,7 @@ Relates to issue #1234
```
### Pre-commit hooks (optional)
+
```bash
pip install pre-commit
pre-commit install # enables gitlint and markdownlint-cli2
@@ -181,6 +186,7 @@ pre-commit install # enables gitlint and markdownlint-cli2
- `.pre-commit-config.yaml` -- Git hooks (gitlint, markdownlint-cli2)
Key markdownlint rules enforced:
+
- MD022/MD031/MD032: Blank lines around headings, code blocks, lists
- MD026: No trailing punctuation in headings
- MD045: All images must have alt text
@@ -222,6 +228,9 @@ Permalinks for products are defined in `config/_default/config.toml`.
- F5 NGINXaaS
- F5 NGINXaaS for Azure
- F5 NGINXaaS for Google Cloud
+- F5 Application Delivery Service
+- F5 Application Delivery Service for AWS
+- F5 Application Delivery Service for Google Cloud
- F5 NGINX One Console
- F5 NGINX Plus
diff --git a/_banners/f5ads-aws-ea.md b/_banners/f5ads-aws-ea.md
new file mode 100644
index 0000000000..1e35c68c0f
--- /dev/null
+++ b/_banners/f5ads-aws-ea.md
@@ -0,0 +1,3 @@
+{{< banner "note" "F5 Application Delivery Service for AWS is currently in Early Access" >}}
+Contact us if you are interested in participating in our Early Access offering by sending an email to [nginxaas-early-access@f5.com](mailto:nginxaas-early-access@f5.com?subject=F5%20ADS%20for%20AWS%20EA%20interest).
+{{< /banner >}}
diff --git a/_banners/nginxaas-aws-ea.md b/_banners/nginxaas-aws-ea.md
deleted file mode 100644
index 14d61aad7f..0000000000
--- a/_banners/nginxaas-aws-ea.md
+++ /dev/null
@@ -1,3 +0,0 @@
-{{< banner "note" "NGINXaaS for AWS is currently in Early Access" >}}
-Contact us if you are interested in participating in our Early Access offering by sending an email to [nginxaas-early-access@f5.com](mailto:nginxaas-early-access@f5.com?subject=NGINXaaS%20for%20AWS%20EA%20interest).
-{{< /banner >}}
\ No newline at end of file
diff --git a/content/_index.md b/content/_index.md
index ab26e261a6..3d60dc55ae 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -4,6 +4,7 @@ description: Learn how to deliver, manage, and protect your applications using F
---
# F5 NGINX Product Documentation
+
Learn how to deliver, manage, and protect your applications using F5 NGINX products.
{{}}
@@ -42,11 +43,11 @@ Learn how to deliver, manage, and protect your applications using F5 NGINX produ
{{}}
{{}}
-{{}}
- {{}}
+{{}}
+ {{}}
Managed NGINX service for your AWS application stack.
{{}}
- {{}}
+ {{}}
Managed NGINX service for your Google Cloud application stack.
{{}}
{{}}
diff --git a/content/f5ads/_index.md b/content/f5ads/_index.md
new file mode 100644
index 0000000000..abc7633809
--- /dev/null
+++ b/content/f5ads/_index.md
@@ -0,0 +1,57 @@
+---
+title: F5 Application Delivery Service
+linkTitle: F5 Application Delivery Service
+description: Learn how to deliver, manage, and protect your applications using F5 Application Delivery Service.
+url: /f5ads/
+f5-landing-page: true
+f5-content-type: landing-page
+cascade:
+ logo: F5-NGINXaaS-icon.svg
+ f5-banner:
+ enabled: false
+ md: /_banners/f5ads-aws-ea.md
+---
+
+Learn how to deliver, manage, and protect your applications using F5 Application Delivery Service.
+
+## F5 Application Delivery Service
+
+F5 Application Delivery Service (F5 ADS) is a SaaS offering that is tightly integrated into your public cloud provider and its ecosystem of services, making applications fast, efficient, and reliable, and bringing advanced traffic services enabled with the commercial version of NGINX, without any of the operational toil.
+
+### Featured content
+
+{{}}
+ {{}}
+ Follow these steps to create an NGINX configuration for your F5 ADS deployment
+ {{}}
+ {{}}
+ Step-by-step instructions to deploy F5 ADS for AWS using the F5 ADS Console
+ {{}}
+ {{}}
+ Enable and configure web application firewall protection for your deployment
+ {{}}
+{{}}
+
+### Get started with F5 ADS
+
+Access the [F5 ADS Console](https://console.nginxaas.net/) directly to manage organizations, NGINX configurations, and certificates. To create and manage deployments, subscribe to F5 ADS using your preferred cloud provider marketplace.
+
+{{}}
+ {{}}
+ Create organizations and manage user access to your F5 ADS resources
+ {{}}
+ {{}}
+ Set up OAuth2 client credentials for automation and CI/CD pipelines
+ {{}}
+ {{}}
+ Use F5 ADS alongside your services running in AWS
+ {{}}
+{{}}
+
+### Get help
+
+{{}}
+ {{}}
+ Get in touch with the F5 support team for assistance
+ {{}}
+{{}}
diff --git a/content/f5ads/aws/_index.md b/content/f5ads/aws/_index.md
new file mode 100644
index 0000000000..9fec4ba856
--- /dev/null
+++ b/content/f5ads/aws/_index.md
@@ -0,0 +1,12 @@
+---
+title: F5 Application Delivery Service for AWS
+linkTitle: F5 ADS for AWS
+f5-subtitle: A fully managed load balancer and application delivery service for AWS, built on F5 NGINX Plus
+url: /f5ads/aws/
+cascade:
+ logo: F5-NGINXaaS-icon.svg
+ contentVars:
+ product: F5 Application Delivery Service for AWS
+f5-product: F5 Application Delivery Service for AWS
+weight: 500
+---
diff --git a/content/nginxaas/aws/billing/_index.md b/content/f5ads/aws/billing/_index.md
similarity index 62%
rename from content/nginxaas/aws/billing/_index.md
rename to content/f5ads/aws/billing/_index.md
index c7faac3e9c..650e78731a 100644
--- a/content/nginxaas/aws/billing/_index.md
+++ b/content/f5ads/aws/billing/_index.md
@@ -1,5 +1,5 @@
---
title: Marketplace billing
weight: 400
-url: /nginxaas/aws/billing/
+url: /f5ads/aws/billing/
---
diff --git a/content/f5ads/aws/billing/overview.md b/content/f5ads/aws/billing/overview.md
new file mode 100644
index 0000000000..6e9b859b69
--- /dev/null
+++ b/content/f5ads/aws/billing/overview.md
@@ -0,0 +1,21 @@
+---
+title: Billing overview
+description: "Overview of how F5 Application Delivery Service for AWS is billed through the AWS Marketplace."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/billing/overview/
+f5-content-type: concept
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, billing, AWS Marketplace, pricing, Early Access"
+f5-summary: >
+ F5 Application Delivery Service for AWS is purchased and billed through the AWS Marketplace.
+ This page explains how billing works during Early Access and how to get more information.
+f5-audience: any
+---
+
+{{< call-out class="important" title="Early Access" >}}
+**F5 Application Delivery Service for AWS** is currently in **Early Access**. Contact us for information about billing.
+{{< /call-out >}}
+
+F5 ADS for AWS is purchased and billed through the AWS Marketplace. Contact us if you are interested in participating in our Early Access offering by sending an email to nginxaas-early-access@f5.com.
diff --git a/content/nginxaas/aws/deploy/_index.md b/content/f5ads/aws/deploy/_index.md
similarity index 60%
rename from content/nginxaas/aws/deploy/_index.md
rename to content/f5ads/aws/deploy/_index.md
index b44b21b7bd..9c33e42470 100644
--- a/content/nginxaas/aws/deploy/_index.md
+++ b/content/f5ads/aws/deploy/_index.md
@@ -1,5 +1,5 @@
---
title: Deploy on AWS
weight: 200
-url: /nginxaas/aws/deploy/
+url: /f5ads/aws/deploy/
---
diff --git a/content/nginxaas/aws/deploy/access-management.md b/content/f5ads/aws/deploy/access-management.md
similarity index 64%
rename from content/nginxaas/aws/deploy/access-management.md
rename to content/f5ads/aws/deploy/access-management.md
index 2066f87117..aa95fc4cd6 100644
--- a/content/nginxaas/aws/deploy/access-management.md
+++ b/content/f5ads/aws/deploy/access-management.md
@@ -1,35 +1,35 @@
---
title: Identity and access management
-description: "Configure AWS IAM roles so F5 NGINXaaS for AWS can access CloudWatch and Secrets Manager on your behalf."
+description: "Configure AWS IAM roles so F5 Application Delivery Service for AWS can access CloudWatch and Secrets Manager on your behalf."
weight: 600
toc: true
f5-docs: DOCS-000
-url: /nginxaas/aws/deploy/access-management/
+url: /f5ads/aws/deploy/access-management/
f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, IAM, identity and access management, IAM role, trust policy, external ID, AssumeRole, CloudWatch, Secrets Manager"
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, IAM, identity and access management, IAM role, trust policy, external ID, AssumeRole, CloudWatch, Secrets Manager"
f5-summary: >
- F5 NGINXaaS for AWS uses AWS IAM roles to export logs and metrics to CloudWatch and to fetch secrets from AWS Secrets Manager.
+ F5 Application Delivery Service for AWS uses AWS IAM roles to export logs and metrics to CloudWatch and to fetch secrets from AWS Secrets Manager.
This guide covers IAM role architecture options, how to configure trust and permissions policies, and how to troubleshoot role assumption failures.
f5-audience: operator
---
-F5 NGINXaaS for AWS uses AWS Identity and Access Management (IAM) roles to integrate with AWS services. An NGINXaaS deployment configured with an AWS IAM role has access to the following capabilities:
+F5 Application Delivery Service for AWS uses AWS Identity and Access Management (IAM) roles to integrate with AWS services. An F5 ADS deployment configured with an AWS IAM role has access to the following capabilities:
- Export logs to CloudWatch Logs
- Export metrics to CloudWatch Logs using EMF
- Fetch secrets from AWS Secrets Manager to use in your NGINX Configuration
-NGINXaaS acts as a third party accessing your AWS account. To prevent the [confused deputy problem](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), NGINXaaS uses an external ID when assuming your provided IAM role. To learn more about this pattern, see [AWS documentation on third-party access](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html). The external ID is always your NGINXaaS Organization ID.
+F5 ADS acts as a third party accessing your AWS account. To prevent the [confused deputy problem](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), F5 ADS uses an external ID when assuming your provided IAM role. To learn more about this pattern, see [AWS documentation on third-party access](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html). The external ID is always your F5 ADS Organization ID.
## Prerequisites
- An AWS account with permissions to create IAM roles and policies
-- Your NGINXaaS organization ID, available in the **Organization Info** section of the **Organization Details** page (**Settings** > **Organization Details** on the navigation menu)
+- Your F5 ADS organization ID, available in the **Organization Info** section of the **Organization Details** page (**Settings** > **Organization Details** on the navigation menu)
## IAM role options
-You have flexibility in how to structure IAM roles for your NGINXaaS deployments. Choose an architecture based on your security requirements and operational needs.
+You have flexibility in how to structure IAM roles for your F5 ADS deployments. Choose an architecture based on your security requirements and operational needs.
### Option 1: Single role for all deployments with shared policies
@@ -57,7 +57,7 @@ One IAM role is shared by all deployments, but access policies are restricted to
- Fewer roles to manage in your AWS account
- Each deployment can have tailored permissions
-- Policies can restrict access per deployment using [session tags]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md#iam-role-permissions-policy" >}}) or principal conditions
+- Policies can restrict access per deployment using [session tags]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md#iam-role-permissions-policy" >}}) or principal conditions
**Cons:**
@@ -89,11 +89,11 @@ Each deployment has its own dedicated IAM role with tailored access policies.
### External ID
-NGINXaaS provides your organization with a unique **External ID** (your organization ID). This ID is used by the NGINXaaS dataplane to assume your IAM role. The External ID prevents unauthorized access by binding the trust relationship to your specific organization.
+F5 ADS provides your organization with a unique **External ID** (your organization ID). This ID is used by the F5 ADS dataplane to assume your IAM role. The External ID prevents unauthorized access by binding the trust relationship to your specific organization.
## How it works
-NGINXaaS periodically calls the AWS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API to obtain temporary credentials for your IAM role. These credentials are valid for the duration of the assume role session (minimum 15 minutes) and are renewed before they expire.
+F5 ADS periodically calls the AWS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API to obtain temporary credentials for your IAM role. These credentials are valid for the duration of the assume role session (minimum 15 minutes) and are renewed before they expire.
Be aware of the following propagation delays when making changes:
@@ -104,7 +104,7 @@ Be aware of the following propagation delays when making changes:
### Step 1: Create a trust policy
-Create a JSON file named `trust-policy.json` with the following content. Replace `$ORG_ID` with your organization ID, `$DEPLOYMENT_AWS_ACCOUNT_ID` with the NGINXaaS AWS Account ID from the **Deployment Data** section of the **Details** tab, and `$DEPLOYMENT_ID` with your deployment ID (Option 3 only):
+Create a JSON file named `trust-policy.json` with the following content. Replace `$ORG_ID` with your organization ID, `$DEPLOYMENT_AWS_ACCOUNT_ID` with the F5 ADS AWS Account ID from the **Deployment Data** section of the **Details** tab, and `$DEPLOYMENT_ID` with your deployment ID (Option 3 only):
{{< details summary="Trust policy for Option 1 or 2 (shared role)">}}
@@ -113,7 +113,7 @@ Create a JSON file named `trust-policy.json` with the following content. Replace
"Version": "2012-10-17",
"Statement": [
{
- "Sid": "AllowNGINXaaSDeploymentToAssumeRole",
+ "Sid": "AllowF5ADSDeploymentToAssumeRole",
"Effect": "Allow",
"Principal": {
"AWS": ["254908360701", "207423186715", "785021966578", "775935274660", "275859940910"]
@@ -141,14 +141,14 @@ Create a JSON file named `trust-policy.json` with the following content. Replace
{{< details summary="Trust policy for Option 3 (per-deployment role)">}}
-For per-deployment roles, restrict the **Principal** to the specific IAM role ARN that NGINXaaS uses for your deployment:
+For per-deployment roles, restrict the **Principal** to the specific IAM role ARN that F5 ADS uses for your deployment:
```json
{
"Version": "2012-10-17",
"Statement": [
{
- "Sid": "AllowNGINXaaSDeploymentToAssumeRole",
+ "Sid": "AllowF5ADSDeploymentToAssumeRole",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::$DEPLOYMENT_AWS_ACCOUNT_ID:role/$DEPLOYMENT_ID"
@@ -176,9 +176,9 @@ For per-deployment roles, restrict the **Principal** to the specific IAM role AR
### Step 2: Create the IAM role
-To create the IAM role, follow [Creating a role with a custom trust policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) in the AWS documentation, using the trust policy JSON from Step 1. Record the role **ARN** for use in your NGINXaaS deployment configuration.
+To create the IAM role, follow [Creating a role with a custom trust policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) in the AWS documentation, using the trust policy JSON from Step 1. Record the role **ARN** for use in your F5 ADS deployment configuration.
-Alternatively, to use the AWS CLI, replace `$ROLE_NAME` with a descriptive name (for example, `NGINXaaS-CloudWatch-Role`):
+Alternatively, to use the AWS CLI, replace `$ROLE_NAME` with a descriptive name (for example, `F5-ADS-CloudWatch-Role`):
```bash
aws iam create-role --role-name $ROLE_NAME \
@@ -191,9 +191,9 @@ aws iam create-role --role-name $ROLE_NAME \
{
"Role": {
"Path": "/",
- "RoleName": "NGINXaaS-CloudWatch-Role",
+ "RoleName": "F5-ADS-CloudWatch-Role",
"RoleId": "AIDA...",
- "Arn": "arn:aws:iam::123456789012:role/NGINXaaS-CloudWatch-Role",
+ "Arn": "arn:aws:iam::123456789012:role/F5-ADS-CloudWatch-Role",
"CreateDate": "2024-01-15T10:30:00+00:00",
"AssumeRolePolicyDocument": {
...
@@ -202,7 +202,7 @@ aws iam create-role --role-name $ROLE_NAME \
}
```
-Record the role ARN for use in your NGINXaaS deployment configuration.
+Record the role ARN for use in your F5 ADS deployment configuration.
### Step 3: Add inline policies to your role
@@ -210,9 +210,9 @@ Add inline policies to your role to grant the permissions your deployment requir
{{< details summary="Policy for CloudWatch Logs">}}
-For a full guide on monitoring and logging with NGINXaaS, see [Enable monitoring]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}}) and [Enable NGINX logs]({{< ref "/nginxaas/aws/monitoring/enable-nginx-logs.md" >}}).
+For a full guide on monitoring and logging with F5 ADS, see [Enable monitoring]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}}) and [Enable NGINX logs]({{< ref "/f5ads/aws/monitoring/enable-nginx-logs.md" >}}).
-To add this policy in the AWS Management Console, follow [Adding inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) in the AWS documentation. Use the JSON below and name the policy `nginxaas-cloudwatch-logs`.
+To add this policy in the AWS Management Console, follow [Adding inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) in the AWS documentation. Use the JSON below and name the policy `f5ads-cloudwatch-logs`.
```json
{
@@ -225,7 +225,7 @@ To add this policy in the AWS Management Console, follow [Adding inline policies
"logs:CreateLogStream",
"logs:PutLogEvents"
],
- "Resource": "arn:aws:logs:*:*:log-group:nginxaas/*"
+ "Resource": "arn:aws:logs:*:*:log-group:*"
}
]
}
@@ -235,7 +235,7 @@ Alternatively, to use the AWS CLI:
```bash
aws iam put-role-policy --role-name $ROLE_NAME \
- --policy-name nginxaas-cloudwatch-logs \
+ --policy-name f5ads-cloudwatch-logs \
--policy-document '{
"Version": "2012-10-17",
"Statement": [
@@ -246,7 +246,7 @@ aws iam put-role-policy --role-name $ROLE_NAME \
"logs:CreateLogStream",
"logs:PutLogEvents"
],
- "Resource": "arn:aws:logs:*:*:log-group:nginxaas/*"
+ "Resource": "arn:aws:logs:*:*:log-group:*"
}
]
}'
@@ -256,9 +256,9 @@ aws iam put-role-policy --role-name $ROLE_NAME \
{{< details summary="Policy for Secrets Manager">}}
-Replace `$SECRET_ARN` with the ARN of your secret. For a full guide on using AWS Secrets Manager with NGINXaaS, see [Add certificates from AWS Secrets Manager]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}}).
+Replace `$SECRET_ARN` with the ARN of your secret. For a full guide on using AWS Secrets Manager with F5 ADS, see [Add certificates from AWS Secrets Manager]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}}).
-To add this policy in the AWS Management Console, follow [Adding inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) in the AWS documentation. Use the JSON below and name the policy `nginxaas-secrets-manager`.
+To add this policy in the AWS Management Console, follow [Adding inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) in the AWS documentation. Use the JSON below and name the policy `f5ads-secrets-manager`.
```json
{
@@ -279,7 +279,7 @@ Alternatively, to use the AWS CLI:
```bash
aws iam put-role-policy --role-name $ROLE_NAME \
- --policy-name nginxaas-secrets-manager \
+ --policy-name f5ads-secrets-manager \
--policy-document '{
"Version": "2012-10-17",
"Statement": [
@@ -296,18 +296,18 @@ aws iam put-role-policy --role-name $ROLE_NAME \
{{< /details >}}
-### Step 4: Add the role ARN to your NGINXaaS deployment
+### Step 4: Add the role ARN to your F5 ADS deployment
-In the NGINXaaS Console:
+In the F5 ADS Console:
1. On the navigation menu, select **Deployments**.
1. Select the deployment you want to update and select **Edit**.
-1. Enter your role ARN, for example, `arn:aws:iam::123456789012:role/NGINXaaS-CloudWatch-Role`, in the **Role ARN** field under the **Identity** section.
+1. Enter your role ARN, for example, `arn:aws:iam::123456789012:role/F5-ADS-CloudWatch-Role`, in the **Role ARN** field under the **Identity** section.
1. Select **Save Changes**.
## Monitor role assumption events
-NGINXaaS for AWS generates an event when it fails to assume your IAM role. Use these events to diagnose trust policy or permission issues.
+F5 ADS for AWS generates an event when it fails to assume your IAM role. Use these events to diagnose trust policy or permission issues.
### Event types
@@ -315,7 +315,7 @@ NGINXaaS for AWS generates an event when it fails to assume your IAM role. Use t
| Event type | Description |
|---|---|
-| AWS role assumption failed | NGINXaaS couldn't assume the IAM role configured for your deployment. The event message includes the error details. |
+| AWS role assumption failed | F5 ADS couldn't assume the IAM role configured for your deployment. The event message includes the error details. |
{{< /table >}}
@@ -330,14 +330,14 @@ NGINXaaS for AWS generates an event when it fails to assume your IAM role. Use t
| Message | Likely cause | Remediation |
|---|---|---|
-| `The AWS IAM Role hasn't been set up correctly.` | The role ARN does not exist in the customer account, the trust policy's `sts:ExternalId` condition does not match the NGINXaaS organization ID, or (Option 3 only) the Principal in the trust policy does not match the deployment's IAM role ARN. AWS returns the same error for all cases. | Confirm the role ARN in your deployment's **Identity** section refers to an existing IAM role. If the role exists, verify the `sts:ExternalId` condition matches your NGINXaaS organization ID. For Option 3, also verify the trust policy Principal matches the deployment's IAM role ARN (`arn:aws:iam::$DEPLOYMENT_AWS_ACCOUNT_ID:role/$DEPLOYMENT_ID`). |
+| `The AWS IAM Role hasn't been set up correctly.` | The role ARN does not exist in the customer account, the trust policy's `sts:ExternalId` condition does not match the F5 ADS organization ID, or (Option 3 only) the Principal in the trust policy does not match the deployment's IAM role ARN. AWS returns the same error for all cases. | Confirm the role ARN in your deployment's **Identity** section refers to an existing IAM role. If the role exists, verify the `sts:ExternalId` condition matches your F5 ADS organization ID. For Option 3, also verify the trust policy Principal matches the deployment's IAM role ARN (`arn:aws:iam::$DEPLOYMENT_AWS_ACCOUNT_ID:role/$DEPLOYMENT_ID`). |
{{< /table >}}
## What's next
-- [Monitor your deployment]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}})
-- [Enable NGINX Logs]({{< ref "/nginxaas/aws/monitoring/enable-nginx-logs.md" >}})
-- [Add certificates from AWS Secrets Manager]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}})
+- [Monitor your deployment]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}})
+- [Enable NGINX Logs]({{< ref "/f5ads/aws/monitoring/enable-nginx-logs.md" >}})
+- [Add certificates from AWS Secrets Manager]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}})
- [AWS IAM User Guide](https://docs.aws.amazon.com/iam/)
- [AWS IAM Best Practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)
diff --git a/content/nginxaas/aws/deploy/create-deployment/_index.md b/content/f5ads/aws/deploy/create-deployment/_index.md
similarity index 51%
rename from content/nginxaas/aws/deploy/create-deployment/_index.md
rename to content/f5ads/aws/deploy/create-deployment/_index.md
index 83832f4e8c..75427a2e75 100644
--- a/content/nginxaas/aws/deploy/create-deployment/_index.md
+++ b/content/f5ads/aws/deploy/create-deployment/_index.md
@@ -1,5 +1,5 @@
---
title: Create a deployment
weight: 200
-url: /nginxaas/aws/deploy/create-deployment/
+url: /f5ads/aws/deploy/create-deployment/
---
diff --git a/content/nginxaas/aws/deploy/create-deployment/deploy-console.md b/content/f5ads/aws/deploy/create-deployment/deploy-console.md
similarity index 72%
rename from content/nginxaas/aws/deploy/create-deployment/deploy-console.md
rename to content/f5ads/aws/deploy/create-deployment/deploy-console.md
index ea876979d2..a90074ee10 100644
--- a/content/nginxaas/aws/deploy/create-deployment/deploy-console.md
+++ b/content/f5ads/aws/deploy/create-deployment/deploy-console.md
@@ -1,61 +1,61 @@
---
-title: Deploy using the NGINXaaS Console
-description: "Create, configure, and connect an F5 NGINXaaS for AWS deployment using the NGINXaaS Console."
+title: Deploy using the Console
+description: "Create, configure, and connect an F5 Application Delivery Service for AWS deployment using the F5 ADS Console."
weight: 100
toc: true
f5-docs: DOCS-000
-url: /nginxaas/aws/deploy/create-deployment/deploy-console/
+url: /f5ads/aws/deploy/create-deployment/deploy-console/
f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, create deployment, NGINXaaS Console, NCU, service frontend, PrivateLink, VPC peering"
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, create deployment, F5 ADS Console, NCU, service frontend, PrivateLink, VPC peering"
f5-summary: >
- Learn how to create an F5 NGINXaaS for AWS deployment using the NGINXaaS Console.
+ Learn how to create an F5 Application Delivery Service for AWS deployment using the F5 ADS Console.
This guide covers configuring the deployment, setting up service frontend connectivity, and testing the deployment once it's ready.
f5-audience: operator
---
## Overview
-This guide explains how to deploy F5 NGINXaaS for AWS using the [AWS Management Console](https://console.aws.amazon.com) and the [NGINXaaS Console](https://console.nginxaas.net/). The deployment process involves creating a new deployment, configuring the deployment, and testing the deployment.
+This guide explains how to deploy F5 Application Delivery Service for AWS using the [AWS Management Console](https://console.aws.amazon.com) and the [F5 ADS Console](https://console.nginxaas.net/). The deployment process involves creating a new deployment, configuring the deployment, and testing the deployment.
## Before you begin
-Before you can deploy NGINXaaS, follow the steps in the [Prerequisites]({{< ref "/nginxaas/aws/deploy/prerequisites/" >}}) topic to subscribe to the NGINXaaS for AWS offering in the AWS Marketplace.
+Before you can deploy F5 ADS, follow the steps in the [Prerequisites]({{< ref "/f5ads/aws/deploy/prerequisites/" >}}) topic to subscribe to the F5 ADS for AWS offering in the AWS Marketplace.
-## Access the NGINXaaS Console
+## Access the F5 ADS Console
-{{< include "/nginxaas/access-console.md" >}}
+{{< include "/f5ads/access-console.md" >}}
## Create or import an NGINX configuration
-{{< include "/nginxaas/create-or-import-nginx-config.md" >}}
+{{< include "/f5ads/create-or-import-nginx-config.md" >}}
## Create a new deployment
-Create a new NGINXaaS deployment using the NGINXaaS Console:
+Create a new F5 ADS deployment using the F5 ADS Console:
1. On the left menu, select **Deployments**.
1. Select {{< icon "plus" >}} **Add Deployment**, then select **AWS** to create a new AWS deployment.
- Enter a unique **Name**.
- Add an optional description for your deployment.
- - Change the [**NCUs**]({{< ref "/nginxaas/aws/overview.md#nginx-capacity-unit-ncu" >}}) if needed.
+ - Change the [**NCUs**]({{< ref "/f5ads/aws/overview.md#nginx-capacity-unit-ncu" >}}) if needed.
- The default value of `20` works for most common scenarios.
- Enable **WAF** if you want [F5 WAF for NGINX]({{< ref "/waf" >}}) enabled for your deployment.
- - Select the AWS **Region** where you want the NGINXaaS deployment to be created.
+ - Select the AWS **Region** where you want the F5 ADS deployment to be created.
- Enter an **IPv4 CIDR Block** for the deployment's private network IP space.
- - NGINXaaS only accepts block sizes between `/24` and `/18`.
+ - F5 ADS only accepts block sizes between `/24` and `/18`.
- For more information on choosing a VPC CIDR block, refer to AWS's [VPC CIDR blocks](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html) documentation.
{{< call-out class="caution" >}}
- NGINXaaS uses VPC peering for network connectivity to your upstream services. VPC peering requires all peered VPCs to have non-overlapping CIDR blocks so unique routing rules can be defined for each IP range.
+ F5 ADS uses VPC peering for network connectivity to your upstream services. VPC peering requires all peered VPCs to have non-overlapping CIDR blocks so unique routing rules can be defined for each IP range.
When selecting an IPv4 CIDR block for your AWS deployment, make sure the range doesn't match or overlap with any VPCs you plan to peer to the deployment's network.
{{< /call-out >}}
- In the **Apply NGINX Configuration** section, select an NGINX configuration [you created earlier](#create-or-import-an-nginx-configuration) from the **Choose Configuration** list.
- Select a **Configuration Version** from the list.
- Select **Managed Public Endpoint** or **Private Endpoint** under Service Frontend.
- - Refer to the [Service Frontend]({{< ref "/nginxaas/aws/overview.md#service-frontend" >}}) documentation for more information on these two frontend types.
+ - Refer to the [Service Frontend]({{< ref "/f5ads/aws/overview.md#service-frontend" >}}) documentation for more information on these two frontend types.
- If you selected **Managed Public Endpoint**, select **+ Add ACL Rule** to add an **Access Control List (ACL)** rule. If you don't add any ACL rules, no traffic is allowed to the deployment. For each rule, set:
- **Protocol**: `Any`, `TCP`, or `UDP`.
- **Port Range**: Only selectable when you choose a specific protocol.
@@ -72,21 +72,21 @@ Your new deployment will appear in the list of deployments. The status of the de
## Edit your deployment
-In the NGINXaaS Console,
+In the F5 ADS Console,
1. Open the details of your deployment by selecting its name from the list of deployments.
- You can view the details of your deployment, including the status, region, VPC endpoint service, NGINX configuration, and more.
1. Select **Edit** to modify the deployment.
- - From this form, you can edit the description or reserved [NCUs]({{< ref "/nginxaas/aws/overview.md#nginx-capacity-unit-ncu" >}}).
+ - From this form, you can edit the description or reserved [NCUs]({{< ref "/f5ads/aws/overview.md#nginx-capacity-unit-ncu" >}}).
- You can apply a different NGINX configuration or configuration version.
- Enable or disable WAF.
- Configure upstream connectivity by adding entries to the **VPC Peering Connections** list as detailed further in [Upstream connectivity](#upstream-connectivity).
- You can also modify the **Service Frontend** configuration, including frontend type, ACL rules (Managed Public Endpoint) or PrivateLink Connection Allow List entries (Private Endpoint) from here.
- This is where you can add VPC endpoint IDs to the allow list after you [create an interface VPC endpoint](#private-endpoint-traffic).
- - You can configure monitoring here. For detailed instructions, see [Enable Monitoring]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}})
+ - You can configure monitoring here. For detailed instructions, see [Enable Monitoring]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}})
1. Select **Save Changes**.
-To modify the contents of the NGINX configuration, see [Update an NGINX Configuration]({{< ref "/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md#update-an-nginx-configuration" >}}).
+To modify the contents of the NGINX configuration, see [Update an NGINX Configuration]({{< ref "/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md#update-an-nginx-configuration" >}}).
## Set up connectivity
@@ -97,7 +97,7 @@ If you selected **Private Endpoint** as the service frontend type, complete the
To let clients in your AWS VPC connect directly to your deployment, create an interface VPC endpoint that targets your deployment's PrivateLink Endpoint Service Name:
{{< call-out class="caution" >}}
-NGINXaaS doesn't currently support cross-region PrivateLink connections. You can only create an interface VPC endpoint in the same region as your deployment.
+F5 ADS doesn't currently support cross-region PrivateLink connections. You can only create an interface VPC endpoint in the same region as your deployment.
{{< /call-out >}}
1. After your deployment is created, open its Details tab and find the **PrivateLink Endpoint Service Name** under **Cloud Settings** > **Service Frontend**, for example `com.amazonaws.vpce.us-east-1.vpce-svc-0c0d939ca9a7ce020`.
@@ -109,31 +109,30 @@ NGINXaaS doesn't currently support cross-region PrivateLink connections. You can
- The VPC endpoint ID under **Cloud Settings** > **Service Frontend** > **PrivateLink Connection Allow List** changes to an accepted state. This confirms the deployment accepted the connection.
{{< call-out class="important" >}}
-The allow list can contain either AWS account IDs or VPC endpoint IDs, but not both. If it uses AWS account IDs, NGINXaaS automatically accepts every PrivateLink connection from those accounts. If it uses VPC endpoint IDs, NGINXaaS accepts each endpoint's PrivateLink connection only after you add its ID to the list.
+The allow list can contain either AWS account IDs or VPC endpoint IDs, but not both. If it uses AWS account IDs, F5 ADS automatically accepts every PrivateLink connection from those accounts. If it uses VPC endpoint IDs, F5 ADS accepts each endpoint's PrivateLink connection only after you add its ID to the list.
Removing an entry disconnects that PrivateLink connection from the deployment.
{{< /call-out >}}
### Upstream connectivity
-To let your NGINXaaS deployment reach applications in your upstream network, create a VPC peering connection between your upstream VPC and the deployment's VPC:
+To let your F5 ADS deployment reach applications in your upstream network, create a VPC peering connection between your upstream VPC and the deployment's VPC:
{{< call-out class="caution" >}}
-NGINXaaS doesn't currently support cross-region VPC peering connections. A peering connection from any region other than the deployment's region will be rejected.
+F5 ADS doesn't currently support cross-region VPC peering connections. A peering connection from any region other than the deployment's region will be rejected.
{{< /call-out >}}
1. Open your deployment's Details tab and note its **AWS Account ID** and **VPC ID**.
1. From your upstream AWS account, create a VPC peering connection request targeting the deployment's AWS Account ID and VPC ID. For step-by-step instructions, see AWS's [Create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) documentation.
1. Note the resulting **VPC Peering Connection ID**, for example `pcx-0123456789abcdef0`, shown in the AWS VPC console **Peering Connections** list.
1. On your deployment's Details tab, select **Edit**, go to **Cloud Details** > **Upstream Network**, select **+ Add Entry**, and add the VPC Peering Connection ID.
-1. Select **Save Changes** to allow NGINXaaS to accept the peering connection request.
- - The VPC peering connection ID under **Cloud Settings** > **Upstream Network** changes to an accepted state. This confirms the deployment accepted the connection.
+1. Select **Save Changes** to allow F5 ADS to accept the peering connection request.
1. You must update your upstream VPC's route tables, network ACLs, and security groups to allow traffic to and from the deployment's VPC CIDRs.
- Open your deployment's Details tab and note its **IPv4 CIDR** and **IPv6 CIDR** (if you plan to use IPv6).
- See AWS's [Update your route tables for a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html) and [Configure security group rules for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) documentation.
{{< call-out class="caution" title="CIDR overlap" >}}
-Your upstream VPC CIDRs must not overlap with the deployment's VPC CIDRs, or the CIDRs of other peered upstream VPCs. If CIDRs overlap, VPC peering will fail. See [Upstream network]({{< ref "/nginxaas/aws/overview.md#upstream-network" >}}) for more information.
+Your upstream VPC CIDRs must not overlap with the deployment's VPC CIDRs, or the CIDRs of other peered upstream VPCs. If CIDRs overlap, VPC peering will fail. See [Upstream network]({{< ref "/f5ads/aws/overview.md#upstream-network" >}}) for more information.
{{< /call-out >}}
## Test your deployment
@@ -148,5 +147,5 @@ How you test your deployment depends on the service frontend type you selected:
## What's next
-- [Monitor your deployment]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}})
-- [Manage certificates in AWS Secrets Manager]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}})
+- [Monitor your deployment]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}})
+- [Manage certificates in AWS Secrets Manager]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}})
diff --git a/content/nginxaas/aws/deploy/nginx-configuration/_index.md b/content/f5ads/aws/deploy/nginx-configuration/_index.md
similarity index 54%
rename from content/nginxaas/aws/deploy/nginx-configuration/_index.md
rename to content/f5ads/aws/deploy/nginx-configuration/_index.md
index 0a54cf4b0f..a8f98eab8c 100644
--- a/content/nginxaas/aws/deploy/nginx-configuration/_index.md
+++ b/content/f5ads/aws/deploy/nginx-configuration/_index.md
@@ -1,5 +1,5 @@
---
title: Upload an NGINX configuration
weight: 500
-url: /nginxaas/aws/deploy/nginx-configuration/
+url: /f5ads/aws/deploy/nginx-configuration/
---
diff --git a/content/f5ads/aws/deploy/nginx-configuration/configuration-rules.md b/content/f5ads/aws/deploy/nginx-configuration/configuration-rules.md
new file mode 100644
index 0000000000..eeb5e9d989
--- /dev/null
+++ b/content/f5ads/aws/deploy/nginx-configuration/configuration-rules.md
@@ -0,0 +1,15 @@
+---
+title: NGINX configuration rules and limits
+description: "Reference for NGINX configuration file restrictions and workflows for F5 Application Delivery Service for AWS."
+weight: 50
+toc: true
+url: /f5ads/aws/deploy/nginx-configuration/configuration-rules/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, NGINX configuration, filesystem restrictions, disallowed directives, configuration workflow"
+f5-summary: >
+ This reference explains how to work with NGINX configuration files in F5 Application Delivery Service for AWS deployments, including filesystem restrictions and directive support.
+ Use it to look up which directories F5 ADS can read from and write to, and which directives are disallowed or fixed.
+f5-audience: operator
+contentSource: f5ads/overview/nginx-configuration/configuration-rules.md
+---
diff --git a/content/nginxaas/aws/deploy/nginx-configuration/nginx-config-restrictions.md b/content/f5ads/aws/deploy/nginx-configuration/nginx-config-restrictions.md
similarity index 50%
rename from content/nginxaas/aws/deploy/nginx-configuration/nginx-config-restrictions.md
rename to content/f5ads/aws/deploy/nginx-configuration/nginx-config-restrictions.md
index e4f46a5c87..4da7eff008 100644
--- a/content/nginxaas/aws/deploy/nginx-configuration/nginx-config-restrictions.md
+++ b/content/f5ads/aws/deploy/nginx-configuration/nginx-config-restrictions.md
@@ -1,32 +1,32 @@
---
title: "NGINX config restrictions"
-description: "Reference for NGINX configuration restrictions specific to F5 NGINXaaS for AWS deployments."
+description: "Reference for NGINX configuration restrictions specific to F5 Application Delivery Service for AWS deployments."
weight: 150
toc: true
f5-docs: DOCS-000
-url: /nginxaas/aws/deploy/nginx-configuration/nginx-config-restrictions/
+url: /f5ads/aws/deploy/nginx-configuration/nginx-config-restrictions/
f5-content-type: reference
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, NGINX configuration, listen restrictions, proxy_protocol, IPv6, UDP, QUIC, listen ports"
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, NGINX configuration, listen restrictions, proxy_protocol, IPv6, UDP, QUIC, listen ports"
f5-summary: >
- This reference documents NGINX configuration restrictions that apply specifically to F5 NGINXaaS for AWS deployments, beyond the general NGINXaaS restrictions.
+ This reference documents NGINX configuration restrictions that apply specifically to F5 Application Delivery Service for AWS deployments, beyond the general F5 ADS restrictions.
Use it to look up listener, protocol, and port limits before you upload a configuration.
f5-audience: operator
---
-NGINXaaS for AWS enforces additional restrictions on NGINX configurations to support its managed network interfaces. These restrictions are validated when you upload a configuration; configurations that violate any restriction are rejected before they are applied.
+F5 Application Delivery Service for AWS enforces additional restrictions on NGINX configurations to support its managed network interfaces. These restrictions are validated when you upload a configuration; configurations that violate any restriction are rejected before they are applied.
## Listen address restrictions
-For general listen address and port restrictions that apply to all NGINXaaS deployments, see [Listener restrictions]({{< ref "/nginxaas/overview/nginx-configuration/configuration-rules.md#listener-restrictions" >}}).
+For general listen address and port restrictions that apply to all F5 ADS deployments, see [Listener restrictions]({{< ref "/f5ads/overview/nginx-configuration/configuration-rules.md#listener-restrictions" >}}).
## IPv6 requirement for UDP and QUIC
-NGINXaaS for AWS requires using an IPv6 address on listener ports configured for UDP or QUIC protocols. For example, a UDP listener can be configured as `listen [::]:53 udp;`. If a port configured for UDP or QUIC does not include an IPv6 listening address, the NGINX configuration cannot be applied to an AWS deployment.
+F5 ADS for AWS requires using an IPv6 address on listener ports configured for UDP or QUIC protocols. For example, a UDP listener can be configured as `listen [::]:53 udp;`. If a port configured for UDP or QUIC does not include an IPv6 listening address, the NGINX configuration cannot be applied to an AWS deployment.
{{< call-out class="note" title="Note" >}}
-Configuring the NGINX deployment to listen on IPv6 does not restrict or otherwise impact the IP address type used for incoming client traffic or upstream traffic. NGINXaaS ensures that IPv4 and IPv6 client traffic is always supported to the frontend service, and you can configure upstream traffic to use IPv4, IPv6, or both based on your application's needs.
+Configuring the NGINX deployment to listen on IPv6 does not restrict or otherwise impact the IP address type used for incoming client traffic or upstream traffic. F5 ADS ensures that IPv4 and IPv6 client traffic is always supported to the frontend service, and you can configure upstream traffic to use IPv4, IPv6, or both based on your application's needs.
{{< /call-out >}}
@@ -38,7 +38,7 @@ All `listen` directives for a given port (across every server block in the confi
All `listen` directives for the same port must use the same address family:
-- **Merging within a single server block**: When a server block contains both an IPv4 listener and an IPv6 listener on the same port, NGINXaaS collapses them into a single port entry that carries both address families. That entry includes IPv6, so the NLB listener for that port is created as an IPv6 target group.
+- **Merging within a single server block**: When a server block contains both an IPv4 listener and an IPv6 listener on the same port, F5 ADS collapses them into a single port entry that carries both address families. That entry includes IPv6, so the NLB listener for that port is created as an IPv6 target group.
- **Cross-server-block mixing is not allowed**: If port _N_ is referenced with an IPv6 address in one server block, every other server block that references port _N_ must also use IPv6. An IPv4-only listener for the same port in a different server block is not supported.
## Unique listen port limit
@@ -47,4 +47,4 @@ A configuration can define at most 50 unique listen ports across the entire conf
## What's next
-[Monitor your deployment]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}})
\ No newline at end of file
+[Monitor your deployment]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}})
\ No newline at end of file
diff --git a/content/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md b/content/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md
new file mode 100644
index 0000000000..8f91022336
--- /dev/null
+++ b/content/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md
@@ -0,0 +1,16 @@
+---
+title: Create or upload using the Console
+description: "Create, upload, and update NGINX configurations for F5 Application Delivery Service for AWS using the F5 ADS Console."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/deploy/nginx-configuration/nginx-configuration-console/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, NGINX configuration, F5 ADS Console, upload configuration, update configuration"
+f5-summary: >
+ Learn how to create, upload, update, and delete NGINX configurations for F5 Application Delivery Service for AWS using the F5 ADS Console.
+ This guide walks through the console workflow for managing configuration files and versions.
+f5-audience: operator
+contentSource: f5ads/overview/nginx-configuration/nginx-configuration-console.md
+---
diff --git a/content/f5ads/aws/deploy/prerequisites.md b/content/f5ads/aws/deploy/prerequisites.md
new file mode 100644
index 0000000000..6daf2d0a5b
--- /dev/null
+++ b/content/f5ads/aws/deploy/prerequisites.md
@@ -0,0 +1,25 @@
+---
+title: Prerequisites
+description: "Steps to subscribe to F5 Application Delivery Service for AWS in the AWS Marketplace before you deploy."
+weight: 100
+toc: false
+f5-docs: DOCS-000
+url: /f5ads/aws/deploy/prerequisites/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, prerequisites, AWS Marketplace, subscribe, Early Access"
+f5-summary: >
+ Before you can deploy F5 Application Delivery Service for AWS, you must subscribe to the AWS Marketplace offering.
+ This page covers Early Access enrollment and what to do next once you're subscribed.
+f5-audience: operator
+---
+
+Before you can deploy F5 Application Delivery Service for AWS, you must subscribe to the AWS Marketplace offering.
+
+## Early Access to the F5 ADS for AWS Marketplace offering
+
+F5 ADS for AWS is currently in Early Access. Contact us if you are interested in participating in our Early Access offering by sending an email to nginxaas-early-access@f5.com.
+
+## What's next
+
+[Create a Deployment]({{< ref "/f5ads/aws/deploy/create-deployment/deploy-console.md" >}})
diff --git a/content/nginxaas/aws/deploy/ssl-tls-certificates/_index.md b/content/f5ads/aws/deploy/ssl-tls-certificates/_index.md
similarity index 52%
rename from content/nginxaas/aws/deploy/ssl-tls-certificates/_index.md
rename to content/f5ads/aws/deploy/ssl-tls-certificates/_index.md
index 46e8abfc40..8d997f5f73 100644
--- a/content/nginxaas/aws/deploy/ssl-tls-certificates/_index.md
+++ b/content/f5ads/aws/deploy/ssl-tls-certificates/_index.md
@@ -1,5 +1,5 @@
---
title: Add SSL-TLS certificates
weight: 400
-url: /nginxaas/aws/deploy/ssl-tls-certificates/
+url: /f5ads/aws/deploy/ssl-tls-certificates/
---
diff --git a/content/f5ads/aws/deploy/ssl-tls-certificates/overview.md b/content/f5ads/aws/deploy/ssl-tls-certificates/overview.md
new file mode 100644
index 0000000000..1d806dd4aa
--- /dev/null
+++ b/content/f5ads/aws/deploy/ssl-tls-certificates/overview.md
@@ -0,0 +1,45 @@
+---
+title: Overview
+description: "Reference for supported SSL/TLS certificate types and how to add them to an F5 Application Delivery Service for AWS deployment."
+weight: 50
+toc: true
+url: /f5ads/aws/deploy/ssl-tls-certificates/overview/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, SSL, TLS, certificates, AWS Secrets Manager, certificate rotation, PEM"
+f5-summary: >
+ This reference covers the SSL/TLS certificate types and formats F5 Application Delivery Service for AWS supports, and the two ways to manage them: the F5 ADS Console and AWS Secrets Manager.
+ Use it to choose a certificate management approach and understand automatic and manual rotation options.
+f5-audience: operator
+---
+
+Use F5 Application Delivery Service for AWS to secure traffic by adding SSL/TLS certificates to a deployment.
+
+## Supported certificate types and formats
+
+NGINX supports the following certificate formats:
+
+- PEM format certificates.
+
+You can upload these certificates as text, as files, or as secrets from [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
+
+Encrypt your certificates, keys, and PEM files using one of these algorithms:
+
+- RSA
+- ECC/ECDSA
+
+## Add SSL/TLS certificates
+
+F5 ADS for AWS supports two ways to manage your certificates and keys securely:
+
+**F5 ADS Console**: Manage certificates alongside the NGINX configurations that reference them. See [Add certificates using the F5 ADS Console]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md" >}}).
+
+**AWS Secrets Manager**: Fetch secrets directly from [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html), keeping credentials within AWS. See [Add certificates from AWS Secrets Manager]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}}).
+
+## Certificate rotation
+
+F5 ADS for AWS supports automatic and manual rotation for AWS Secrets Manager certificates:
+
+**Automatic rotation**: Let F5 ADS for AWS pick up new certificate versions automatically with no configuration changes needed. See [Rotate an AWS Secrets Manager certificate (automatic)]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md#rotate-an-aws-secrets-manager-certificate-automatic" >}}).
+
+**Manual rotation**: When you need to update certificates immediately, use **Reapply Configuration** in the console to refetch secrets right away. See [Rotate an AWS Secrets Manager certificate (manual)]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md#rotate-an-aws-secrets-manager-certificate-manual" >}}).
diff --git a/content/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md b/content/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
new file mode 100644
index 0000000000..39e87657e7
--- /dev/null
+++ b/content/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
@@ -0,0 +1,20 @@
+---
+title: Add certificates using the Console
+description: "Add, update, and delete SSL/TLS certificates for F5 Application Delivery Service for AWS using the F5 ADS Console."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, SSL, TLS, certificates, F5 ADS Console, add certificate"
+f5-summary: >
+ Learn how to add, use, and delete SSL/TLS certificates for F5 Application Delivery Service for AWS using the F5 ADS Console.
+ This guide covers uploading certificates and referencing them in an NGINX configuration.
+f5-audience: operator
+contentSource: f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
+---
+
+## What's next
+
+[Upload an NGINX Configuration]({{< ref "/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md b/content/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md
similarity index 57%
rename from content/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md
rename to content/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md
index cfe0ba26b5..86f8db7d9b 100644
--- a/content/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md
+++ b/content/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md
@@ -1,28 +1,28 @@
---
title: Add certificates from AWS Secrets Manager
-description: "Fetch SSL/TLS certificates for F5 NGINXaaS for AWS directly from AWS Secrets Manager."
+description: "Fetch SSL/TLS certificates for F5 Application Delivery Service for AWS directly from AWS Secrets Manager."
weight: 75
toc: true
f5-docs: DOCS-000
-url: /nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager/
+url: /f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager/
f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, AWS Secrets Manager, SSL, TLS, certificates, IAM, automatic rotation, ABAC"
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, AWS Secrets Manager, SSL, TLS, certificates, IAM, automatic rotation, ABAC"
f5-summary: >
- Learn how to fetch SSL/TLS certificates and keys for F5 NGINXaaS for AWS directly from AWS Secrets Manager, keeping credentials within AWS.
+ Learn how to fetch SSL/TLS certificates and keys for F5 Application Delivery Service for AWS directly from AWS Secrets Manager, keeping credentials within AWS.
This guide covers IAM permissions, adding secrets to an NGINX configuration, and automatic and manual certificate rotation.
f5-audience: operator
---
-F5 NGINXaaS for AWS can fetch secrets directly from [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) to use as certificates and keys in your NGINX configuration, ensuring your credentials remain securely within AWS.
+F5 Application Delivery Service for AWS can fetch secrets directly from [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) to use as certificates and keys in your NGINX configuration, ensuring your credentials remain securely within AWS.
## Prerequisites
-If you haven't already done so, [create an NGINXaaS deployment]({{< ref "/nginxaas/aws/deploy/create-deployment/deploy-console.md" >}}) with an IAM role. See [Identity and access management]({{< ref "/nginxaas/aws/deploy/access-management.md" >}}) for more information.
+If you haven't already done so, [create an F5 ADS deployment]({{< ref "/f5ads/aws/deploy/create-deployment/deploy-console.md" >}}) with an IAM role. See [Identity and access management]({{< ref "/f5ads/aws/deploy/access-management.md" >}}) for more information.
### IAM role permissions policy
-To allow NGINXaaS for AWS access to your AWS Secrets Manager secrets, you must attach a permissions policy to your IAM role. The policy must allow the `secretsmanager:GetSecretValue` action. For example, the following policy allows access to the specified secret.
+To allow F5 ADS for AWS access to your AWS Secrets Manager secrets, you must attach a permissions policy to your IAM role. The policy must allow the `secretsmanager:GetSecretValue` action. For example, the following policy allows access to the specified secret.
```json
{
@@ -39,7 +39,7 @@ To allow NGINXaaS for AWS access to your AWS Secrets Manager secrets, you must a
See [AWS Secrets Manager identity-based policies](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_iam-policies.html#auth-and-access_examples_identity_read) for more examples.
-NGINXaaS for AWS also supports attribute-based access control (ABAC) by restricting access based on tag attributes. For example, the following policy allows only the specified NGINXaaS deployment to access the secret.
+F5 ADS for AWS also supports attribute-based access control (ABAC) by restricting access based on tag attributes. For example, the following policy allows only the specified F5 ADS deployment to access the secret.
```json
{
@@ -51,7 +51,7 @@ NGINXaaS for AWS also supports attribute-based access control (ABAC) by restrict
"Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf",
"Condition": {
"StringEquals": {
- "aws:PrincipalTag/NGINXaaS:DeploymentName": "test-deployment"
+ "aws:PrincipalTag/F5ADS:DeploymentName": "test-deployment"
}
}
}
@@ -61,15 +61,15 @@ NGINXaaS for AWS also supports attribute-based access control (ABAC) by restrict
The session tags passed in the request to fetch the secret will appear in `AssumeRole` [events in CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_ctlogs). The following tags are supported:
-- `NGINXaaS:OrganizationID`
-- `NGINXaaS:DeploymentID`
-- `NGINXaaS:DeploymentName`
+- `F5ADS:OrganizationID`
+- `F5ADS:DeploymentID`
+- `F5ADS:DeploymentName`
## Add an SSL/TLS certificate to AWS Secrets Manager
To add an SSL/TLS certificate and key as a secret to AWS Secrets Manager,
-1. Make sure your certificate and key file(s) are in one of the [accepted formats]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/overview.md#supported-certificate-types-and-formats" >}}).
+1. Make sure your certificate and key file(s) are in one of the [accepted formats]({{< ref "/f5ads/aws/deploy/ssl-tls-certificates/overview.md#supported-certificate-types-and-formats" >}}).
1. Follow AWS's [instructions to create a secret in AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) and set your certificate and private key file contents as the `plaintext` secret value.
{{< call-out class="note" title="Note" >}}
@@ -80,7 +80,7 @@ There are many ways to manage your SSL/TLS certificates and keys. For example, y
## Use an AWS Secrets Manager certificate in an NGINX configuration
-To add your AWS Secrets Manager certificate and key to an NGINX configuration in the NGINXaaS console,
+To add your AWS Secrets Manager certificate and key to an NGINX configuration in the F5 ADS Console,
1. Select **Configurations** in the left menu.
2. Select the ellipsis (three dots) next to the configuration you want to edit, and select **Edit**.
@@ -93,22 +93,22 @@ To add your AWS Secrets Manager certificate and key to an NGINX configuration in
| Field | Description | Note |
|---------------------------- | ---------------------------- | ---- |
| Secret ARN | The Amazon Resource Name (ARN) of the secret in AWS Secrets Manager | The ARN must match the format `arn::secretsmanager:::secret:-<6_RANDOM_CHARACTERS>`. |
- | Version Stage | The staging label of the secret version. | Version stage is optional and cannot be specified at the same time as Version ID. If you don't specify a version stage or a version ID, NGINXaaS for AWS fetches the version labeled `AWSCURRENT`. See AWS's [documentation on secret versions](https://docs.aws.amazon.com/secretsmanager/latest/userguide/whats-in-a-secret.html#term_version) for more information. |
- | Version ID | The unique identifier of the secret version. | Version ID is optional and cannot be specified at the same time as version stage. If you don't specify a version stage or a version ID, NGINXaaS for AWS fetches the version labeled `AWSCURRENT`. |
- | File Path | NGINXaaS writes the secret to this file path, so it can be used with NGINX directives such as `ssl_certificate` or `ssl_certificate_key` in your NGINX configuration. | The path must be unique within the configuration. See the [NGINX Filesystem Restrictions table]({{< ref "/nginxaas/aws/deploy/nginx-configuration/configuration-rules.md#nginx-filesystem-restrictions" >}}) for the allowed directories the file can be written to. |
+ | Version Stage | The staging label of the secret version. | Version stage is optional and cannot be specified at the same time as Version ID. If you don't specify a version stage or a version ID, F5 ADS for AWS fetches the version labeled `AWSCURRENT`. See AWS's [documentation on secret versions](https://docs.aws.amazon.com/secretsmanager/latest/userguide/whats-in-a-secret.html#term_version) for more information. |
+ | Version ID | The unique identifier of the secret version. | Version ID is optional and cannot be specified at the same time as version stage. If you don't specify a version stage or a version ID, F5 ADS for AWS fetches the version labeled `AWSCURRENT`. |
+ | File Path | F5 ADS writes the secret to this file path, so it can be used with NGINX directives such as `ssl_certificate` or `ssl_certificate_key` in your NGINX configuration. | The path must be unique within the configuration. See the [NGINX Filesystem Restrictions table]({{< ref "/f5ads/aws/deploy/nginx-configuration/configuration-rules.md#nginx-filesystem-restrictions" >}}) for the allowed directories the file can be written to. |
{{< /table >}}
{{< call-out "tip" "Enable automatic rotation with AWSCURRENT" >}}
-If you set the **Version Stage** to `AWSCURRENT` or leave **Version Stage** and **Version ID** unspecified, NGINXaaS for AWS automatically picks up any new secret version AWS Secrets Manager promotes to `AWSCURRENT` without a configuration change. NGINXaaS for AWS applies new versions within four hours. See [Rotate an AWS Secrets Manager certificate (automatic)](#rotate-an-aws-secrets-manager-certificate-automatic) for details.
+If you set the **Version Stage** to `AWSCURRENT` or leave **Version Stage** and **Version ID** unspecified, F5 ADS for AWS automatically picks up any new secret version AWS Secrets Manager promotes to `AWSCURRENT` without a configuration change. F5 ADS for AWS applies new versions within four hours. See [Rotate an AWS Secrets Manager certificate (automatic)](#rotate-an-aws-secrets-manager-certificate-automatic) for details.
{{< /call-out >}}
7. Update the NGINX configuration to reference the certificate you just added by the path value.
8. Select **Add**, **Next**, and then **Save** to save your changes.
-## Update your NGINXaaS deployment's NGINX configuration
+## Update your F5 ADS deployment's NGINX configuration
-Before updating your NGINXaaS deployment to use your new NGINX configuration, make sure your deployment already has an [IAM role set up]({{< ref "/nginxaas/aws/deploy/access-management.md" >}}) with the `secretsmanager:GetSecretValue` permission granted, so it can fetch certificates. Then, in the NGINXaaS console:
+Before updating your F5 ADS deployment to use your new NGINX configuration, make sure your deployment already has an [IAM role set up]({{< ref "/f5ads/aws/deploy/access-management.md" >}}) with the `secretsmanager:GetSecretValue` permission granted, so it can fetch certificates. Then, in the F5 ADS Console:
1. Select **Deployments**.
1. Select the deployment you want to edit.
@@ -124,9 +124,9 @@ Configurations with AWS Secrets Manager secrets can only be added to AWS deploym
## Rotate an AWS Secrets Manager certificate (automatic)
-If you set the **Version Stage** to `AWSCURRENT` or leave **Version Stage** and **Version ID** unspecified, NGINXaaS for AWS fetches the latest secret version. When you [update the value of a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret-value.html) or [configure an AWS Lambda function to rotate the secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_lambda.html), AWS Secrets Manager moves the `AWSCURRENT` label to the new secret version. NGINXaaS for AWS automatically picks up that new version within four hours.
+If you set the **Version Stage** to `AWSCURRENT` or leave **Version Stage** and **Version ID** unspecified, F5 ADS for AWS fetches the latest secret version. When you [update the value of a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret-value.html) or [configure an AWS Lambda function to rotate the secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_lambda.html), AWS Secrets Manager moves the `AWSCURRENT` label to the new secret version. F5 ADS for AWS automatically picks up that new version within four hours.
-If you set the **Version Stage** to a staging label other than `AWSCURRENT`, NGINXaaS for AWS fetches the secret version the staging label points to. When you [move a staging label to point to a different secret in AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecretVersionStage.html), NGINXaaS for AWS automatically picks up that secret within four hours.
+If you set the **Version Stage** to a staging label other than `AWSCURRENT`, F5 ADS for AWS fetches the secret version the staging label points to. When you [move a staging label to point to a different secret in AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecretVersionStage.html), F5 ADS for AWS automatically picks up that secret within four hours.
No configuration changes are required in either case. To confirm your deployment is using an updated certificate, check the **Certificates** list for the new serial number or inspect the certificate at your deployment's endpoint.
@@ -134,27 +134,29 @@ No configuration changes are required in either case. To confirm your deployment
To immediately refetch secrets without editing your NGINX configuration, use **Reapply Configuration**. This is useful in the following scenarios:
-- **New secret version**: You've uploaded a new certificate and want NGINXaaS for AWS to use it right away.
-- **Updated IAM role or permissions**: You've updated your IAM role trust policy or permissions policy and want NGINXaaS for AWS to retry immediately.
+- **New secret version**: You've uploaded a new certificate and want F5 ADS for AWS to use it right away.
+- **Updated IAM role or permissions**: You've updated your IAM role trust policy or permissions policy and want F5 ADS for AWS to retry immediately.
To reapply your configuration:
-1. In the NGINXaaS console, go to your deployment.
+1. In the F5 ADS Console, go to your deployment.
2. Select **Reapply Configuration** in the **Configuration Info** panel.
-NGINXaaS for AWS reapplies your current configuration version and immediately refetches all referenced secrets.
+F5 ADS for AWS reapplies your current configuration version and immediately refetches all referenced secrets.
## Monitor secret fetch events
-NGINXaaS for AWS generates an event each time it fetches or fails to fetch a secret from AWS Secrets Manager. Use these events to track successful rotations and diagnose access failures.
+F5 ADS for AWS generates an event each time it fetches or fails to fetch a secret from AWS Secrets Manager. Use these events to track successful rotations and diagnose access failures.
### Event types
{{< table >}}
+
| Event type | Description |
|---|---|
| Successful Secret Fetch from AWS | The secret was fetched from AWS Secrets Manager and applied to NGINX. |
-| Failed Secret Fetch from AWS | NGINXaaS for AWS couldn't fetch the secret. The event message includes the error details. |
+| Failed Secret Fetch from AWS | F5 ADS for AWS couldn't fetch the secret. The event message includes the error details. |
+
{{< /table >}}
### View events in the console
@@ -165,13 +167,15 @@ NGINXaaS for AWS generates an event each time it fetches or fails to fetch a sec
### Common failure messages and remediation
{{< table >}}
+
| Message | Likely cause | Remediation |
|---|---|---|
-| `operation error Secrets Manager: GetSecretValue, get identity: get credentials: failed to refresh cached credentials, operation error STS: AssumeRole...` | The IAM role's trust policy is not configured correctly. | Verify the IAM role trust policy allows `sts:AssumeRole` and `sts:TagSession` on the NGINXaaS principal. |
+| `operation error Secrets Manager: GetSecretValue, get identity: get credentials: failed to refresh cached credentials, operation error STS: AssumeRole...` | The IAM role's trust policy is not configured correctly. | Verify the IAM role trust policy allows `sts:AssumeRole` and `sts:TagSession` on the F5 ADS principal. |
| `AccessDeniedException... no identity-based policy allows the secretsmanager:GetSecretValue action` | The IAM role's permissions policy is not configured correctly. | Verify the IAM role has a permissions policy allowing `secretsmanager:GetSecretValue` on the secret ARN and any tag attribute conditions are met. |
| `ResourceNotFoundException: Secrets Manager can't find the specified secret...` | The secret ARN doesn't exist, or the referenced version stage or version ID doesn't point to an existing version. | Confirm the secret ARN is correct and that the specified version stage or version ID is assigned to an existing version. |
+
{{< /table >}}
## What's next
-[Upload an NGINX Configuration]({{< ref "/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md" >}})
+[Upload an NGINX Configuration]({{< ref "/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/f5ads/aws/f5ads-glossary.md b/content/f5ads/aws/f5ads-glossary.md
new file mode 100644
index 0000000000..61c817f797
--- /dev/null
+++ b/content/f5ads/aws/f5ads-glossary.md
@@ -0,0 +1,16 @@
+---
+title: Glossary
+description: "Definitions for terms and acronyms used in F5 Application Delivery Service for AWS documentation."
+weight: 900
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/f5ads-glossary/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, glossary, terminology, geographical controller, F5 ADS deployment, service frontend, upstream network, VPC endpoint, VPC peering"
+f5-summary: >
+ This glossary defines terms and acronyms commonly used in F5 Application Delivery Service for AWS documentation.
+ Use it to look up definitions for concepts like geographical controllers, service frontends, and VPC networking as they apply to F5 ADS deployments.
+f5-audience: any
+contentSource: f5ads/overview/f5ads-glossary.md
+---
diff --git a/content/f5ads/aws/known-issues.md b/content/f5ads/aws/known-issues.md
new file mode 100644
index 0000000000..230ec6dbc2
--- /dev/null
+++ b/content/f5ads/aws/known-issues.md
@@ -0,0 +1,21 @@
+---
+title: "Known issues"
+description: "List of known issues in the latest release of F5 Application Delivery Service for AWS."
+weight: 1100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/known-issues/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, known issues, limitations, release notes"
+f5-summary: >
+ This page lists known issues in the latest release of F5 Application Delivery Service for AWS.
+ Check here before you report a problem, since a fix or workaround may already be documented.
+f5-audience: any
+---
+
+List of known issues in the latest release of F5 Application Delivery Service for AWS.
+
+_There are currently no known issues._
+
+{{< call-out class="note" >}} You may also want to be familiar with the documented [F5 ADS for AWS limitations]({{< ref "/f5ads/aws/overview.md#current-limitations" >}}). {{< /call-out >}}
diff --git a/content/f5ads/aws/monitoring/_index.md b/content/f5ads/aws/monitoring/_index.md
new file mode 100644
index 0000000000..b6821c92fc
--- /dev/null
+++ b/content/f5ads/aws/monitoring/_index.md
@@ -0,0 +1,7 @@
+---
+title: Logging and monitoring
+weight: 300
+url: /f5ads/aws/monitoring/
+f5-product: F5 Application Delivery Service for AWS
+---
+
diff --git a/content/f5ads/aws/monitoring/enable-monitoring.md b/content/f5ads/aws/monitoring/enable-monitoring.md
new file mode 100644
index 0000000000..94e7bd5e7a
--- /dev/null
+++ b/content/f5ads/aws/monitoring/enable-monitoring.md
@@ -0,0 +1,87 @@
+---
+title: Enable monitoring
+description: "Learn how to enable, view, and disable Amazon CloudWatch metric export for F5 Application Delivery Service for AWS deployments."
+weight: 200
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/monitoring/enable-monitoring/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, CloudWatch, metrics, monitoring, Embedded Metric Format, EMF, CloudWatch Logs, status_zone"
+f5-summary: >
+ Learn how to export performance metrics from F5 Application Delivery Service for AWS deployments to Amazon CloudWatch.
+ This guide covers configuring IAM role permissions, enabling metric export in the F5 ADS Console, and viewing metrics in CloudWatch Metrics Explorer.
+f5-audience: operator
+---
+
+## Overview
+
+Monitoring your application's performance is crucial for maintaining its reliability and efficiency. F5 Application Delivery Service for AWS integrates with Amazon CloudWatch so you can collect, correlate, and analyze metrics for a thorough understanding of your application's health and behavior.
+
+F5 ADS for AWS exports metrics using the [Amazon CloudWatch Embedded Metric Format (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html). When you enable metric export, F5 ADS writes EMF records to a CloudWatch Logs log group (the **Metric Group**) in a log stream named `metrics`. CloudWatch automatically extracts these records into metrics under the `F5 Application Delivery Service` namespace, where you can chart and query them like any other CloudWatch metric.
+
+## Before you begin
+
+- Configure a **Role ARN** in the **Identity** section of your deployment. F5 ADS uses this IAM role to export metrics to CloudWatch. See [Identity and access management]({{< ref "/f5ads/aws/deploy/access-management.md" >}}) for how to create the role and attach the [Policy for CloudWatch Logs]({{< ref "/f5ads/aws/deploy/access-management.md#step-3-add-inline-policies-to-your-role" >}}).
+- Grant the IAM role the permissions required to export metrics:
+ - `logs:CreateLogStream` and `logs:PutLogEvents`: required for F5 ADS to write EMF records to the metric log group.
+ - `logs:CreateLogGroup`: required only if you want F5 ADS to create the log group for you. If you pre-create the log group yourself, you can omit this permission.
+
+ See [AWS's documentation on controlling access to CloudWatch Logs with IAM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/auth-and-access-control-cwl.html) for more information.
+- To view metrics in the CloudWatch console, your own AWS identity needs read access such as `cloudwatch:GetMetricData` and `cloudwatch:ListMetrics`. This is separate from the deployment's IAM role. See [AWS's documentation on identity and access management for Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) for more information.
+- Configure the [`status_zone`](https://nginx.org/en/docs/http/ngx_http_status_module.html#status_zone) directive in your `server` blocks and the [`zone`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone) directive in your `upstream` blocks to collect HTTP request and response statistics, stream connection metrics, upstream statistics, and memory statistics. See the [Metrics Catalog]({{< ref "/f5ads/aws/monitoring/metrics-catalog.md" >}}) for configuration requirements.
+
+## Export F5 ADS metrics to CloudWatch
+
+To enable exporting metrics, turn on the **Export Metrics to CloudWatch** toggle when creating or updating a deployment. To create a deployment, see [our documentation on creating an F5 ADS deployment]({{< ref "/f5ads/aws/deploy/create-deployment/" >}}) for a step-by-step guide. To update an existing deployment, in the F5 ADS Console,
+
+1. On the navigation menu, select **Deployments**.
+1. Select the deployment you want to update and select **Edit**.
+1. In the **Identity** section, make sure the **Role ARN** field is populated with an IAM role that has the [required permissions](#before-you-begin). Metric export fails without it.
+1. In the **Observability** section, turn on the **Export Metrics to CloudWatch** toggle.
+1. In the **Metric Group Name** field, enter the name of the CloudWatch Logs log group you want to receive exported metrics. If you leave this field at its default, F5 ADS uses a log group named after the deployment object ID.
+1. Select **Update**.
+
+Within the metric log group, F5 ADS writes EMF records to a log stream named `metrics`. CloudWatch extracts these records into metrics under the `F5 Application Delivery Service` namespace.
+
+## View F5 ADS metrics in Amazon CloudWatch
+
+See the [Metrics Catalog]({{< ref "/f5ads/aws/monitoring/metrics-catalog.md" >}}) for a full list of metrics F5 ADS for AWS provides.
+
+### CloudWatch Metrics Explorer
+
+Log in to the [AWS Management Console](https://console.aws.amazon.com/),
+
+1. Go to the **CloudWatch** console.
+1. Select **Classic Metrics** and then select the **F5 Application Delivery Service** tile in the **Custom Namespaces** section.
+
+Refer to the [AWS's CloudWatch Metrics Explorer](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metrics-Explorer.html) documentation to learn how you can create charts and queries.
+
+{{< call-out class="note" >}}Metrics can take a few minutes to appear after you enable export, because CloudWatch must first ingest the EMF records and extract them into the `F5 Application Delivery Service` namespace. To inspect the raw EMF records, open the `metrics` log stream in your metric log group with [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).{{< /call-out >}}
+
+## Disable F5 ADS metric export to CloudWatch
+
+To stop exporting metrics, update your F5 ADS deployment to turn off the metric export toggle. To update the deployment, in the F5 ADS Console,
+
+1. On the navigation menu, select **Deployments**.
+1. Select the deployment you want to update and select **Edit**.
+1. In the **Observability** section, turn off the **Export Metrics to CloudWatch** toggle.
+1. Select **Update**.
+
+## Troubleshooting
+
+If Amazon CloudWatch is not showing any metrics, check for **Failed Metric Export to CloudWatch** events from your F5 ADS deployment.
+
+In the F5 ADS Console:
+
+1. On the navigation menu, select **Events**.
+1. Select **Add Filter**.
+1. Select **Affected Object** and the name of your F5 ADS deployment.
+
+Events are deleted after 14 days.
+
+## What's next
+
+- [Enable NGINX logs]({{< ref "/f5ads/aws/monitoring/enable-nginx-logs.md" >}})
+- [Metrics catalog]({{< ref "/f5ads/aws/monitoring/metrics-catalog.md" >}})
+- [Identity and access management]({{< ref "/f5ads/aws/deploy/access-management.md" >}})
diff --git a/content/nginxaas/aws/monitoring/enable-nginx-logs.md b/content/f5ads/aws/monitoring/enable-nginx-logs.md
similarity index 62%
rename from content/nginxaas/aws/monitoring/enable-nginx-logs.md
rename to content/f5ads/aws/monitoring/enable-nginx-logs.md
index b3b8d169fb..b68c533a9e 100644
--- a/content/nginxaas/aws/monitoring/enable-nginx-logs.md
+++ b/content/f5ads/aws/monitoring/enable-nginx-logs.md
@@ -4,53 +4,53 @@ description: "Learn how to configure, export, view, and disable NGINX access and
weight: 350
toc: true
f5-docs: DOCS-000
-url: /nginxaas/aws/monitoring/enable-nginx-logs/
+url: /f5ads/aws/monitoring/enable-nginx-logs/
f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, CloudWatch Logs, access logs, error logs, log export, CloudWatch Logs Insights"
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, CloudWatch Logs, access logs, error logs, log export, CloudWatch Logs Insights"
f5-summary: >
- Learn how to collect and export NGINX access and error logs from F5 NGINXaaS for AWS deployments to Amazon CloudWatch Logs.
- This guide details IAM permission setup, log export toggles in the NGINXaaS console, and querying log streams using CloudWatch Logs Insights.
+ Learn how to collect and export NGINX access and error logs from F5 Application Delivery Service for AWS deployments to Amazon CloudWatch Logs.
+ This guide details IAM permission setup, log export toggles in the F5 ADS Console, and querying log streams using CloudWatch Logs Insights.
f5-audience: operator
---
## Overview
-F5 NGINXaaS for AWS integrates with Amazon CloudWatch Logs to collect NGINX error and access logs.
+F5 Application Delivery Service for AWS integrates with Amazon CloudWatch Logs to collect NGINX error and access logs.
-When you enable log export, NGINXaaS writes NGINX logs to a CloudWatch Logs log group (the **Log Group**) in a log stream named `logs`.
+When you enable log export, F5 ADS writes NGINX logs to a CloudWatch Logs log group (the **Log Group**) in a log stream named `logs`.
## Before you begin
-- Configure a **Role ARN** in the **Identity** section of your deployment. NGINXaaS uses this IAM role to export logs to CloudWatch. See [Identity and access management]({{< ref "/nginxaas/aws/deploy/access-management.md" >}}) for how to create the role and attach the [Policy for CloudWatch Logs]({{< ref "/nginxaas/aws/deploy/access-management.md#step-3-add-inline-policies-to-your-role" >}}).
+- Configure a **Role ARN** in the **Identity** section of your deployment. F5 ADS uses this IAM role to export logs to CloudWatch. See [Identity and access management]({{< ref "/f5ads/aws/deploy/access-management.md" >}}) for how to create the role and attach the [Policy for CloudWatch Logs]({{< ref "/f5ads/aws/deploy/access-management.md#step-3-add-inline-policies-to-your-role" >}}).
- Grant the IAM role the permissions required to export logs:
- - `logs:CreateLogStream` and `logs:PutLogEvents`: required for NGINXaaS to write logs to the log group.
- - `logs:CreateLogGroup`: required only if you want NGINXaaS to create the log group for you. If you pre-create the log group yourself, you can omit this permission.
+ - `logs:CreateLogStream` and `logs:PutLogEvents`: required for F5 ADS to write logs to the log group.
+ - `logs:CreateLogGroup`: required only if you want F5 ADS to create the log group for you. If you pre-create the log group yourself, you can omit this permission.
See [AWS's documentation on controlling access to CloudWatch Logs with IAM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/auth-and-access-control-cwl.html) for more information.
- To view logs in the CloudWatch console, your own AWS identity needs read access such as `logs:GetLogEvents` and `logs:FilterLogEvents`. This is separate from the deployment's IAM role.
## Set up error logs
-{{< include "/nginxaas/logging-config-error-logs.md" >}}
+{{< include "/f5ads/logging-config-error-logs.md" >}}
## Set up access logs
-{{< include "/nginxaas/logging-config-access-logs.md" >}}
+{{< include "/f5ads/logging-config-access-logs.md" >}}
## Set up F5 WAF for NGINX security logs
-{{< include "/nginxaas/logging-config-security-logs.md" >}}
+{{< include "/f5ads/logging-config-security-logs.md" >}}
## Export NGINX logs to CloudWatch
-To enable exporting logs, turn on the **Export Logs to CloudWatch** toggle when creating or updating a deployment. To create a deployment, see [our documentation on creating an NGINXaaS deployment]({{< ref "/nginxaas/aws/deploy/create-deployment/" >}}) for a step-by-step guide. To update an existing deployment, in the NGINXaaS console,
+To enable exporting logs, turn on the **Export Logs to CloudWatch** toggle when creating or updating a deployment. To create a deployment, see [our documentation on creating an F5 ADS deployment]({{< ref "/f5ads/aws/deploy/create-deployment/" >}}) for a step-by-step guide. To update an existing deployment, in the F5 ADS Console,
1. On the navigation menu, select **Deployments**.
1. Select the deployment you want to update and select **Edit**.
1. In the **Identity** section, make sure the **Role ARN** field is populated with an IAM role that has the [required permissions](#before-you-begin). Log export fails without it.
1. In the **Observability** section, turn on the **Export Logs to CloudWatch** toggle.
-1. In the **Log Group Name** field, enter the name of the CloudWatch Logs log group you want to receive exported logs. If you leave this field at its default, NGINXaaS uses a log group named after the deployment object ID.
+1. In the **Log Group Name** field, enter the name of the CloudWatch Logs log group you want to receive exported logs. If you leave this field at its default, F5 ADS uses a log group named after the deployment object ID.
1. Select **Update**.
## View NGINX logs in Amazon CloudWatch Logs
@@ -66,11 +66,11 @@ Refer to the [AWS's CloudWatch Logs Insights](https://docs.aws.amazon.com/Amazon
Within the log group, NGINX access and error logs are written to a log stream named `logs`, which you can use to separate NGINX logs from the rest of your log group's streams. You can also filter based on the following fields using a CloudWatch Logs Insights `filter` or `stats` query, for example,
* `filename`
-* `nginxaas_deployment_location`
-* `nginxaas_deployment_name`
-* `nginxaas_deployment_object_id`
-* `nginxaas_namespace`
-* `nginxaas_organization_object_id`
+* `deployment_location`
+* `deployment_name`
+* `deployment_object_id`
+* `namespace`
+* `organization_object_id`
For example, to query for a deployment's /var/log/nginx/access.log entries:
@@ -88,7 +88,7 @@ The same procedure can be used to query via the newer **Log Analytics** feature
## Disable NGINX log export to CloudWatch
-To stop exporting logs, update your NGINXaaS deployment to turn off the log export toggle. To update the deployment, in the NGINXaaS console,
+To stop exporting logs, update your F5 ADS deployment to turn off the log export toggle. To update the deployment, in the F5 ADS Console,
1. On the navigation menu, select **Deployments**.
1. Select the deployment you want to update and select **Edit**.
@@ -97,18 +97,18 @@ To stop exporting logs, update your NGINXaaS deployment to turn off the log expo
## Troubleshooting
-If Amazon CloudWatch Logs is not showing any logs, check for **Failed Log Export to CloudWatch** events from your NGINXaaS deployment.
+If Amazon CloudWatch Logs is not showing any logs, check for **Failed Log Export to CloudWatch** events from your F5 ADS deployment.
-In the NGINXaaS console:
+In the F5 ADS Console:
1. On the navigation menu, select **Events**.
1. Select **Add Filter**.
-1. Select **Affected Object** and the name of your NGINXaaS deployment.
+1. Select **Affected Object** and the name of your F5 ADS deployment.
Events are deleted after 14 days.
## What's next
-- [Enable monitoring]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}})
-- [Metrics catalog]({{< ref "/nginxaas/aws/monitoring/metrics-catalog.md" >}})
-- [Identity and access management]({{< ref "/nginxaas/aws/deploy/access-management.md" >}})
+- [Enable monitoring]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}})
+- [Metrics catalog]({{< ref "/f5ads/aws/monitoring/metrics-catalog.md" >}})
+- [Identity and access management]({{< ref "/f5ads/aws/deploy/access-management.md" >}})
diff --git a/content/f5ads/aws/monitoring/metrics-catalog.md b/content/f5ads/aws/monitoring/metrics-catalog.md
new file mode 100644
index 0000000000..9a6158ef14
--- /dev/null
+++ b/content/f5ads/aws/monitoring/metrics-catalog.md
@@ -0,0 +1,33 @@
+---
+title: Metrics catalog
+description: "Reference catalog of Amazon CloudWatch metrics exported by F5 Application Delivery Service for AWS deployments."
+weight: 400
+toc: false
+f5-docs: DOCS-000
+url: /f5ads/aws/monitoring/metrics-catalog/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, metrics catalog, CloudWatch, connections, requests, SSL, cache, memory, upstream, stream"
+f5-summary: >
+ Reference catalog of metrics exported by F5 Application Delivery Service for AWS to Amazon CloudWatch under the F5 Application Delivery Service namespace.
+ Use this guide to look up metric names, labels, data types, and roll-up scopes for NGINX config, connections, requests, SSL, cache, memory, upstream, and stream statistics.
+f5-audience: operator
+---
+
+## Overview
+
+F5 Application Delivery Service for AWS provides a rich set of metrics that you can use to monitor the health and performance of your F5 ADS deployment. This document provides a catalog of the metrics that are available for monitoring F5 ADS for AWS.
+
+F5 ADS exports these metrics to Amazon CloudWatch using the [Embedded Metric Format (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html). CloudWatch extracts them into metrics under the `F5 Application Delivery Service` namespace. See [Enable monitoring]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}}) to configure metric export.
+
+The following metrics are reported by F5 ADS for AWS in Amazon CloudWatch under the `F5 Application Delivery Service` namespace. The labels allow you to filter or split your queries in Amazon CloudWatch providing you with a granular view over the metrics reported.
+
+{{< include "/f5ads/metrics-catalog.md" >}}
+
+## References
+
+For more information, see:
+
+- [Enable monitoring]({{< ref "/f5ads/aws/monitoring/enable-monitoring.md" >}})
+- [Enable NGINX logs]({{< ref "/f5ads/aws/monitoring/enable-nginx-logs.md" >}})
+- [Identity and access management]({{< ref "/f5ads/aws/deploy/access-management.md" >}})
diff --git a/content/f5ads/aws/overview.md b/content/f5ads/aws/overview.md
new file mode 100644
index 0000000000..ad3b611315
--- /dev/null
+++ b/content/f5ads/aws/overview.md
@@ -0,0 +1,153 @@
+---
+title: Overview and architecture
+description: "Overview of F5 Application Delivery Service for AWS architecture, capabilities, and how it integrates with your AWS environment."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/overview/
+f5-content-type: concept
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, architecture, service frontend, private endpoint, managed public endpoint, upstream network, NGINX Capacity Unit, NCU, geographical controller"
+f5-summary: >
+ NGINX Plus powers F5 Application Delivery Service for AWS, a fully managed, AWS-native SaaS load balancer and application delivery service.
+ This overview covers its architecture, service frontend types, upstream connectivity, and capacity model, so you understand how it fits into your AWS environment before you deploy.
+f5-audience: any
+---
+
+## What is F5 Application Delivery Service for AWS?
+
+F5 Application Delivery Service for AWS (F5 ADS for AWS) is a SaaS offering tightly integrated with AWS and its ecosystem of services. It helps make your applications fast, efficient, and reliable, using advanced traffic management from [NGINX Plus](https://www.nginx.com/products/nginx/) without the operational overhead.
+
+NGINX Plus extends NGINX Open Source with advanced functionality, giving you a complete application delivery solution. F5 ADS handles NGINX Plus license management automatically.
+
+{{}}
+ {{}}
+ Follow these steps to prepare for your F5 ADS deployment
+ {{}}
+ {{}}
+ Step-by-step instructions to deploy F5 ADS using the F5 ADS Console
+ {{}}
+ {{}}
+ Instructions to add SSL/TLS certificates to your F5 ADS deployment using the F5 ADS Console
+ {{}}
+ {{}}
+ Contact F5 support for assistance with F5 ADS for AWS
+ {{}}
+{{}}
+
+## Capabilities
+
+The key capabilities of F5 ADS for AWS are:
+
+- Simplifies onboarding and use of NGINX by providing a fully managed, ready-to-use service, eliminating the need for infrastructure setup or manual upgrades.
+- Lowers operational overhead in running and optimizing NGINX.
+- Simplifies NGINX deployments with fewer moving parts (edge routing is built into the service).
+- Supports migration of existing NGINX configurations to the cloud with minimal effort.
+- Integrates with the AWS ecosystem.
+- Uses consumption-based pricing, so your infrastructure costs align with actual usage through AWS transaction billing.
+
+## F5 ADS for AWS architecture
+
+{{< img src="f5ads/aws/nginxaas-aws-cloud-architecture.svg" alt="Architecture diagram showing how F5 ADS integrates with AWS. At the top, inside the AWS IaaS layer, NGINX Plus is managed using UI, API, and Terraform, alongside F5 ADS. Admins connect to this layer. Below, in the Customer VPC, end users connect through Edge Routing to multiple App Servers (labeled App Server 1). NGINX Plus directs traffic to these app servers. The Customer VPC also connects with AWS services such as AWS Secrets Manager, Amazon CloudWatch, and other AWS services. Green arrows show traffic flow from end users through edge routing and NGINX Plus to app servers, while blue arrows show admin access." >}}
+
+- Use the F5 ADS Console to create, update, and delete NGINX configurations, certificates, and F5 ADS deployments.
+- F5 ADS automatically adapts to application traffic demands through autoscaling.
+- Each F5 ADS deployment has dedicated network and compute resources, so there's no risk of noisy neighbor problems or data leakage between deployments.
+- F5 ADS acts as a load balancer, API gateway, and reverse proxy. It keeps your application workloads secure within your AWS account and serves traffic reliably and efficiently.
+- F5 ADS for AWS supports the following capabilities:
+ - HTTP, HTTP/2, HTTP/3, and gRPC traffic
+ - Layer 4 and Layer 7 load balancing with [configurable balancing methods](https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#method)
+ - IPv4 and IPv6 traffic
+ - UDP, TCP, and QUIC protocols
+ - Private or public internet client ingress
+ - [Request tracing](https://www.f5.com/company/blog/nginx/application-tracing-nginx-plus)
+ - HTTP to HTTPS, HTTPS to HTTP, and HTTP to HTTP redirects
+- You can also create custom rules for redirecting traffic. See [How to Create NGINX Rewrite Rules | NGINX](https://blog.nginx.org/blog/creating-nginx-rewrite-rules) for more details.
+
+### Service frontend
+
+The service frontend of an F5 ADS deployment controls how client ingress traffic reaches your deployment. There are two frontend types: managed public endpoint and private endpoint.
+
+#### Managed public endpoint
+
+A managed public endpoint frontend gives clients access over the internet through a public DNS name that F5 ADS creates in its network.
+
+**This frontend type is suitable for:**
+
+- Serving public web applications to end users over the internet
+- Proxying traffic from clients outside AWS
+- Testing F5 ADS configurations before you set up a [private endpoint](#private-endpoint) frontend
+
+Access control for this frontend type uses ACL rules to control traffic to the deployment. If you don't provide ACL rules, F5 ADS blocks all traffic. Each ACL rule includes the following settings:
+
+- **Source prefixes**: A list of CIDR blocks to allow traffic from
+ - Use `0.0.0.0/0`, `::0/0` to allow traffic from all source IP addresses
+- **Protocol**: The network protocol to allow
+ - Valid values are **TCP** and **UDP**
+ - Required when you specify a port or port range
+- **Port range**: A single port or port range to allow traffic from
+ - If you don't specify a port range, F5 ADS accepts traffic on any port
+ - Required when you specify a protocol
+
+#### Private endpoint
+
+A private endpoint frontend gives clients access through your network using [AWS PrivateLink](https://aws.amazon.com/privatelink/). With this approach, any application or client in your VPC can connect directly to your F5 ADS deployment through private networking.
+
+To set up connectivity:
+
+1. Create an [interface VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) in your own VPC.
+2. Connect the interface VPC endpoint to the VPC endpoint service provisioned for your F5 ADS deployment.
+
+For step-by-step instructions, see [Set up connectivity]({{< ref "/f5ads/aws/deploy/create-deployment/deploy-console.md#set-up-connectivity" >}}).
+
+**This frontend type is suitable for:**
+
+- Situations where you need greater control over traffic to the F5 ADS deployment
+- Environments where all clients exist within your AWS network
+- Internal services that shouldn't be exposed to the internet
+
+Access control for this frontend type uses a PrivateLink connection allow list, which restricts which AWS account IDs or VPC endpoint IDs can connect to the deployment:
+
+- **Allow list entries**: AWS account IDs or VPC endpoint IDs that can connect to the deployment
+- **No entries**: F5 ADS doesn't accept any PrivateLink connections
+- **Modifying the list**: You can add or remove entries at any time
+
+### Upstream network
+
+F5 ADS uses [AWS VPC Peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) to connect privately to your upstream applications.
+
+A VPC peering connection brings the deployment into your application network and supports secure, private connectivity to your upstream services. By managing your own VPC routing and security group rules, you control traffic flow and can apply your preferred security controls.
+
+To connect F5 ADS to your upstream VPC, [create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) from your AWS account targeting the F5 ADS deployment's AWS Account ID and VPC ID. Then add the peering connection ID to your deployment.
+
+{{< call-out class="caution" title="CIDR overlap" >}}
+Upstream VPC CIDRs must not overlap with the F5 ADS deployment VPC CIDRs, or the CIDRs of other peered upstream VPCs. If CIDRs overlap, VPC peering fails.
+{{< /call-out >}}
+
+### NGINX Capacity Unit (NCU)
+
+An NGINX Capacity Unit (NCU) quantifies the capacity of an NGINX deployment based on its underlying compute resources. With this abstraction, you can specify capacity in NCUs without considering hardware differences between regions.
+You can reserve a minimum capacity for your deployment. The deployment automatically scales up or down based on traffic demand and makes sure it never drops below the reserved minimum.
+
+### Geographical controllers
+
+F5 ADS for AWS operates globally, and regional controllers handle management requests. A geographical controller (GC) is a control plane that serves users within a defined geographic boundary. It addresses data residency and localization requirements. For example, a US geographical controller serves customers in the United States. F5 ADS currently operates in three geographies: US, EU, and Asia Pacific (APAC).
+
+### Supported regions
+
+{{< include "/f5ads/aws/supported-regions.md" >}}
+
+## Current limitations
+
+F5 is committed to enhancing F5 ADS for AWS and welcomes your feedback to help shape its future. If there are features you'd like to see prioritized, submit a [support ticket]({{< ref "/f5ads/aws/support.md" >}}) to share your suggestions.
+
+Be aware of the following constraints when using F5 ADS for AWS:
+
+- User Role-Based Access Control (RBAC) isn't supported yet. F5 plans to add this in a future release to improve access control for multi-user environments.
+- PrivateLink and upstream VPC peering connections must remain within the same AWS region as your deployment. Cross-region connections aren't supported yet.
+- F5 ADS deployments support up to 50 unique listen ports.
+- F5 ADS deployments can support UDP and QUIC traffic, but the deployment must listen for that traffic on IPv6. This doesn't require your incoming client or upstream traffic to be IPv6.
+
+## What's next
+
+To get started, check the [F5 ADS for AWS prerequisites]({{< ref "/f5ads/aws/deploy/prerequisites.md" >}}).
\ No newline at end of file
diff --git a/content/f5ads/aws/support.md b/content/f5ads/aws/support.md
new file mode 100644
index 0000000000..9c612b5100
--- /dev/null
+++ b/content/f5ads/aws/support.md
@@ -0,0 +1,16 @@
+---
+title: Support
+description: "How to contact F5 support for help with F5 Application Delivery Service for AWS."
+weight: 9999
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/aws/support/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for AWS
+f5-keywords: "F5 ADS for AWS, support, MyF5, help, contact support, create a case"
+f5-summary: >
+ Learn how to open a support case for F5 Application Delivery Service for AWS through the MyF5 portal.
+ This guide covers what information to include so F5 support can resolve your issue quickly.
+f5-audience: any
+contentSource: f5ads/support/
+---
diff --git a/content/f5ads/changelog.md b/content/f5ads/changelog.md
new file mode 100644
index 0000000000..37a27fd3b0
--- /dev/null
+++ b/content/f5ads/changelog.md
@@ -0,0 +1,48 @@
+---
+title: "Changelog"
+weight: 1000
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/changelog/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for AWS
+nollms: true
+---
+
+Learn about the latest updates, new features, and resolved bugs in F5 Application Delivery Service for AWS.
+
+To see a list of currently active issues, visit the [Known issues]({{< ref "/f5ads/aws/known-issues.md" >}}) page.
+
+## September 4, 2026
+
+- {{% icon-feature %}} **F5 ADS for AWS is now generally available in more regions**
+
+ F5 ADS for AWS is now available in the following additional regions per geography:
+
+ {{< table "table" >}}
+
+ | F5 ADS Geography | AWS Regions |
+ | --------------- | ----------------------- |
+ | CA | ca-central-1, ca-west-1 |
+
+ {{< /table >}}
+
+See the [Supported regions]({{< ref "/f5ads/aws/overview.md#supported-regions" >}}) documentation for the full list of regions where F5 ADS for AWS is available.
+
+## September 1, 2026
+
+- {{% icon-feature %}} **F5 ADS for AWS now supports F5 WAF for NGINX (Preview)**
+
+You can now deploy F5 ADS with [F5 WAF for NGINX]({{< ref "/waf" >}}); an advanced high-performance web application firewall (WAF) to provide protection from OWASP Top 10 web application security risks.
+
+**Note:** This feature is currently in Preview and free to use during the preview period. Custom security policies and custom logging profiles are not yet supported.
+
+## July 31, 2026
+
+- {{% icon-feature %}} **F5 ADS for AWS is now available (Early Access)**
+
+You can now use F5 Application Delivery Service to integrate with your applications in AWS. This is a major new release allowing you to work in multi-cloud setups or simplify your current AWS presence with a fully-managed, secure NGINX offering.
+
+See the documentation for [F5 ADS for AWS]({{< ref "/f5ads/aws/overview.md" >}}) for more info.
+
+**Note:** This feature is currently in Early Access. Please contact us if you are interested in participating in our Early Access offering by sending an email to nginxaas-early-access@f5.com.
diff --git a/content/f5ads/google/_index.md b/content/f5ads/google/_index.md
new file mode 100644
index 0000000000..6210b7ade9
--- /dev/null
+++ b/content/f5ads/google/_index.md
@@ -0,0 +1,14 @@
+---
+title: F5 Application Delivery Service for Google Cloud
+linkTitle: F5 ADS for Google Cloud
+f5-subtitle: Google Cloud native and managed SaaS load balancer and application delivery service powered by NGINX Plus
+url: /f5ads/google/
+canonical: /f5ads/google/
+cascade:
+ logo: F5-NGINXaaS-icon.svg
+ contentVars:
+ product: F5 Application Delivery Service for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+weight: 500
+---
+
diff --git a/content/f5ads/google/billing/_index.md b/content/f5ads/google/billing/_index.md
new file mode 100644
index 0000000000..437269aea8
--- /dev/null
+++ b/content/f5ads/google/billing/_index.md
@@ -0,0 +1,6 @@
+---
+title: Marketplace billing
+weight: 400
+url: /f5ads/google/billing/
+canonical: /f5ads/google/billing/
+---
diff --git a/content/f5ads/google/billing/overview.md b/content/f5ads/google/billing/overview.md
new file mode 100644
index 0000000000..d5597738eb
--- /dev/null
+++ b/content/f5ads/google/billing/overview.md
@@ -0,0 +1,78 @@
+---
+title: Billing overview
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/billing/overview/
+canonical: /f5ads/google/billing/overview/
+f5-content-type: concept
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+F5 Application Delivery Service for Google Cloud is deployed into your Google Cloud subscription, where your deployment resource is visible and integrated with Google Cloud’s ecosystem. The underlying infrastructure, software maintenance, availability, and scaling are fully managed by F5, abstracting operational complexities. Billing occurs hourly and is tracked in the Google Cloud Cost Management Dashboard.
+
+## Pricing plans
+
+F5 ADS for Google Cloud is offered on an Enterprise plan, delivering enterprise-grade performance, scalability, and security backed by a 99.95% uptime SLA. The pricing model consists of three billing components, ensuring transparent and predictable costs based on resource usage.
+
+### Pricing components
+
+{{< table >}}
+
+| Tier | Fixed price per hour | NCU price per hour | Data processing per GB | Google Cloud Regions |
+|--------|---------------------|----------------------------|-----------------------|-----------------------------------------------------------------------------------------------------------------------|
+| Tier 1 | $0.10 | $0.008 | $0.0096 | us-east1, us-east4, us-west1, us-west2, us-west3, us-west4, us-central1, europe-west1, europe-west4, europe-north1, asia-south2 |
+| Tier 2 | $0.133 | $0.0106 | $0.0127 | europe-west2, europe-west3, asia-southeast1, asia-south1 |
+| Tier 3 | $0.166 | $0.0132 | $0.0159 | europe-central2 |
+
+{{< /table >}}
+
+## NGINX Capacity Unit (NCU)
+
+An NGINX Capacity Unit (NCU) quantifies the capacity for a deployment. Resources are metered hourly based on the capacity utilized, enabling customers to scale up or down dynamically. The minimum billing interval is 5 min, ensuring accurate alignment of cost and usage. A single NCU consists of:
+
+ - Bandwidth – 2.2 Mbps
+ - Connections – 3000
+
+## Billing examples
+
+### Deployment with 20 NCUs processing 100 GB of data for 1 hour
+
+- Fixed price: $0.10/hour
+- NCU usage: 20 NCUs * $0.008/hour = $0.16/hour
+- Data processing: 100 GB * $0.0096/GB = $0.96
+
+**Total cost for 1 hour: $0.10 + $0.16 + $0.96 = $1.22**
+
+### Deployment using 30 NCUs for 2 hours and scaled to 50 NCUs for another hour, processing 200 GB of data
+
+- Fixed price: $0.10/hour * 3 hours = $0.30
+- NCU usage: (30 NCUs * $0.008/hour * 2 hours) + (50 NCUs * $0.008/hour * 1 hour) = $0.88
+- Data processing: 200 GB * $0.0096/GB = $1.92
+
+**Total cost for 3 hours: $0.30 + $0.88 + $1.92 = $3.10**
+
+## Review billing data
+
+Billing data for F5 ADS for Google Cloud is reported per deployment and can be accessed through the Google Cloud Cost Management Dashboard. Usage metrics and costs are updated hourly, allowing customers to monitor and optimize resource allocation effectively.
+
+## Canceling your F5 ADS for Google Cloud subscription
+
+You can unsubscribe from F5 ADS for Google Cloud by visiting the [Google Cloud Marketplace Orders](https://console.cloud.google.com/marketplace/orders) page. Please note the following behavior when you cancel your subscription:
+
+- Upon cancelation, all active deployments will immediately transition to a suspended state. In the suspended state, deployments will no longer be operational and cannot process traffic.
+- While in this state, you will still have access to your deployments via the F5 ADS Console, allowing you to view or delete them. However, it will no longer be possible to update existing deployments or create new ones.
+- Despite the suspension of deployments, you will retain the ability to view, edit, create, and delete configurations and SSL certificates through the console.
+
+If you decide to re-subscribe to F5 ADS for Google Cloud after canceling your subscription, all previously suspended deployments will remain deactivated. You will need to recreate your deployments from scratch.
+
+We recommend carefully reviewing your deployments and configurations before initiating the cancelation process to avoid any unintended data loss.
+
+## Free trial
+
+You can sign up for a free trial of F5 ADS for Google Cloud through the [Google Cloud Marketplace](https://console.cloud.google.com/marketplace/product/f5-7626-networks-public/nginxaas-google-cloud).
+The free trial provides up to USD 100 in credits for a maximum of 30 days, whichever comes first, to help you explore F5 ADS for Google Cloud and its features.
+
+During the trial, you will be billed for solution provider fees and credited for those same fees at the same time, up to USD 100. Additionally, you will still be billed for any applicable infrastructure usage charges during the trial period.
+
+At the end of the trial period, you will be charged under the Enterprise plan unless you stop or end the subscription. You may cancel the trial at any time by canceling your plan before the trial ends.
diff --git a/content/f5ads/google/billing/usage-and-cost-estimator.md b/content/f5ads/google/billing/usage-and-cost-estimator.md
new file mode 100644
index 0000000000..9c87769dca
--- /dev/null
+++ b/content/f5ads/google/billing/usage-and-cost-estimator.md
@@ -0,0 +1,70 @@
+---
+title: Usage and cost estimator
+weight: 200
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/billing/usage-and-cost-estimator/
+canonical: /f5ads/google/billing/usage-and-cost-estimator/
+f5-content-type: concept
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+{{< raw-html >}}
+
+
+
+ Cost Estimation for Enterprise Plan
+
+
+
+
+
+
+
Estimate Monthly Cost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Total Monthly Payment
+ --
+
+
+ Show calculations
+
+
+
+
+{{< /raw-html >}}
diff --git a/content/f5ads/google/billing/usage-dashboard.md b/content/f5ads/google/billing/usage-dashboard.md
new file mode 100644
index 0000000000..55a997cc45
--- /dev/null
+++ b/content/f5ads/google/billing/usage-dashboard.md
@@ -0,0 +1,74 @@
+---
+title: Usage dashboard
+weight: 300
+toc: true
+url: /f5ads/google/billing/usage-dashboard/
+canonical: /f5ads/google/billing/usage-dashboard/
+f5-content-type: concept
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+# Usage dashboard
+
+The Usage dashboard provides detailed insights into your F5 Application Delivery Service resource consumption for the entire customer organization, encompassing deployments across all geographies and regions. View hourly usage metrics to track costs, analyze patterns, and optimize your deployments. Use the dashboard to analyze daily traffic patterns, plan capacity requirements, and optimize geographic distribution across regions.
+
+Use this dashboard to get daily and monthly usage trends, monitor peak traffic hours to plan scaling strategies and compare performance across different regions to optimize deployment location.
+
+## Detailed per-deployment analysis
+
+This dashboard provides granular, per-deployment usage analysis. View individual deployment consumption, region-specific usage, and hourly patterns for each deployment.
+
+## Viewing your usage data
+
+Access your usage dashboard to view consumption metrics across all your deployments. The dashboard displays hourly usage data that you can filter and analyze based on your needs.
+
+## Available filters
+
+### Time period selection
+
+Choose the time range for your usage from the predefined ranges. The default time range is last 30 days.
+
+### Filtering options
+
+Narrow down your usage data using these filters. You can combine multiple filters to get more precise usage insights:
+
+| Filter | Description | Use Case |
+|--------|-------------|----------|
+| **Region** | Filter by cloud region | Analyze regional usage patterns |
+| **Deployment** | Filter by specific deployment | Focus on individual deployment consumption |
+
+#### Filtering workflow
+
+To analyze your usage data, follow this step-by-step filtering process:
+
+1. **Select a time range** - Choose from the available time periods as described in [Time Period Selection](#time-period-selection)
+2. **Filter by region** - Narrow down the data to specific cloud regions where your deployments are located
+3. **Filter by deployment** - Focus on specific deployments within the selected region for detailed analysis
+
+This hierarchical filtering approach allows you to progressively narrow your analysis from organization-wide usage to specific deployment performance.
+
+## Usage metrics explained
+
+### Hourly data points
+
+Usage data is collected and displayed on an hourly basis. Each hour shows:
+
+- **Timestamp**: The specific hour when usage was recorded
+- **Location Details**: Region and deployment information
+- **Consumption Metrics**: Detailed usage measurements
+
+### Usage meters
+
+Your usage dashboard tracks several types of consumption:
+
+| Meter Type | Description |
+|------------|-------------|
+| **Fixed** | Base service cost |
+| **NCU (NGINX Compute Units)** | Processing capacity used |
+| **Data Processed** | Volume of data handled |
+
+For more information about NCU, see the [overview](overview.md).
+
+## Data retention
+
+Historical usage data is available for **up to one year**, allowing for comprehensive analysis and trend identification.
\ No newline at end of file
diff --git a/content/f5ads/google/deploy/_index.md b/content/f5ads/google/deploy/_index.md
new file mode 100644
index 0000000000..9d0e15cdba
--- /dev/null
+++ b/content/f5ads/google/deploy/_index.md
@@ -0,0 +1,6 @@
+---
+title: Deploy on Google Cloud
+weight: 200
+url: /f5ads/google/deploy/
+canonical: /f5ads/google/deploy/
+---
diff --git a/content/f5ads/google/deploy/access-management.md b/content/f5ads/google/deploy/access-management.md
new file mode 100644
index 0000000000..b70e188bae
--- /dev/null
+++ b/content/f5ads/google/deploy/access-management.md
@@ -0,0 +1,118 @@
+---
+title: Identity and access management
+weight: 600
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/deploy/access-management/
+canonical: /f5ads/google/deploy/access-management/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+
+
+F5 Application Delivery Service for Google Cloud uses Workload Identity Federation (WIF) to integrate with Google Cloud services. For example, with WIF configured, your F5 Application Delivery Service deployment can perform the following integrations:
+
+ - export logs to Cloud Logging
+ - export metrics to Cloud Monitoring
+ - fetch secrets from Secret Manager
+
+To learn more, see [Google's Workload Identity Federation documentation](https://cloud.google.com/iam/docs/workload-identity-federation).
+
+## Prerequisites
+
+- In the project you're configuring WIF in, you need the following roles to create a workload identity pool, provider, and policy bindings:
+ - [iam.workloadIdentityPoolAdmin](https://cloud.google.com/iam/docs/roles-permissions/iam#iam.workloadIdentityPoolAdmin)
+ - [resourcemanager.projectIamAdmin](https://cloud.google.com/iam/docs/roles-permissions/resourcemanager#resourcemanager.projectIamAdmin)
+- An F5 Application Delivery Service deployment. See [our documentation on creating an F5 Application Delivery Service deployment]({{< ref "/f5ads/google/deploy/create-deployment/" >}}) for a step-by-step guide.
+
+## Configure WIF
+
+### Create a Workload Identity Pool and Provider
+
+1. Create a workload identity pool. See [Google's documentation on configuring Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#create-pool-provider) for a step-by-step guide.
+1. Create an OIDC workload identity pool provider. See [Google's documentation on creating a workload identity pool provider](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#create-pool-provider) for a step-by-step guide. Set up the provider settings as follows:
+ - `Issuer URL` must be `https://accounts.google.com`.
+ - `Allowed audiences` must contain the full canonical resource name of the workload identity pool provider, for example, `https://iam.googleapis.com/projects//locations//workloadIdentityPools//providers/`. If `Allowed audiences` is empty, the full canonical resource name of the workload identity pool provider will be included by default.
+ - Add the following **attribute mapping**: `google.subject=assertion.sub`.
+ - Add the following **attribute condition**: `assertion.sub=='$SERVICE_ACCOUNT_UNIQUE_ID'`, where `$SERVICE_ACCOUNT_UNIQUE_ID` is the unique ID of your F5 Application Delivery Service deployment's service account. This ID can be found in the `F5 ADS Service Account Unique ID` field under the **Cloud Info** section in the **Details** tab of your deployment.
+
+### Grant access to the WIF principal with your desired roles
+
+Depending on your use case, you will need to grant certain roles on specific resources. See [Google's documentation on granting access](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#access) for more information.
+
+{{< details summary="Grant access to export logs to a Google project">}}
+
+To grant access to export logs to a Google project, `$LOG_PROJECT_ID`, in the [Google Cloud Console](https://console.cloud.google.com/),
+
+1. Go to the `$LOG_PROJECT_ID` project.
+1. Go to the **IAM** page.
+1. Select **Grant Access**.
+1. Enter your principal, for example, `principal://iam.googleapis.com/projects/$WIF_PROJECT_NUMBER/locations/global/workloadIdentityPools/$WIF_POOL_ID/subject/$SERVICE_ACCOUNT_UNIQUE_ID`.
+1. Assign the **Logs Writer** role.
+
+Alternatively, to use the Google Cloud CLI, you can run the following `gcloud` command:
+
+```bash
+gcloud projects add-iam-policy-binding "$LOG_PROJECT_ID" \
+ --member="principal://iam.googleapis.com/projects/$WIF_PROJECT_NUMBER/locations/global/workloadIdentityPools/$WIF_POOL_ID/subject/$SERVICE_ACCOUNT_UNIQUE_ID" \
+ --role='roles/logging.logWriter'
+```
+
+{{< /details >}}
+
+{{< details summary="Grant access to export metrics to a Google project">}}
+
+To grant access to export metrics to a Google project, `$METRIC_PROJECT_ID` in the [Google Cloud Console](https://console.cloud.google.com/), perform the following steps.
+
+1. Go to the `$METRIC_PROJECT_ID` project.
+1. Go to the **IAM** page.
+1. Select **Grant Access**.
+1. Enter your principal, for example, `principal://iam.googleapis.com/projects/$WIF_PROJECT_NUMBER/locations/global/workloadIdentityPools/$WIF_POOL_ID/subject/$SERVICE_ACCOUNT_UNIQUE_ID`.
+1. Assign the **Monitoring Metric Writer** role.
+
+Alternatively, to use the Google Cloud CLI, you can run the following `gcloud` command:
+
+```bash
+gcloud projects add-iam-policy-binding "$METRIC_PROJECT_ID" \
+ --member="principal://iam.googleapis.com/projects/$WIF_PROJECT_NUMBER/locations/global/workloadIdentityPools/$WIF_POOL_ID/subject/$SERVICE_ACCOUNT_UNIQUE_ID" \
+ --role='roles/monitoring.metricWriter'
+```
+
+{{< /details >}}
+
+{{< details summary="Grant access to fetch a secret from Secret Manager">}}
+
+To grant access to fetch a secret, `$SECRET_ID`, in the [Google Cloud Console](https://console.cloud.google.com/),
+
+1. Go to the secret, `$SECRET_ID`, in Secret Manager.
+1. Select the **Permissions** tab.
+1. Select **Grant Access**.
+1. Enter your principal, for example, `principal://iam.googleapis.com/projects/$WIF_PROJECT_NUMBER/locations/global/workloadIdentityPools/$WIF_POOL_ID/subject/$SERVICE_ACCOUNT_UNIQUE_ID`.
+1. Assign the **Secret Manager Secret Accessor** role.
+
+Alternatively, to use the Google Cloud CLI, you can run the following `gcloud` command:
+
+```bash
+gcloud secrets add-iam-policy-binding "$SECRET_ID" \
+ --member="principal://iam.googleapis.com/projects/$WIF_PROJECT_NUMBER/locations/global/workloadIdentityPools/$WIF_POOL_ID/subject/$SERVICE_ACCOUNT_UNIQUE_ID" \
+ --role='roles/secretmanager.secretAccessor'
+```
+
+If you would like to fetch more than one secret, you will need to grant access on each secret or grant access on the project your secrets are in.
+
+{{< /details >}}
+
+### Update your F5 Application Delivery Service deployment with the name of your workload identity pool provider
+
+In the F5 ADS Console,
+
+1. On the navigation menu, select **Deployments**.
+1. Select the deployment you want to update and select **Edit**.
+1. Enter your provider name, for example, `projects//locations//workloadIdentityPools//providers/`, under **Workload Identity Pool Provider Name**.
+1. Select **Update**.
+
+## What's next
+
+- [Monitor your deployment]({{< ref "/f5ads/google/monitoring/enable-monitoring.md" >}})
+- [Enable NGINX Logs]({{< ref "/f5ads/google/monitoring/enable-nginx-logs.md" >}})
diff --git a/content/f5ads/google/deploy/create-deployment/_index.md b/content/f5ads/google/deploy/create-deployment/_index.md
new file mode 100644
index 0000000000..5d81a5f63e
--- /dev/null
+++ b/content/f5ads/google/deploy/create-deployment/_index.md
@@ -0,0 +1,6 @@
+---
+title: Create a deployment
+weight: 200
+url: /f5ads/google/deploy/create-deployment/
+canonical: /f5ads/google/deploy/create-deployment/
+---
diff --git a/content/f5ads/google/deploy/create-deployment/deploy-console.md b/content/f5ads/google/deploy/create-deployment/deploy-console.md
new file mode 100644
index 0000000000..588ac7426f
--- /dev/null
+++ b/content/f5ads/google/deploy/create-deployment/deploy-console.md
@@ -0,0 +1,343 @@
+---
+title: Deploy using the F5 ADS Console
+description: "Create, configure, and connect an F5 Application Delivery Service for Google Cloud deployment using the F5 ADS Console."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/deploy/create-deployment/deploy-console/
+canonical: /f5ads/google/deploy/create-deployment/deploy-console/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-keywords: "NGINXaaS for Google Cloud, create deployment, NGINXaaS Console, NCU, service frontend, Network attachment, Service Attachment, PSC"
+f5-summary: >
+ Learn how to create an F5 NGINXaaS for Google Cloud deployment using the NGINXaaS Console.
+ This guide covers configuring the deployment, setting up service frontend connectivity, and testing the deployment once it's ready.
+f5-audience: operator
+---
+
+## Overview
+
+This guide explains how to deploy F5 Application Delivery Service for Google Cloud using [Google Cloud Console](https://console.cloud.google.com) and the F5 ADS Console. The deployment process involves creating a new deployment, configuring the deployment, and testing the deployment.
+
+## Before you begin
+
+Before you can deploy F5 Application Delivery Service, follow the steps in the [Prerequisites]({{< ref "/f5ads/google/deploy/prerequisites/" >}}) topic to subscribe to the F5 ADS for Google Cloud offering in the Google Cloud Marketplace.
+
+## Access the F5 ADS Console
+
+Once you have completed the subscription process, you can access the F5 ADS Console.
+
+{{< include "/nginxaas/access-console.md" >}}
+
+{{< call-out class="caution" >}}
+Select the Geography that supports the region where you plan to deploy.
+See [F5 ADS for Google Cloud supported regions]({{< ref "/f5ads/google/overview.md#supported-regions" >}}).
+{{< /call-out >}}
+
+## Create or import an NGINX configuration
+
+{{< include "/nginxaas/create-or-import-nginx-config.md" >}}
+
+## Create a new deployment
+
+Next, create a new F5 Application Delivery Service deployment using the F5 ADS Console:
+
+1. On the left menu, select **Deployments**.
+1. Select {{< icon "plus" >}} **Add Deployment** to create a new deployment.
+
+ - Enter a **Name**.
+ - Add an optional description for your deployment.
+ - Change the **NCU Capacity** if needed.
+ - The default value of `20 NCU` should be adequate for most scenarios.
+ - Enable **WAF** if you want [F5 WAF for NGINX]({{< ref "/waf" >}}) enabled for your deployment.
+ - In the Apply Configuration section, select an NGINX configuration [you created earlier](#create-or-import-an-nginx-configuration) from the **Choose Configuration** list.
+ - Select a **Configuration Version** from the list.
+ - In the Cloud Details section, select a **Region**.
+ - Make a note of this region — you'll need to create a network attachment in the same region.
+ - Optional: In the Cloud Details section, enter a network attachment ID or select one in the **Network attachment** list. A network attachment connects this deployment to your upstream servers, and is required for most use cases.
+ - The network attachment ID is formatted like the following example: `projects/my-google-project/regions/us-east1/networkAttachments/my-network-attachment`.
+ - If you haven't created a network attachment yet, you can leave this field empty and [add one after creating your deployment](#create-a-network-attachment).
+ - Select **Managed Public Endpoint** or **Private Endpoint** under Service Frontend.
+ - Refer to the [Service Frontend]({{< ref "/f5ads/google/overview.md#service-frontend" >}}) documentation for more information on these two frontend types.
+ - Select **Submit** to begin the deployment process.
+
+Your new deployment will appear in the list of deployments. The status of the deployment will be "Pending" while the deployment is being created. Once the deployment is complete, the status will change to "Ready".
+
+Make a note of the deployment's **Region** and **Project ID**, both visible under the `Cloud Info` section for your deployment. You'll need them in the next section to create and connect a network attachment.
+
+### Create a network attachment
+
+To connect your F5 Application Delivery Service deployment to your upstream servers, create a [network attachment](https://cloud.google.com/vpc/docs/about-network-attachments) and add it to your deployment.
+
+{{< call-out class="caution" >}}
+{{< include "/nginxaas/google/supported-regions.md" >}}
+{{< /call-out >}}
+
+1. Access the [Google Cloud Console](https://console.cloud.google.com/).
+1. Create a consumer VPC network and subnetwork. See [Google's documentation on creating a VPC and subnet](https://cloud.google.com/vpc/docs/create-modify-vpc-networks#console_1) for a step-by-step guide.
+
+ {{< call-out class="note" >}}
+ Create the network attachment in the same region as your deployment.
+ {{< /call-out >}}
+
+1. Create a network attachment in your new subnet. See [Google's documentation on creating a network attachment](https://cloud.google.com/vpc/docs/create-manage-network-attachments#create-network-attachments) for a step-by-step guide. Configure the **Connection preference** on the Network Attachment resource using one of the following options:
+ - **Accept connections from selected projects** (recommended): This option helps maintain security by ensuring only trusted providers can connect to your service by letting you manually approve trusted connections. Add your F5 Application Delivery Service deployment's **Project ID** to the accept list to connect it to your upstream servers.
+ - **Automatically accept connections for all projects**: This option lets you skip adding your deployment's Project ID to an accept list.
+
+ {{< call-out class="caution" >}}
+ For development and testing purposes, or in scenarios where speed and simplicity are prioritized over security, you have the option to configure the **Connection Preference** to **Automatically accept connections for all projects**. Please note that this approach is inherently less secure and may expose your service to unintended or unauthorized access. We encourage you to exercise caution if using the less restrictive option and to avoid using it in production or sensitive environments.
+ {{< /call-out >}}
+
+1. Copy the network attachment value. You can find it in the Google Cloud Console by following the steps below:
+ 1. Go to Network Attachments at the following link: https://console.cloud.google.com/net-services/psc/list/networkAttachments?project=my-google-project (replace `my-google-project` in the URL with your project name).
+ 1. Open the desired network attachment and copy the value from the `Network Attachment` field. **Example format:** `projects/my-google-project/regions/us-east1/networkAttachments/my-network-attachment`.
+1. Add the network attachment value to your deployment, either while [creating the deployment](#create-a-new-deployment) or by [editing an existing deployment](#configure-your-deployment). This connects your F5 Application Delivery Service deployment to your upstream servers.
+
+You can add or remove a network attachment after creating a deployment by [editing the deployment](#configure-your-deployment).
+
+{{< call-out class="warning" >}}
+You cannot switch a deployment directly from one network attachment to another. To change the network attachment, first remove the existing one, wait for the deployment to return to a `Ready` state, then add the new network attachment. This operation involves service downtime as the network attachment is removed from the deployment.
+{{< /call-out >}}
+
+{{< call-out class="note" >}}
+Deployments created before Sept 8, 2026 do not support updating the network attachment.
+{{< /call-out >}}
+
+## Configure your deployment
+
+In the F5 ADS Console,
+
+1. To open the details of your deployment, select its name from the list of deployments.
+ - You can view the details of your deployment, including the status, region, network attachment, NGINX configuration, and more.
+1. Select **Edit** to modify the deployment description, NCU Capacity, and WAF enablement.
+ - You can also configure monitoring from here. Detailed instructions can be found in [Enable Monitoring]({{< ref "/f5ads/google/monitoring/enable-monitoring.md" >}})
+ - You can add or remove a network attachment from the Cloud Details section. See [Create a network attachment](#create-a-network-attachment) for details on switching from one network attachment to another.
+1. Select **Update** to save your changes.
+1. Select the Configuration tab to view the current NGINX configuration associated with the deployment.
+1. Select **Update Configuration** to change the NGINX configuration associated with the deployment.
+1. To modify the contents of the NGINX configuration, see [Update an NGINX Configuration]({{< ref "/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md#update-an-nginx-configuration" >}}).
+
+## Set up connectivity (Private Endpoint only)
+
+If you selected **Private Endpoint** as the service frontend type, complete the following steps to allow client access. If you selected **Managed Public Endpoint**, skip this section.
+
+### Internal traffic
+
+To set up private connectivity to your F5 Application Delivery Service deployment, create a [Private Service Connect (PSC) endpoint](https://docs.cloud.google.com/vpc/docs/configure-private-service-connect-services) in the same VPC as your internal clients.
+
+1. Go to the [Google Cloud Console](https://console.cloud.google.com/) and select the project where you want to create networking resources for your F5 Application Delivery Service deployment.
+1. Create or reuse a [VPC network](https://cloud.google.com/vpc/docs/create-modify-vpc-networks).
+1. Create a PSC endpoint. See [Google's documentation on creating an endpoint](https://docs.cloud.google.com/vpc/docs/configure-private-service-connect-services#create-endpoint) for a step-by-step guide.
+ - For **Target service**, enter your F5 Application Delivery Service deployment's Service Attachment, which is visible on the `Deployment Details` section for your deployment.
+
+
+### External traffic
+
+To set up public connectivity for external clients, configure a [Private Service Connect (PSC) backend](https://cloud.google.com/vpc/docs/private-service-connect-backends) for your F5 Application Delivery Service deployment.
+
+1. Go to the [Google Cloud Console](https://console.cloud.google.com/) and select the project where you want to create networking resources for your F5 Application Delivery Service deployment.
+1. Create or reuse a [VPC network](https://cloud.google.com/vpc/docs/create-modify-vpc-networks).
+1. Create a proxy-only subnet in your consumer VPC. See [Google's documentation on creating a proxy-only subnet](https://cloud.google.com/load-balancing/docs/tcp/set-up-ext-reg-tcp-proxy-zonal#console_1) for a step-by-step guide.
+1. Create a public IP address. See [Google's documentation on reserving a static address](https://cloud.google.com/load-balancing/docs/tcp/set-up-ext-reg-tcp-proxy-zonal#console_3) for a step-by-step guide.
+1. Create a Private Service Connect Network Endpoint Group (PSC NEG). See [Google's documentation on creating a NEG](https://cloud.google.com/vpc/docs/access-apis-managed-services-private-service-connect-backends#console) for a step-by-step guide.
+ - Set **Network endpoint group type** to **Private Service Connect NEG (Regional)**.
+ - Set **Target** to **Published service**.
+ - For **Target service**, enter your F5 Application Delivery Service deployment's Service Attachment, which is visible on the `Deployment Details` section for your deployment.
+ - For **Producer port**, enter the port your NGINX server is listening on. If you're using the default NGINX config, enter port `80`.
+ - For **Network** and **Subnetwork** select your consumer VPC network and subnet.
+1. Create a regional external proxy Network Load Balancer. See [Google's documentation on configuring the load balancer](https://cloud.google.com/load-balancing/docs/tcp/set-up-ext-reg-tcp-proxy-zonal#console_6) for a step-by-step guide.
+ - For **Network**, select your consumer VPC network.
+ - For **Backend configuration**, follow [Google's step-by-step guide to add a backend](https://cloud.google.com/vpc/docs/access-apis-managed-services-private-service-connect-backends#console_5).
+ - In the **Frontend configuration** section,
+ - For **IP address**, select the public IP address created earlier.
+ - For **Port number**, enter the same port as your NEG's Producer port, for example, port `80`.
+
+
+Each listening port configured on NGINX requires its own PSC network endpoint group with a matching port. You can use the following helper script to automate these steps:
+
+{{< details summary="Show helper script" >}}
+
+ ```bash
+ #!/bin/bash
+ set -euo pipefail
+ # Default values
+ PROJECT=""
+ REGION=""
+ NETWORK=""
+ SUBNET=""
+ SA_URI=""
+ PORTS="80"
+ PROXY_SUBNET="psc-proxy-subnet"
+ VIPNAME="psc-vip"
+
+ # Prerequisites:
+ # - gcloud CLI installed and configured
+ # - An existing projectID and a VPC network created in that project
+ # - A valid Service Attachment URI from F5 ADS
+
+ # Function to display usage
+ usage() {
+ cat << EOF
+ Usage: $0 --project PROJECT --region REGION --network NETWORK --subnet SUBNET --service-attachment SA_URI [--ports PORTS]
+
+ Options:
+ --project GCP Project ID
+ --region GCP Region
+ --network VPC Network name
+ --subnet GCP Subnet for Backend Connectivity (must be in the same region and network)
+ --service-attachment Service Attachment Self Link
+ --ports Comma-separated list of ports (default: 80)
+ --help Show this help message
+
+ Note: Proxy subnet and public IP will be automatically created as 'psc-proxy-subnet' and 'psc-vip' respectively.
+ These resources will not be deleted, if deleted this script will create new ones.
+
+ Example:
+ $0 --project my-project --region us-central1 --network my-vpc --subnet my-subnet \\
+ --service-attachment "projects/producer-proj/regions/us-central1/serviceAttachments/my-service" \\
+ --ports "80,443,8080"
+ EOF
+ }
+
+ # Parse command line arguments
+ while [[ $# -gt 0 ]]; do
+ case $1 in
+ --project)
+ PROJECT="$2"
+ shift 2
+ ;;
+ --region)
+ REGION="$2"
+ shift 2
+ ;;
+ --network)
+ NETWORK="$2"
+ shift 2
+ ;;
+ --service-attachment)
+ SA_URI="$2"
+ shift 2
+ ;;
+ --ports)
+ PORTS="$2"
+ shift 2
+ ;;
+ --subnet)
+ SUBNET="$2"
+ shift 2
+ ;;
+ --help|-h)
+ usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown option: $1"
+ usage
+ exit 1
+ ;;
+ esac
+ done
+
+ # Validate required parameters
+ missing_params=()
+ [[ -z "$PROJECT" ]] && missing_params+=("--project")
+ [[ -z "$REGION" ]] && missing_params+=("--region")
+ [[ -z "$NETWORK" ]] && missing_params+=("--network")
+ [[ -z "$SUBNET" ]] && missing_params+=("--subnet")
+ [[ -z "$SA_URI" ]] && missing_params+=("--service-attachment")
+
+ if [[ ${#missing_params[@]} -gt 0 ]]; then
+ echo "Error: Missing required parameters: ${missing_params[*]}"
+ usage
+ exit 1
+ fi
+
+ # Create proxy-only subnet (skip if exists)
+ echo "Creating proxy-only subnet if it doesn't already exist..."
+ if ! gcloud compute networks subnets describe $PROXY_SUBNET --region=$REGION --project=$PROJECT >/dev/null 2>&1; then
+ gcloud compute networks subnets create $PROXY_SUBNET \
+ --project=$PROJECT --region=$REGION \
+ --network=$NETWORK \
+ --range=192.168.1.0/24 \
+ --purpose=REGIONAL_MANAGED_PROXY \
+ --role=ACTIVE
+ fi
+
+ echo "Using proxy-only subnet: $PROXY_SUBNET"
+
+ # Create regional VIP address (skip if exists)
+ echo "Creating regional VIP address..."
+ if ! gcloud compute addresses describe $VIPNAME --region=$REGION --project=$PROJECT >/dev/null 2>&1; then
+ gcloud compute addresses create $VIPNAME --region=$REGION --project=$PROJECT
+ fi
+ VIP=$(gcloud compute addresses describe $VIPNAME --region=$REGION --project=$PROJECT --format='get(address)')
+ echo "Using VIP address: $VIP"
+
+ # Convert comma-separated ports to array
+ IFS=',' read -ra PORTS_ARRAY <<< "$PORTS"
+
+ for P in "${PORTS_ARRAY[@]}"; do
+ echo "Processing port $P..."
+
+ # Create Network Endpoint Group (skip if exists)
+ if ! gcloud compute network-endpoint-groups describe psc-neg-$P --region=$REGION --project=$PROJECT >/dev/null 2>&1; then
+ gcloud compute network-endpoint-groups create psc-neg-$P \
+ --project=$PROJECT --region=$REGION \
+ --network-endpoint-type=private-service-connect \
+ --psc-target-service="$SA_URI" \
+ --network=$NETWORK \
+ --subnet=$SUBNET \
+ --producer-port=$P
+ fi
+
+ # Create Backend Service (skip if exists) - NO HEALTH CHECKS for PSC
+ if ! gcloud compute backend-services describe be-$P --region=$REGION --project=$PROJECT >/dev/null 2>&1; then
+ gcloud compute backend-services create be-$P \
+ --project=$PROJECT --region=$REGION \
+ --protocol=TCP --load-balancing-scheme=EXTERNAL_MANAGED
+
+ # Add backend to service
+ gcloud compute backend-services add-backend be-$P \
+ --project=$PROJECT --region=$REGION \
+ --network-endpoint-group=psc-neg-$P \
+ --network-endpoint-group-region=$REGION
+ fi
+
+ # Create Target TCP Proxy (skip if exists)
+ if ! gcloud compute target-tcp-proxies describe tp-$P --region=$REGION --project=$PROJECT >/dev/null 2>&1; then
+ gcloud compute target-tcp-proxies create tp-$P \
+ --project=$PROJECT --region=$REGION --backend-service=be-$P
+ fi
+
+ # Create Forwarding Rule (skip if exists)
+ if ! gcloud compute forwarding-rules describe fr-$P --region=$REGION --project=$PROJECT >/dev/null 2>&1; then
+ gcloud compute forwarding-rules create fr-$P \
+ --project=$PROJECT --region=$REGION \
+ --address=$VIP --network=$NETWORK \
+ --target-tcp-proxy=tp-$P --target-tcp-proxy-region=$REGION \
+ --ports=$P --load-balancing-scheme=EXTERNAL_MANAGED \
+ --network-tier=PREMIUM --ip-protocol=TCP
+ fi
+
+ echo "Completed setup for port $P"
+ done
+ echo "Setup complete! Public Virtual IP: $VIP"
+
+ ```
+
+{{< /details >}}
+
+## Test your deployment
+
+1. To test your deployment, connect to the IP address created in [Set up connectivity]({{< ref "/f5ads/google/deploy/create-deployment/deploy-console.md#set-up-connectivity-private-endpoint-only" >}}) or the service endpoint created with your managed public endpoint deployment.
+
+{{< call-out class="note" >}}
+
+The deployment is privately deployed in your subnet. If you want to route traffic to an application over the public internet, consider setting up [Cloud NAT](https://docs.cloud.google.com/nat/docs/overview).
+
+{{< /call-out >}}
+
+## What's next
+
+- [Monitor your deployment]({{< ref "/f5ads/google/monitoring/enable-monitoring.md" >}})
+- [Manage certificates in Google Secret Manager]({{< ref "/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md" >}})
diff --git a/content/f5ads/google/deploy/create-deployment/deploy-terraform.md b/content/f5ads/google/deploy/create-deployment/deploy-terraform.md
new file mode 100644
index 0000000000..0140afe468
--- /dev/null
+++ b/content/f5ads/google/deploy/create-deployment/deploy-terraform.md
@@ -0,0 +1,154 @@
+---
+title: Deploy using the Terraform provider
+description: "Create, and configure an F5 NGINXaaS for Google Cloud deployment using the Terraform provider."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/deploy/create-deployment/deploy-terraform/
+canonical: /f5ads/google/deploy/create-deployment/deploy-terraform/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-keywords: "NGINXaaS for Google Cloud, Terraform,create deployment, NGINXaaS Console, NCU, service frontend, Network attachment, Service Attachment, PSC"
+f5-summary: >
+ Learn how to manage an F5 NGINXaaS for Google Cloud deployment using the Terraform provider.
+ This guide covers setting up necessary Google Cloud resources, configuring the Terraform provider, and managing the deployment using Terraform.
+f5-audience: operator
+---
+
+## Overview
+
+This guide explains how to create an F5 Application Delivery Service for Google Cloud deployment using the [`F5Networks/f5ads` Terraform provider](https://registry.terraform.io/providers/F5Networks/f5ads/latest/docs). This guide only covers creating a deployment.
+
+## Prerequisites
+
+{{< include "/nginxaas/google/terraform-prerequisites.md" >}}
+
+## Configure the provider
+
+Add the `f5ads` provider to your Terraform configuration and pin it to the exact alpha version:
+
+```hcl
+terraform {
+ required_providers {
+ f5ads = {
+ source = "F5Networks/f5ads"
+ version = "0.1.0-alpha.1"
+ }
+ }
+}
+
+provider "f5ads" {
+ geo = "us"
+}
+```
+
+The provider needs your F5 ADS client credentials to authenticate. You can supply them in the provider block, or with environment variables:
+
+```hcl
+provider "f5ads" {
+ geo = "us"
+ client_id = "your-client-id"
+ client_secret = "your-client-secret"
+}
+```
+
+```shell
+export F5ADS_GEO="us"
+export F5ADS_CLIENT_ID="your-client-id"
+export F5ADS_CLIENT_SECRET="your-client-secret"
+```
+
+## Create GCP network resources
+
+Include the following snippet if you need to create a VPC, subnet, and [network attachment](https://cloud.google.com/vpc/docs/about-network-attachments) for your deployment. Refer to the [`hashicorp/google` provider](https://registry.terraform.io/providers/hashicorp/google/latest/docs) for instructions on authentication and setting up your Google Cloud project.
+
+```hcl
+provider "google" {
+ region = "us-east1"
+}
+
+resource "google_compute_network" "vpc" {
+ name = "my-vpc"
+ auto_create_subnetworks = false
+}
+
+resource "google_compute_subnetwork" "subnet" {
+ name = "my-subnet"
+ ip_cidr_range = "10.0.0.0/24"
+ region = "us-east1"
+ network = google_compute_network.vpc.id
+}
+
+resource "google_compute_network_attachment" "attachment" {
+ name = "my-network-attachment"
+ region = "us-east1"
+ connection_preference = "ACCEPT_AUTOMATIC"
+ subnetworks = [google_compute_subnetwork.subnet.id]
+}
+```
+
+{{< call-out class="caution" >}}
+The `f5ads` provider currently only supports network attachments with `connection_preference` set to `ACCEPT_AUTOMATIC`, which accepts connections from all projects. Support for `ACCEPT_MANUAL` is planned for an upcoming release. See [Google's documentation on creating a network attachment](https://cloud.google.com/vpc/docs/create-manage-network-attachments#create-network-attachments) for details.
+{{< /call-out >}}
+
+## Create a deployment
+
+{{< call-out class="important" >}}
+Create or reuse an existing configuration in the [F5 ADS Console]({{< ref "/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md" >}}) first, then supply its [Configuration ID and Configuration Version ID]({{< ref "/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md#get-nginx-configuration-version-information" >}}) below.
+{{< /call-out >}}
+
+Choose a frontend type for your deployment. Refer to [Service frontend]({{< ref "/f5ads/google/overview.md#service-frontend" >}}) for more information on these two frontend types.
+
+To use a managed public endpoint:
+
+```hcl
+resource "f5ads_deployment" "example" {
+ name = "my-deployment"
+ capacity = 20
+ waf_enabled = true
+ nginx_config_id = "cfg_example123"
+ nginx_config_version_id = "cv_example456"
+
+ google_cloud_properties = {
+ region = "us-east1"
+ network_attachment = google_compute_network_attachment.attachment.id
+
+ frontend = {
+ managed_public_endpoint = {
+ acl = [
+ {
+ source_prefixes = ["0.0.0.0/0"]
+ port_range = "80"
+ protocol = "tcp"
+ },
+ {
+ source_prefixes = ["0.0.0.0/0"]
+ port_range = "443"
+ protocol = "tcp"
+ },
+ ]
+ }
+ }
+ }
+}
+```
+
+To use a private endpoint instead, replace the `managed_public_endpoint` block with a `private_endpoint` block:
+
+```hcl
+ frontend = {
+ private_endpoint = {
+ service_attachment_accept_list = [
+ "my-gcp-project",
+ ]
+ }
+ }
+```
+
+Create the deployment:
+
+```shell
+terraform init
+terraform plan
+terraform apply
+```
diff --git a/content/f5ads/google/deploy/nginx-configuration/_index.md b/content/f5ads/google/deploy/nginx-configuration/_index.md
new file mode 100644
index 0000000000..649d7e403f
--- /dev/null
+++ b/content/f5ads/google/deploy/nginx-configuration/_index.md
@@ -0,0 +1,6 @@
+---
+title: Upload an NGINX configuration
+weight: 500
+url: /f5ads/google/deploy/nginx-configuration/
+canonical: /f5ads/google/deploy/nginx-configuration/
+---
diff --git a/content/f5ads/google/deploy/nginx-configuration/configuration-rules.md b/content/f5ads/google/deploy/nginx-configuration/configuration-rules.md
new file mode 100644
index 0000000000..85203f61f9
--- /dev/null
+++ b/content/f5ads/google/deploy/nginx-configuration/configuration-rules.md
@@ -0,0 +1,906 @@
+---
+title: NGINX configuration rules and limits
+weight: 50
+toc: true
+url: /f5ads/google/deploy/nginx-configuration/configuration-rules/
+canonical: /f5ads/google/deploy/nginx-configuration/configuration-rules/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for Google Cloud
+contentSource: nginxaas/overview/nginx-configuration/configuration-rules.md
+---
+
+This document provides details about using NGINX configuration files with your
+F5 Application Delivery Service for Google Cloud deployment, restrictions, and available directives.
+
+## NGINX configuration common user workflows
+
+You can upload NGINX configurations to your F5 ADS for Google Cloud deployment using the Google Cloud console:
+
+- [Upload using the console]({{< ref "/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md" >}})
+
+The topics below explain NGINX configuration restrictions and which directives are supported, unsupported, or cannot be overridden.
+
+## NGINX filesystem restrictions
+
+There are limits to where files, including NGINX configuration files, certificate files, and any other files uploaded to the deployment, can be placed on the filesystem. There are also limits on what directories NGINX can access during runtime. These limits help support the separation of roles, enforce the principle of least privilege, and ensure the smooth operation of the system.
+
+{{
}}
+ | Allowed Directory | User can upload files to | NGINX master process can read | NGINX master process can write | NGINX worker process can read | NGINX worker process can write |
+ | -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
+ | /etc/nginx | {{< icon "check" >}} | {{< icon "check" >}} | | | |
+ | /opt | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /srv | {{< icon "check" >}} | {{< icon "check" >}} | | {{< icon "check" >}} | |
+ | /tmp | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /spool/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /var/cache/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /var/spool/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /var/www | {{< icon "check" >}} | {{< icon "check" >}} | | {{< icon "check" >}} | |
+{{< /table >}}
+
+For example, `/etc/nginx` is only readable by the NGINX master process, making it a secure location for certificate files that won't be accidentally served due to configuration errors. `/var/www` is a secure location for static content because the NGINX worker process can serve files from it but cannot modify them, ensuring content integrity. `/tmp` is a good choice for storing temporary files with `proxy_temp_path` or `client_body_temp_path` since it is writable by the NGINX worker process.
+
+If you need access to additional directories, please [contact us]({{< ref "/f5ads/google/support.md" >}}).
+
+## Disallowed configuration directives
+
+The following directives are not supported because of specific limitations. If you include any of these directives in your NGINX configuration, you'll get an error.
+
+{{< table >}}
+| Disallowed Directive | Reason |
+|------------------ | ----------------- |
+| ssl_engine | No hardware SSL accelerator is available. |
+| debug_points | F5 Application Delivery Service does not provide access to NGINX processes for debugging. |
+| fastcgi_bind grpc_bind memcached_bind proxy_bind scgi_bind uwsgi_bind | Source IP specification for active-active deployments is not allowed. |
+| quic_bpf | QUIC connection migration is not currently supported for active-active deployments. |
+| ssl_ech_file | F5 Application Delivery Service does not use the [OpenSSL ECH feature branch](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ech_file). |
+{{< /table >}}
+
+You may find a few directives are not listed here as either allowed or disallowed. Our team is working on getting these directives supported soon.
+
+## Directives that cannot be overridden
+
+The following directives cannot be overridden by the user provided configuration.
+
+{{< table >}}
+| Persistent Directive | Value | Reason |
+|------------------ | ----------------------- | -----------------|
+| `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_rlimit_nofile` | `524288` | Set for optimal performance of deployments. |
+| `worker_connections` | `150000` | Set for optimal performance of deployments. |
+| `pid` | `/run/nginx/nginx.pid` | Set to this value to allow F5 Application Delivery Service to automatically manage the NGINX master process. |
+| `daemon` | `on` | Automatically set to `on` to allow F5 Application Delivery Service to manage the NGINX master process. |
+| `master_process` | `on` | This directive is intended for NGINX developers. |
+| `worker_cpu_affinity` | `auto` | The value `auto` allows binding worker processes automatically to available CPUs based on the current capacity of the deployment. |
+{{< /table >}}
+
+For connection and request rate limiting, consider using these NGINX modules:
+- [limit_conn](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn)
+- [limit_req](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req)
+- [upstream queue](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue)
+
+## Configuration directives list
+
+F5 Application Delivery Service supports a limited set of NGINX directives. The directives with the "app_protect" prefix require [F5 WAF for NGINX]({{< ref "/waf" >}}) to be enabled for the deployment.
+
+F5 Application Delivery Service does not yet support F5 WAF for NGINX custom security policies or logging profiles. Support is limited to the [prebuilt policies]({{< ref "/waf/policies/configuration.md#default-policy" >}}) and the [default logging profiles]({{< ref "/waf/logging/logs-overview.md#default-logging-profile-bundles" >}}).
+
+{{< 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)\
+[access_log (ngx_http_log_module)](https://nginx.org/en/docs/http/ngx_http_log_module.html#access_log)\
+[access_log (ngx_stream_log_module)](https://nginx.org/en/docs/stream/ngx_stream_log_module.html#access_log)\
+[add_after_body](https://nginx.org/en/docs/http/ngx_http_addition_module.html#add_after_body)\
+[add_before_body](https://nginx.org/en/docs/http/ngx_http_addition_module.html#add_before_body)\
+[add_header](https://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header)\
+[add_trailer](https://nginx.org/en/docs/http/ngx_http_headers_module.html#add_trailer)\
+[addition_types](https://nginx.org/en/docs/http/ngx_http_addition_module.html#addition_types)\
+[aio](https://nginx.org/en/docs/http/ngx_http_core_module.html#aio)\
+[aio_write](https://nginx.org/en/docs/http/ngx_http_core_module.html#aio_write)\
+[alias](https://nginx.org/en/docs/http/ngx_http_core_module.html#alias)\
+[allow (ngx_http_access_module)](https://nginx.org/en/docs/http/ngx_http_access_module.html#allow)\
+[allow (ngx_stream_access_module)](https://nginx.org/en/docs/stream/ngx_stream_access_module.html#allow)\
+[ancient_browser](https://nginx.org/en/docs/http/ngx_http_browser_module.html#ancient_browser)\
+[ancient_browser_value](https://nginx.org/en/docs/http/ngx_http_browser_module.html#ancient_browser_value)\
+[app_protect_compressed_requests_action]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_compressed_requests_action" >}})\
+[app_protect_cookie_seed]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_cookie_seed" >}})\
+[app_protect_cpu_thresholds]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_cpu_thresholds" >}})\
+[app_protect_custom_log_attribute]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_custom_log_attribute" >}})\
+[app_protect_enable]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=modules/ngx_http_app_protect_module.so-,app_protect_enable" >}})\
+[app_protect_failure_mode_action]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_failure_mode_action" >}})\
+[app_protect_physical_memory_util_thresholds]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_physical_memory_util_thresholds" >}})\
+[app_protect_policy_file](<{{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_enable%20on-%2Capp_protect_policy_file" >}}>)\
+[app_protect_reconnect_period_seconds]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_reconnect_period_seconds" >}})\
+[app_protect_request_buffer_overflow_action]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_request_buffer_overflow_action" >}})\
+[app_protect_security_log]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_security_log" >}})\
+[app_protect_security_log_enable]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_security_log_enable" >}})\
+[app_protect_user_defined_signatures]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_user_defined_signatures" >}})\
+[auth_basic](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic)\
+[auth_basic_user_file](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic_user_file)\
+[auth_delay](https://nginx.org/en/docs/http/ngx_http_core_module.html#auth_delay)\
+[auth_http](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http)\
+[auth_http_header](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http_header)\
+[auth_http_pass_client_cert](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http_pass_client_cert)\
+[auth_http_timeout](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http_timeout)\
+[auth_jwt](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt)\
+[auth_jwt_claim_set](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_claim_set)\
+[auth_jwt_header_set](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_header_set)\
+[auth_jwt_key_cache](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_cache)\
+[auth_jwt_key_file](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_file)\
+[auth_jwt_key_request](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_request)\
+[auth_jwt_leeway](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_leeway)\
+[auth_jwt_require](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_require)\
+[auth_jwt_type](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_type)\
+[auth_oidc](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#auth_oidc)\
+[auth_request](https://nginx.org/en/docs/http/ngx_http_auth_request_module.html#auth_request)\
+[auth_request_set](https://nginx.org/en/docs/http/ngx_http_auth_request_module.html#auth_request_set)\
+[autoindex](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex)\
+[autoindex_exact_size](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex_exact_size)\
+[autoindex_format](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex_format)\
+[autoindex_localtime](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex_localtime)\
+[break](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#break)\
+[connect_timeout](https://nginx.org/en/docs/ngx_mgmt_module.html#connect_timeout)\
+[charset](https://nginx.org/en/docs/http/ngx_http_charset_module.html#charset)\
+[charset_map](https://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_map)\
+[charset_types](https://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_types)\
+[chunked_transfer_encoding](https://nginx.org/en/docs/http/ngx_http_core_module.html#chunked_transfer_encoding)\
+[client_body_buffer_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size)\
+[client_body_in_file_only](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_file_only)\
+[client_body_in_single_buffer](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_single_buffer)\
+[client_body_temp_path](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_temp_path)\
+[client_body_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout)\
+[client_header_buffer_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_buffer_size)\
+[client_header_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_timeout)\
+[client_id](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#client_id)\
+[client_max_body_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size)\
+[client_secret](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#client_secret)\
+[config_url](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#config_url)\
+[connection_pool_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#connection_pool_size)\
+[cookie_name](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#cookie_name)\
+[create_full_put_path](https://nginx.org/en/docs/http/ngx_http_dav_module.html#create_full_put_path)\
+[daemon](https://nginx.org/en/docs/ngx_core_module.html#daemon)\
+[dav_access](https://nginx.org/en/docs/http/ngx_http_dav_module.html#dav_access)\
+[dav_methods](https://nginx.org/en/docs/http/ngx_http_dav_module.html#dav_methods)\
+[debug_connection](https://nginx.org/en/docs/ngx_core_module.html#debug_connection)\
+[default_type](https://nginx.org/en/docs/http/ngx_http_core_module.html#default_type)\
+[deny (ngx_http_access_module)](https://nginx.org/en/docs/http/ngx_http_access_module.html#deny)\
+[deny (ngx_stream_access_module)](https://nginx.org/en/docs/stream/ngx_stream_access_module.html#deny)\
+[directio](https://nginx.org/en/docs/http/ngx_http_core_module.html#directio)\
+[directio_alignment](https://nginx.org/en/docs/http/ngx_http_core_module.html#directio_alignment)\
+[disable_symlinks](https://nginx.org/en/docs/http/ngx_http_core_module.html#disable_symlinks)\
+[empty_gif](https://nginx.org/en/docs/http/ngx_http_empty_gif_module.html#empty_gif)\
+[enforce_initial_report](https://nginx.org/en/docs/ngx_mgmt_module.html#enforce_initial_report)\
+[env](https://nginx.org/en/docs/ngx_core_module.html#env)\
+[error_log](https://nginx.org/en/docs/ngx_core_module.html#error_log)\
+[error_log_tag](https://nginx.org/en/docs/http/ngx_http_core_module.html#error_log_tag)\
+[error_page](https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page)\
+[etag](https://nginx.org/en/docs/http/ngx_http_core_module.html#etag)\
+[events](https://nginx.org/en/docs/ngx_core_module.html#events)\
+[expires](https://nginx.org/en/docs/http/ngx_http_headers_module.html#expires)\
+[extra_auth_args](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#extra_auth_args)\
+[f4f](https://nginx.org/en/docs/http/ngx_http_f4f_module.html#f4f)\
+[f4f_buffer_size](https://nginx.org/en/docs/http/ngx_http_f4f_module.html#f4f_buffer_size)\
+[fastcgi_buffer_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffer_size)\
+[fastcgi_buffering](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffering)\
+[fastcgi_buffers](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffers)\
+[fastcgi_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_busy_buffers_size)\
+[fastcgi_cache](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache)\
+[fastcgi_cache_background_update](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_background_update)\
+[fastcgi_cache_bypass](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_bypass)\
+[fastcgi_cache_key](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_key)\
+[fastcgi_cache_lock](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_lock)\
+[fastcgi_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_lock_age)\
+[fastcgi_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_lock_timeout)\
+[fastcgi_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_max_range_offset)\
+[fastcgi_cache_methods](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_methods)\
+[fastcgi_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_min_uses)\
+[fastcgi_cache_path](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_path)\
+[fastcgi_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_revalidate)\
+[fastcgi_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_use_stale)\
+[fastcgi_cache_valid](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_valid)\
+[fastcgi_catch_stderr](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_catch_stderr)\
+[fastcgi_connect_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_connect_timeout)\
+[fastcgi_force_ranges](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_force_ranges)\
+[fastcgi_hide_header](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_hide_header)\
+[fastcgi_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_ignore_client_abort)\
+[fastcgi_ignore_headers](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_ignore_headers)\
+[fastcgi_index](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_index)\
+[fastcgi_intercept_errors](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors)\
+[fastcgi_keep_conn](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn)\
+[fastcgi_limit_rate](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_limit_rate)\
+[fastcgi_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_max_temp_file_size)\
+[fastcgi_next_upstream](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream)\
+[fastcgi_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_timeout)\
+[fastcgi_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_tries)\
+[fastcgi_no_cache](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_no_cache)\
+[fastcgi_param](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param)\
+[fastcgi_pass](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass)\
+[fastcgi_pass_header](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass_header)\
+[fastcgi_pass_request_body](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass_request_body)\
+[fastcgi_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass_request_headers)\
+[fastcgi_read_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_read_timeout)\
+[fastcgi_request_buffering](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_request_buffering)\
+[fastcgi_send_lowat](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_send_lowat)\
+[fastcgi_send_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_send_timeout)\
+[fastcgi_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_socket_keepalive)\
+[fastcgi_split_path_info](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info)\
+[fastcgi_store](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_store)\
+[fastcgi_store_access](http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_store_access)\
+[fastcgi_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_temp_file_write_size)\
+[fastcgi_temp_path](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_temp_path)\
+[flv](https://nginx.org/en/docs/http/ngx_http_flv_module.html#flv)\
+[geo (ngx_http_geo_module)](https://nginx.org/en/docs/http/ngx_http_geo_module.html#geo)\
+[geo (ngx_stream_geo_module)](https://nginx.org/en/docs/stream/ngx_stream_geo_module.html#geo)\
+[grpc_buffer_size](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_buffer_size)\
+[grpc_connect_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_connect_timeout)\
+[grpc_hide_header](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_hide_header)\
+[grpc_ignore_headers](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ignore_headers)\
+[grpc_intercept_errors](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_intercept_errors)\
+[grpc_next_upstream](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream)\
+[grpc_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_timeout)\
+[grpc_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_tries)\
+[grpc_pass](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass)\
+[grpc_pass_header](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass_header)\
+[grpc_read_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_read_timeout)\
+[grpc_send_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_send_timeout)\
+[grpc_set_header](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_set_header)\
+[grpc_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_socket_keepalive)\
+[grpc_ssl_certificate](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate)\
+[grpc_ssl_certificate_cache](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_cache)\
+[grpc_ssl_certificate_key](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_key)\
+[grpc_ssl_ciphers](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_ciphers)\
+[grpc_ssl_conf_command](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_conf_command)\
+[grpc_ssl_crl](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_crl)\
+[grpc_ssl_name](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_name)\
+[grpc_ssl_password_file](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_password_file)\
+[grpc_ssl_protocols](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_protocols)\
+[grpc_ssl_server_name](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_server_name)\
+[grpc_ssl_session_reuse](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_session_reuse)\
+[grpc_ssl_trusted_certificate](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_trusted_certificate)\
+[grpc_ssl_verify](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify)\
+[grpc_ssl_verify_depth](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify_depth)\
+[gunzip](https://nginx.org/en/docs/http/ngx_http_gunzip_module.html#gunzip)\
+[gunzip_buffers](https://nginx.org/en/docs/http/ngx_http_gunzip_module.html#gunzip_buffers)\
+[gzip](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip)\
+[gzip_buffers](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_buffers)\
+[gzip_comp_level](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_comp_level)\
+[gzip_disable](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_disable)\
+[gzip_http_version](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_http_version)\
+[gzip_min_length](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_min_length)\
+[gzip_proxied](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_proxied)\
+[gzip_static](https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html#gzip_static)\
+[gzip_types](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_types)\
+[gzip_vary](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_vary)\
+[hash (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash)\
+[hash (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#hash)\
+[health_check (ngx_http_upstream_hc_module)](https://nginx.org/en/docs/http/ngx_http_upstream_hc_module.html#health_check)\
+[health_check (ngx_stream_upstream_hc_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_hc_module.html#health_check)\
+[health_check_timeout](https://nginx.org/en/docs/stream/ngx_stream_upstream_hc_module.html#health_check_timeout)\
+[hls](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls)\
+[hls_buffers](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_buffers)\
+[hls_forward_args](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_forward_args)\
+[hls_fragment](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_fragment)\
+[hls_mp4_buffer_size](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_mp4_buffer_size)\
+[hls_mp4_max_buffer_size](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_mp4_max_buffer_size)\
+[http](https://nginx.org/en/docs/http/ngx_http_core_module.html#http)\
+[http2_body_preread_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_body_preread_size)\
+[http2_chunk_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_chunk_size)\
+[http2_idle_timeout](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_idle_timeout)\
+[http2_max_concurrent_pushes](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_concurrent_pushes)\
+[http2_max_concurrent_streams](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_concurrent_streams)\
+[http2_max_field_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_field_size)\
+[http2_max_header_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_header_size)\
+[http2_max_requests](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_requests)\
+[http2_push](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_push)\
+[http2_push_preload](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_push_preload)\
+[http2_recv_buffer_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_recv_buffer_size)\
+[http2_recv_timeout](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_recv_timeout)\
+[http3](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3)\
+[http3_hq](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3_hq)\
+[http3_max_concurrent_streams](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3_max_concurrent_streams)\
+[http3_stream_buffer_size](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3_stream_buffer_size)\
+[if](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if)\
+[if_modified_since](https://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since)\
+[ignore_invalid_headers](https://nginx.org/en/docs/http/ngx_http_core_module.html#ignore_invalid_headers)\
+[image_filter](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter)\
+[image_filter_buffer](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_buffer)\
+[image_filter_interlace](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_interlace)\
+[image_filter_jpeg_quality](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_jpeg_quality)\
+[image_filter_sharpen](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_sharpen)\
+[image_filter_transparency](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_transparency)\
+[image_filter_webp_quality](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_webp_quality)\
+[imap_auth](https://nginx.org/en/docs/mail/ngx_mail_imap_module.html#imap_auth)\
+[imap_capabilities](https://nginx.org/en/docs/mail/ngx_mail_imap_module.html#imap_capabilities)\
+[imap_client_buffer](https://nginx.org/en/docs/mail/ngx_mail_imap_module.html#imap_client_buffer)\
+[include](https://nginx.org/en/docs/ngx_core_module.html#include)\
+[index](https://nginx.org/en/docs/http/ngx_http_index_module.html#index)\
+[internal](https://nginx.org/en/docs/http/ngx_http_core_module.html#internal)\
+[internal_redirect](http://nginx.org/en/docs/http/ngx_http_internal_redirect_module.html#internal_redirect)\
+[ip_hash](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash)\
+[issuer](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#issuer)\
+[js_access (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_access)\
+[js_body_filter](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_body_filter)\
+[js_content](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_content)\
+[js_fetch_buffer_size (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_buffer_size)\
+[js_fetch_buffer_size (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_buffer_size)\
+[js_fetch_ciphers (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_ciphers)\
+[js_fetch_ciphers (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_ciphers)\
+[js_fetch_max_response_buffer_size (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_max_response_buffer_size)\
+[js_fetch_max_response_buffer_size (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_max_response_buffer_size)\
+[js_fetch_protocols (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_protocols)\
+[js_fetch_protocols (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_protocols)\
+[js_fetch_timeout (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_timeout)\
+[js_fetch_timeout (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_timeout)\
+[js_fetch_trusted_certificate (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_trusted_certificate)\
+[js_fetch_trusted_certificate (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_trusted_certificate)\
+[js_fetch_verify (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_verify)\
+[js_fetch_verify (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_verify)\
+[js_fetch_verify_depth (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_verify_depth)\
+[js_fetch_verify_depth (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_verify_depth)\
+[js_filter (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_filter)\
+[js_header_filter](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_header_filter)\
+[js_import (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_import)\
+[js_import (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_import)\
+[js_include (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_include)\
+[js_include (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_include)\
+[js_path (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_path)\
+[js_path (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_path)\
+[js_periodic (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_periodic)\
+[js_periodic (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_periodic)\
+[js_preload_object (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_preload_object)\
+[js_preload_object (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_preload_object)\
+[js_preread (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_preread)\
+[js_set (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_set)\
+[js_set (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_set)\
+[js_var (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_var)\
+[js_var (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_var)\
+[js_shared_dict_zone (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_shared_dict_zone)\
+[js_var (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_var)\
+[js_var (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_var)\
+[keepalive](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive)\
+[keepalive_disable](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable)\
+[keepalive_min_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_min_timeout)\
+[keepalive_requests (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests)\
+[keepalive_time (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_time)\
+[keepalive_timeout (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout)\
+[keyval (ngx_http_keyval_module)](https://nginx.org/en/docs/http/ngx_http_keyval_module.html#keyval)\
+[keyval (ngx_stream_keyval_module)](https://nginx.org/en/docs/stream/ngx_stream_keyval_module.html#keyval)\
+[keyval_zone (ngx_http_keyval_module)](https://nginx.org/en/docs/http/ngx_http_keyval_module.html#keyval_zone)\
+[keyval_zone (ngx_stream_keyval_module)](https://nginx.org/en/docs/stream/ngx_stream_keyval_module.html#keyval_zone)\
+[large_client_header_buffers](https://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers)\
+[least_conn (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn)\
+[least_conn (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#least_conn)\
+[least_time (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_time)\
+[least_time (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#least_time)\
+[license_token](https://nginx.org/en/docs/ngx_mgmt_module.html#license_token)\
+[limit_conn (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn)\
+[limit_conn (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn)\
+[limit_conn_dry_run (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_dry_run)\
+[limit_conn_dry_run (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn_dry_run)\
+[limit_conn_log_level (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_log_level)\
+[limit_conn_log_level (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn_log_level)\
+[limit_conn_status](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_status)\
+[limit_conn_zone (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_zone)\
+[limit_conn_zone (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn_zone)\
+[limit_except](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except)\
+[limit_rate](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate)\
+[limit_rate_after](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after)\
+[limit_req](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req)\
+[limit_req_dry_run](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_dry_run)\
+[limit_req_log_level](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_log_level)\
+[limit_req_status](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_status)\
+[limit_req_zone](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_zone)\
+[limit_zone](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_zone)\
+[lingering_close](https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_close)\
+[lingering_time](https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_time)\
+[lingering_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_timeout)\
+[listen (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#listen)\
+[listen (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#listen)\
+[load_module](https://nginx.org/en/docs/ngx_core_module.html#load_module)\
+[location](https://nginx.org/en/docs/http/ngx_http_core_module.html#location)\
+[lock_file](http://nginx.org/en/docs/ngx_core_module.html#lock_file)\
+[log_format (ngx_http_log_module)](https://nginx.org/en/docs/http/ngx_http_log_module.html#log_format)\
+[log_format (ngx_stream_log_module)](https://nginx.org/en/docs/stream/ngx_stream_log_module.html#log_format)\
+[log_not_found](https://nginx.org/en/docs/http/ngx_http_core_module.html#log_not_found)\
+[log_subrequest](https://nginx.org/en/docs/http/ngx_http_core_module.html#log_subrequest)\
+[mail](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#mail)\
+[map (ngx_http_map_module)](https://nginx.org/en/docs/http/ngx_http_map_module.html#map)\
+[map (ngx_stream_map_module)](https://nginx.org/en/docs/stream/ngx_stream_map_module.html#map)\
+[map_hash_bucket_size (ngx_http_map_module)](https://nginx.org/en/docs/http/ngx_http_map_module.html#map_hash_bucket_size)\
+[map_hash_bucket_size (ngx_stream_map_module)](https://nginx.org/en/docs/stream/ngx_stream_map_module.html#map_hash_bucket_size)\
+[map_hash_max_size (ngx_http_map_module)](https://nginx.org/en/docs/http/ngx_http_map_module.html#map_hash_max_size)\
+[map_hash_max_size (ngx_stream_map_module)](https://nginx.org/en/docs/stream/ngx_stream_map_module.html#map_hash_max_size)\
+[master_process](https://nginx.org/en/docs/ngx_core_module.html#master_process)\
+[match (ngx_http_upstream_hc_module)](https://nginx.org/en/docs/http/ngx_http_upstream_hc_module.html#match)\
+[match (ngx_stream_upstream_hc_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_hc_module.html#match)\
+[max_errors](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#max_errors)\
+[max_headers](https://nginx.org/en/docs/http/ngx_http_core_module.html#max_headers)\
+[max_ranges](https://nginx.org/en/docs/http/ngx_http_core_module.html#max_ranges)\
+[memcached_buffer_size](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_buffer_size)\
+[memcached_connect_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_connect_timeout)\
+[memcached_gzip_flag](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_gzip_flag)\
+[memcached_next_upstream](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream)\
+[memcached_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_timeout)\
+[memcached_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_tries)\
+[memcached_pass](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_pass)\
+[memcached_read_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_read_timeout)\
+[memcached_send_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_send_timeout)\
+[memcached_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_socket_keepalive)\
+[merge_slashes](https://nginx.org/en/docs/http/ngx_http_core_module.html#merge_slashes)\
+[mgmt](https://nginx.org/en/docs/ngx_mgmt_module.html#mgmt)\
+[min_delete_depth](https://nginx.org/en/docs/http/ngx_http_dav_module.html#min_delete_depth)\
+[mirror](https://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror)\
+[mirror_request_body](https://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror_request_body)\
+[modern_browser](https://nginx.org/en/docs/http/ngx_http_browser_module.html#modern_browser)\
+[modern_browser_value](https://nginx.org/en/docs/http/ngx_http_browser_module.html#modern_browser_value)\
+[more_clear_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_clear_headers)\
+[more_clear_input_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_clear_input_headers)\
+[more_set_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_set_headers)\
+[more_set_input_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_set_input_headers)\
+[mp4](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4)\
+[mp4_buffer_size](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_buffer_size)\
+[mp4_limit_rate](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_limit_rate)\
+[mp4_limit_rate_after](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_limit_rate_after)\
+[mp4_max_buffer_size](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_max_buffer_size)\
+[mp4_start_key_frame](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_start_key_frame)\
+[mqtt](https://nginx.org/en/docs/stream/ngx_stream_mqtt_filter_module.html#mqtt)\
+[mqtt_rewrite_buffer_size](https://nginx.org/en/docs/stream/ngx_stream_mqtt_filter_module.html#mqtt_rewrite_buffer_size)\
+[mqtt_set_connect](https://nginx.org/en/docs/stream/ngx_stream_mqtt_filter_module.html#mqtt_set_connect)\
+[msie_padding](https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_padding)\
+[msie_refresh](https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_refresh)\
+[multi_accept](https://nginx.org/en/docs/ngx_core_module.html#multi_accept)\
+[ntlm](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ntlm)\
+[oidc_provider](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#oidc_provider)\
+[open_file_cache](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache)\
+[open_file_cache_errors](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_errors)\
+[open_file_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_min_uses)\
+[open_file_cache_valid](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_valid)\
+[open_log_file_cache (ngx_http_log_module)](https://nginx.org/en/docs/http/ngx_http_log_module.html#open_log_file_cache)\
+[open_log_file_cache (ngx_stream_log_module)](https://nginx.org/en/docs/stream/ngx_stream_log_module.html#open_log_file_cache)\
+[otel_exporter](https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter)\
+[otel_service_name](https://nginx.org/en/docs/ngx_otel_module.html#otel_service_name)\
+[otel_trace](https://nginx.org/en/docs/ngx_otel_module.html#otel_trace)\
+[otel_trace_context](https://nginx.org/en/docs/ngx_otel_module.html#otel_trace_context)\
+[otel_span_name](https://nginx.org/en/docs/ngx_otel_module.html#otel_span_name)\
+[otel_span_attr](https://nginx.org/en/docs/ngx_otel_module.html#otel_span_attr)\
+[output_buffers](https://nginx.org/en/docs/http/ngx_http_core_module.html#output_buffers)\
+[override_charset](https://nginx.org/en/docs/http/ngx_http_charset_module.html#override_charset)\
+[pass](https://nginx.org/en/docs/stream/ngx_stream_pass_module.html#pass)\
+[pid](https://nginx.org/en/docs/ngx_core_module.html#pid)\
+[pop3_auth](https://nginx.org/en/docs/mail/ngx_mail_pop3_module.html#pop3_auth)\
+[pop3_capabilities](https://nginx.org/en/docs/mail/ngx_mail_pop3_module.html#pop3_capabilities)\
+[port_in_redirect](https://nginx.org/en/docs/http/ngx_http_core_module.html#port_in_redirect)\
+[postpone_output](https://nginx.org/en/docs/http/ngx_http_core_module.html#postpone_output)\
+[preread_buffer_size (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_buffer_size)\
+[preread_timeout (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_timeout)\
+[protocol](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#protocol)\
+[proxy_buffer](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_buffer)\
+[proxy_buffer_size (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffer_size)\
+[proxy_buffer_size (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_buffer_size)\
+[proxy_buffering](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering)\
+[proxy_buffers](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers)\
+[proxy_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_busy_buffers_size)\
+[proxy_cache](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache)\
+[proxy_cache_background_update](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_background_update)\
+[proxy_cache_bypass](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_bypass)\
+[proxy_cache_convert_head](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head)\
+[proxy_cache_key](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key)\
+[proxy_cache_lock](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock)\
+[proxy_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_age)\
+[proxy_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_timeout)\
+[proxy_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_max_range_offset)\
+[proxy_cache_methods](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_methods)\
+[proxy_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_min_uses)\
+[proxy_cache_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path)\
+[proxy_cache_purge](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_purge)\
+[proxy_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_revalidate)\
+[proxy_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale)\
+[proxy_cache_valid](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid)\
+[proxy_connect_timeout (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout)\
+[proxy_connect_timeout (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_connect_timeout)\
+[proxy_cookie_domain](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain)\
+[proxy_cookie_flags](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_flags)\
+[proxy_cookie_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path)\
+[proxy_download_rate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_download_rate)\
+[proxy_force_ranges](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_force_ranges)\
+[proxy_half_close (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_half_close)\
+[proxy_headers_hash_bucket_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_bucket_size)\
+[proxy_headers_hash_max_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_max_size)\
+[proxy_hide_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header)\
+[proxy_http_version](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version)\
+[proxy_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_client_abort)\
+[proxy_ignore_headers](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_headers)\
+[proxy_intercept_errors](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors)\
+[proxy_limit_rate](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_limit_rate)\
+[proxy_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size)\
+[proxy_method](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_method)\
+[proxy_next_upstream (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream)\
+[proxy_next_upstream (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_next_upstream)\
+[proxy_next_upstream_timeout (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout)\
+[proxy_next_upstream_timeout (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_next_upstream_timeout)\
+[proxy_next_upstream_tries (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries)\
+[proxy_next_upstream_tries (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_next_upstream_tries)\
+[proxy_no_cache](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_no_cache)\
+[proxy_pass (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass)\
+[proxy_pass (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_pass)\
+[proxy_pass_error_message](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_pass_error_message)\
+[proxy_pass_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_header)\
+[proxy_pass_request_body](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_body)\
+[proxy_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_headers)\
+[proxy_protocol (ngx_mail_proxy_module)](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_protocol)\
+[proxy_protocol (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_protocol)\
+[proxy_protocol_timeout (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#proxy_protocol_timeout)\
+[proxy_read_timeout](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout)\
+[proxy_redirect](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect)\
+[proxy_requests (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_requests)\
+[proxy_request_buffering](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering)\
+[proxy_responses (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_responses)\
+[proxy_send_lowat](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_lowat)\
+[proxy_send_timeout](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_timeout)\
+[proxy_session_drop (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_session_drop)\
+[proxy_set_body](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_body)\
+[proxy_set_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header)\
+[proxy_smtp_auth](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_smtp_auth)\
+[proxy_socket_keepalive (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_socket_keepalive)\
+[proxy_socket_keepalive (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_socket_keepalive)\
+[proxy_ssl (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl)\
+[proxy_ssl_certificate (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate)\
+[proxy_ssl_certificate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate)\
+[proxy_ssl_certificate_cache (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_cache)\
+[proxy_ssl_certificate_cache (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate_cache)\
+[proxy_ssl_certificate_key (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_key)\
+[proxy_ssl_certificate_key (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate_key)\
+[proxy_ssl_ciphers (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_ciphers)\
+[proxy_ssl_ciphers (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_ciphers)\
+[proxy_ssl_conf_command (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_conf_command)\
+[proxy_ssl_conf_command (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_conf_command)\
+[proxy_ssl_crl (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_crl)\
+[proxy_ssl_crl (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_crl)\
+[proxy_ssl_name (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_name)\
+[proxy_ssl_name (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_name)\
+[proxy_ssl_password_file (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_password_file)\
+[proxy_ssl_password_file (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_password_file)\
+[proxy_ssl_protocols (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_protocols)\
+[proxy_ssl_protocols (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_protocols)\
+[proxy_ssl_server_name (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name)\
+[proxy_ssl_server_name (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_server_name)\
+[proxy_ssl_session_reuse (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_session_reuse)\
+[proxy_ssl_session_reuse (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_session_reuse)\
+[proxy_ssl_trusted_certificate (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_trusted_certificate)\
+[proxy_ssl_trusted_certificate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_trusted_certificate)\
+[proxy_ssl_verify (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify)\
+[proxy_ssl_verify (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_verify)\
+[proxy_ssl_verify_depth (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify_depth)\
+[proxy_ssl_verify_depth (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_verify_depth)\
+[proxy_store](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store)\
+[proxy_store_access](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store_access)\
+[proxy_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_file_write_size)\
+[proxy_temp_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_path)\
+[proxy_timeout (ngx_mail_proxy_module)](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_timeout)\
+[proxy_timeout (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_timeout)\
+[proxy_upload_rate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_upload_rate)\
+[queue](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue)\
+[quic_active_connection_id_limit](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_active_connection_id_limit)\
+[quic_gso](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_gso)\
+[quic_host_key](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_host_key)\
+[quic_retry](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_retry)\
+[random (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#random)\
+[random (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#random)\
+[random_index](https://nginx.org/en/docs/http/ngx_http_random_index_module.html#random_index)\
+[read_ahead](https://nginx.org/en/docs/http/ngx_http_core_module.html#read_ahead)\
+[read_timeout](https://nginx.org/en/docs/ngx_mgmt_module.html#read_timeout)\
+[real_ip_header](https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header)\
+[real_ip_recursive](https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive)\
+[recursive_error_pages](https://nginx.org/en/docs/http/ngx_http_core_module.html#recursive_error_pages)\
+[redirect_uri](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#redirect_uri)\
+[referer_hash_bucket_size](https://nginx.org/en/docs/http/ngx_http_referer_module.html#referer_hash_bucket_size)\
+[referer_hash_max_size](https://nginx.org/en/docs/http/ngx_http_referer_module.html#referer_hash_max_size)\
+[request_pool_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#request_pool_size)\
+[reset_timedout_connection](https://nginx.org/en/docs/http/ngx_http_core_module.html#reset_timedout_connection)\
+[resolver (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver)\
+[resolver (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#resolver)\
+[resolver (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver)\
+[resolver (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#resolver)\
+[resolver (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#resolver)\
+[resolver_timeout (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout)\
+[resolver_timeout (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#resolver_timeout)\
+[resolver_timeout (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver_timeout)\
+[resolver_timeout (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#resolver_timeout)\
+[resolver_timeout (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#resolver_timeout)\
+[return (ngx_http_rewrite_module)](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return)\
+[return (ngx_stream_return_module)](https://nginx.org/en/docs/stream/ngx_stream_return_module.html#return)\
+[rewrite](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite)\
+[rewrite_log](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite_log)\
+[root](https://nginx.org/en/docs/http/ngx_http_core_module.html#root)\
+[satisfy](https://nginx.org/en/docs/http/ngx_http_core_module.html#satisfy)\
+[scgi_buffer_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_buffer_size)\
+[scgi_buffering](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_buffering)\
+[scgi_buffers](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_buffers)\
+[scgi_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_busy_buffers_size)\
+[scgi_cache](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache)\
+[scgi_cache_background_update](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_background_update)\
+[scgi_cache_bypass](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_bypass)\
+[scgi_cache_key](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_key)\
+[scgi_cache_lock](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_lock)\
+[scgi_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_lock_age)\
+[scgi_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_lock_timeout)\
+[scgi_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_max_range_offset)\
+[scgi_cache_methods](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_methods)\
+[scgi_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_min_uses)\
+[scgi_cache_path](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_path)\
+[scgi_cache_purge](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_purge)\
+[scgi_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_revalidate)\
+[scgi_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_use_stale)\
+[scgi_cache_valid](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_valid)\
+[scgi_connect_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_connect_timeout)\
+[scgi_force_ranges](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_force_ranges)\
+[scgi_hide_header](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_hide_header)\
+[scgi_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_ignore_client_abort)\
+[scgi_ignore_headers](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_ignore_headers)\
+[scgi_intercept_errors](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_intercept_errors)\
+[scgi_limit_rate](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_limit_rate)\
+[scgi_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_max_temp_file_size)\
+[scgi_next_upstream](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream)\
+[scgi_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_timeout)\
+[scgi_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_tries)\
+[scgi_no_cache](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_no_cache)\
+[scgi_param](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_param)\
+[scgi_pass](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass)\
+[scgi_pass_header](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass_header)\
+[scgi_pass_request_body](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass_request_body)\
+[scgi_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass_request_headers)\
+[scgi_read_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_read_timeout)\
+[scgi_request_buffering](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_request_buffering)\
+[scgi_send_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_send_timeout)\
+[scgi_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_socket_keepalive)\
+[scgi_store](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_store)\
+[scgi_store_access](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_store_access)\
+[scgi_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_temp_file_write_size)\
+[scgi_temp_path](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_temp_path)\
+[scope](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#scope)\
+[secure_link](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link)\
+[secure_link_md5](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link_md5)\
+[secure_link_secret](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link_secret)\
+[send_lowat](https://nginx.org/en/docs/http/ngx_http_core_module.html#send_lowat)\
+[send_timeout (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#send_timeout)\
+[send_timeout (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#send_timeout)\
+[sendfile](https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile)\
+[sendfile_max_chunk](https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile_max_chunk)\
+[server (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#server)\
+[server (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#server)\
+[server (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#server)\
+[server (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#server)\
+[server_name (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name)\
+[server_name (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#server_name)\
+[server_name (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#server_name)\
+[server_name_in_redirect](https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect)\
+[server_tokens](https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens)\
+[session_log](https://nginx.org/en/docs/http/ngx_http_session_log_module.html#session_log)\
+[session_log_format](https://nginx.org/en/docs/http/ngx_http_session_log_module.html#session_log_format)\
+[session_log_zone](https://nginx.org/en/docs/http/ngx_http_session_log_module.html#session_log_zone)\
+[session_store](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#session_store)\
+[session_timeout](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#session_timeout)\
+[set (ngx_http_rewrite_module)](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#set)\
+[set (ngx_stream_set_module)](https://nginx.org/en/docs/stream/ngx_stream_set_module.html#set)\
+[set_real_ip_from (ngx_http_realip_module)](https://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from)\
+[set_real_ip_from (ngx_mail_realip_module)](https://nginx.org/en/docs/mail/ngx_mail_realip_module.html#set_real_ip_from)\
+[set_real_ip_from (ngx_stream_realip_module)](https://nginx.org/en/docs/stream/ngx_stream_realip_module.html#set_real_ip_from)\
+[slice](https://nginx.org/en/docs/http/ngx_http_slice_module.html#slice)\
+[smtp_auth](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_auth)\
+[smtp_capabilities](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_capabilities)\
+[smtp_client_buffer](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_client_buffer)\
+[smtp_greeting_delay](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_greeting_delay)\
+[source_charset](https://nginx.org/en/docs/http/ngx_http_charset_module.html#source_charset)
+[split_clients (ngx_http_split_clients_module)](https://nginx.org/en/docs/http/ngx_http_split_clients_module.html#split_clients)\
+[split_clients (ngx_stream_split_clients_module)](https://nginx.org/en/docs/stream/ngx_stream_split_clients_module.html#split_clients)\
+[ssi](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi)\
+[ssi_last_modified](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_last_modified)\
+[ssi_min_file_chunk](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_min_file_chunk)\
+[ssi_silent_errors](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_silent_errors)\
+[ssi_types](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_types)\
+[ssi_value_length](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_value_length)\
+[ssl (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl)\
+[ssl (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl)\
+[ssl (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl)\
+[ssl_buffer_size](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_buffer_size)\
+[ssl_certificate (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate)\
+[ssl_certificate (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_certificate)\
+[ssl_certificate (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate)\
+[ssl_certificate (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_certificate)\
+[ssl_certificate_cache (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_cache)\
+[ssl_certificate_cache (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate_cache)\
+[ssl_certificate_key (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_key)\
+[ssl_certificate_key (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_certificate_key)\
+[ssl_certificate_key (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate_key)\
+[ssl_certificate_key (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_certificate_key)\
+[ssl_ciphers (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers)\
+[ssl_ciphers (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_ciphers)\
+[ssl_ciphers (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_ciphers)\
+[ssl_client_certificate (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate)\
+[ssl_client_certificate (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_client_certificate)\
+[ssl_client_certificate (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_client_certificate)\
+[ssl_conf_command (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_conf_command)\
+[ssl_conf_command (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_conf_command)\
+[ssl_conf_command (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_conf_command)\
+[ssl_crl (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_crl)\
+[ssl_crl (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_crl)\
+[ssl_crl (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_crl)\
+[ssl_dhparam (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam)\
+[ssl_dhparam (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_dhparam)\
+[ssl_early_data](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data)\
+[ssl_ecdh_curve (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ecdh_curve)\
+[ssl_ecdh_curve (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_ecdh_curve)\
+[ssl_ecdh_curve (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_ecdh_curve)\
+[ssl_handshake_timeout](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_handshake_timeout)\
+[ssl_name](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_name)\
+[ssl_object_cache_inheritable](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_object_cache_inheritable)\
+[ssl_ocsp](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp)\
+[ssl_ocsp_cache](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp_cache)\
+[ssl_ocsp_responder](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp_responder)\
+[ssl_password_file (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_password_file)\
+[ssl_password_file (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_password_file)\
+[ssl_password_file (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_password_file)\
+[ssl_prefer_server_ciphers (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers)\
+[ssl_prefer_server_ciphers (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_prefer_server_ciphers)\
+[ssl_prefer_server_ciphers (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_prefer_server_ciphers)\
+[ssl_preread (ngx_stream_ssl_preread_module)](http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html#var_ssl_preread_protocol)\
+[ssl_protocols (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols)\
+[ssl_protocols (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_protocols)\
+[ssl_protocols (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_protocols)\
+[ssl_protocols (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_protocols)\
+[ssl_reject_handshake](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_reject_handshake)\
+[ssl_server_name](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_server_name)\
+[ssl_session_cache (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache)\
+[ssl_session_cache (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_cache)\
+[ssl_session_cache (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_cache)\
+[ssl_session_ticket_key (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_ticket_key)\
+[ssl_session_ticket_key (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_ticket_key)\
+[ssl_session_ticket_key (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_ticket_key)\
+[ssl_session_tickets (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_tickets)\
+[ssl_session_tickets (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_tickets)\
+[ssl_session_tickets (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_tickets)\
+[ssl_session_timeout (ngx_http_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_timeout)\
+[ssl_session_timeout (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_timeout)\
+[ssl_session_timeout (ngx_stream_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_timeout)\
+[ssl_stapling](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling)\
+[ssl_stapling_file](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_file)\
+[ssl_stapling_responder](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_responder)\
+[ssl_stapling_verify](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_verify)\
+[ssl_trusted_certificate (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_trusted_certificate)\
+[ssl_trusted_certificate (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_trusted_certificate)\
+[ssl_trusted_certificate (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_trusted_certificate)\
+[ssl_trusted_certificate (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_trusted_certificate)\
+[ssl_verify](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_verify)\
+[ssl_verify_client (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_client)\
+[ssl_verify_client (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_verify_client)\
+[ssl_verify_client (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_verify_client)\
+[ssl_verify_depth (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_depth)\
+[ssl_verify_depth (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_verify_depth)\
+[ssl_verify_depth (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_verify_depth)\
+[ssl_verify_depth (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_verify_depth)\
+[starttls](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#starttls)\
+[state (ngx_http_upstream_module)](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#state)\
+[status_zone (ngx_http_api_module)](https://nginx.org/en/docs/http/ngx_http_api_module.html#status_zone)\
+[sticky](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky)\
+[sticky_cookie_insert](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky_cookie_insert)\
+[stream (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#stream)\
+[stub_status](https://nginx.org/en/docs/http/ngx_http_stub_status_module.html#stub_status)\
+[sub_filter](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter)\
+[sub_filter_last_modified](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter_last_modified)\
+[sub_filter_once](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter_once)\
+[sub_filter_types](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter_types)\
+[subrequest_output_buffer_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#subrequest_output_buffer_size)\
+[tcp_nodelay (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay)\
+[tcp_nodelay (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#tcp_nodelay)\
+[tcp_nopush](https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nopush)\
+[thread_pool](https://nginx.org/en/docs/ngx_core_module.html#thread_pool)\
+[timeout](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#timeout)\
+[timer_resolution](https://nginx.org/en/docs/ngx_core_module.html#timer_resolution)\
+[try_files](https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files)\
+[types](https://nginx.org/en/docs/http/ngx_http_core_module.html#types)\
+[types_hash_bucket_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_bucket_size)\
+[types_hash_max_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_max_size)\
+[underscores_in_headers](https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers)\
+[uninitialized_variable_warn](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#uninitialized_variable_warn)\
+[upstream (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream)\
+[upstream (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#upstream)\
+[upstream_conf](https://nginx.org/en/docs/http/ngx_http_upstream_conf_module.html#upstream_conf)\
+[usage_report](https://nginx.org/en/docs/ngx_mgmt_module.html#usage_report)\
+[use](https://nginx.org/en/docs/ngx_core_module.html#use)\
+[user](https://nginx.org/en/docs/ngx_core_module.html#user)\
+[userid](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid)\
+[userid_domain](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_domain)\
+[userid_expires](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_expires)\
+[userid_flags](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_flags)\
+[userid_mark](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_mark)\
+[userid_name](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_name)\
+[userid_p3p](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_p3p)\
+[userid_path](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_path)\
+[userid_service](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_service)\
+[uuid_file](https://nginx.org/en/docs/ngx_mgmt_module.html#uuid_file)\
+[uwsgi_buffer_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_buffer_size)\
+[uwsgi_buffering](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_buffering)\
+[uwsgi_buffers](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_buffers)\
+[uwsgi_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_busy_buffers_size)\
+[uwsgi_cache](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache)\
+[uwsgi_cache_background_update](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_background_update)\
+[uwsgi_cache_bypass](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_bypass)\
+[uwsgi_cache_key](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_key)\
+[uwsgi_cache_lock](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_lock)\
+[uwsgi_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_lock_age)\
+[uwsgi_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_lock_timeout)\
+[uwsgi_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_max_range_offset)\
+[uwsgi_cache_methods](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_methods)\
+[uwsgi_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_min_uses)\
+[uwsgi_cache_path](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_path)\
+[uwsgi_cache_purge](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_purge)\
+[uwsgi_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_revalidate)\
+[uwsgi_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_use_stale)\
+[uwsgi_cache_valid](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid)\
+[uwsgi_connect_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_connect_timeout)\
+[uwsgi_force_ranges](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_force_ranges)\
+[uwsgi_hide_header](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_hide_header)\
+[uwsgi_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ignore_client_abort)\
+[uwsgi_ignore_headers](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ignore_headers)\
+[uwsgi_intercept_errors](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_intercept_errors)\
+[uwsgi_limit_rate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_limit_rate)\
+[uwsgi_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_max_temp_file_size)\
+[uwsgi_modifier1](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_modifier1)\
+[uwsgi_modifier2](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_modifier2)\
+[uwsgi_next_upstream](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream)\
+[uwsgi_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_timeout)\
+[uwsgi_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_tries)\
+[uwsgi_no_cache](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_no_cache)\
+[uwsgi_param](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_param)\
+[uwsgi_pass](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass)\
+[uwsgi_pass_header](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass_header)\
+[uwsgi_pass_request_body](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass_request_body)\
+[uwsgi_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass_request_headers)\
+[uwsgi_read_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_read_timeout)\
+[uwsgi_request_buffering](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_request_buffering)\
+[uwsgi_send_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_send_timeout)\
+[uwsgi_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_socket_keepalive)\
+[uwsgi_ssl_certificate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate)\
+[uwsgi_ssl_certificate_cache](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate_cache)\
+[uwsgi_ssl_certificate_key](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate_key)\
+[uwsgi_ssl_conf_command](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_conf_command)\
+[uwsgi_ssl_crl](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_crl)\
+[uwsgi_ssl_name](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_name)\
+[uwsgi_ssl_password_file](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_password_file)\
+[uwsgi_ssl_protocols](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_protocols)\
+[uwsgi_ssl_server_name](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_server_name)\
+[uwsgi_ssl_session_reuse](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_session_reuse)\
+[uwsgi_ssl_trusted_certificate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_trusted_certificate)\
+[uwsgi_ssl_verify](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_verify)\
+[uwsgi_ssl_verify_depth](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_verify_depth)\
+[uwsgi_store](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_store)\
+[uwsgi_store_access](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_store_access)\
+[uwsgi_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_temp_file_write_size)\
+[uwsgi_temp_path](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_temp_path)\
+[valid_referers](https://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers)\
+[variables_hash_bucket_size (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_bucket_size)\
+[variables_hash_bucket_size (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_bucket_size)\
+[variables_hash_max_size (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_max_size)\
+[variables_hash_max_size (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_max_size)\
+[worker_aio_requests](https://nginx.org/en/docs/ngx_core_module.html#worker_aio_requests)\
+[worker_connections](https://nginx.org/en/docs/ngx_core_module.html#worker_connections)\
+[worker_cpu_affinity](https://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity)\
+[worker_priority](https://nginx.org/en/docs/ngx_core_module.html#worker_priority)\
+[worker_processes](https://nginx.org/en/docs/ngx_core_module.html#worker_processes)\
+[worker_rlimit_core](https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_core)\
+[worker_rlimit_nofile](https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile)\
+[worker_shutdown_timeout](https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout)\
+[working_directory](https://nginx.org/en/docs/ngx_core_module.html#working_directory)\
+[xclient](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#xclient)\
+[xml_entities](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xml_entities)\
+[xslt_last_modified](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_last_modified)\
+[xslt_param](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_param)\
+[xslt_string_param](http://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_string_param)\
+[xslt_stylesheet](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_stylesheet)\
+[xslt_types](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_types)\
+[zone (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone)\
+[zone (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#zone)\
+
+{{< /details >}}
diff --git a/content/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md b/content/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md
new file mode 100644
index 0000000000..8d43828a6b
--- /dev/null
+++ b/content/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md
@@ -0,0 +1,14 @@
+---
+title: Create or upload using the NGINXaaS Console
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/deploy/nginx-configuration/nginx-configuration-console/
+canonical: /f5ads/google/deploy/nginx-configuration/nginx-configuration-console/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+contentSource: nginxaas/overview/nginx-configuration/nginx-configuration-console.md
+---
+
+## What's next
+[Monitor your deployment]({{< ref "/f5ads/google/monitoring/enable-monitoring.md" >}})
\ No newline at end of file
diff --git a/content/f5ads/google/deploy/prerequisites.md b/content/f5ads/google/deploy/prerequisites.md
new file mode 100644
index 0000000000..ac65a0492f
--- /dev/null
+++ b/content/f5ads/google/deploy/prerequisites.md
@@ -0,0 +1,37 @@
+---
+title: Prerequisites
+weight: 100
+toc: false
+f5-docs: DOCS-000
+url: /f5ads/google/deploy/prerequisites/
+canonical: /f5ads/google/deploy/prerequisites/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+Before you can deploy F5 Application Delivery Service for Google Cloud, you need to complete some prerequisites.
+
+## Subscribe to the F5 ADS for Google Cloud offering
+
+If it's your first time using F5 ADS for Google Cloud, you need to find the offering in the Google Cloud Marketplace and subscribe to it:
+
+### Get the offering in the Google Cloud Marketplace
+
+1. Find the [F5 ADS for Google Cloud product listing in the Google Cloud Marketplace](https://console.cloud.google.com/marketplace/product/f5-7626-networks-public/nginxaas-google-cloud).
+1. Login with your Google Cloud account.
+1. Select **Subscribe** to subscribe to the F5 ADS for Google Cloud offering.
+1. Currently the **Enterprise** plan is the only plan supported. This option is selected automatically.
+ - You can use the [usage and cost estimator]({{< ref "/f5ads/google/billing/usage-and-cost-estimator/" >}}) to calculate the cost of your deployment
+ based on your expected usage.
+1. Select the billing account you want to use for this deployment.
+1. Agree to the terms of service and privacy policy.
+1. Select **Subscribe** and a message will confirm that your order request has been sent to F5, Inc.
+ - Once F5 Application Delivery Service receives your order request, it will be automatically approved.
+ - This approval process may take several seconds to complete in the background.
+1. Next, select **Sign up with F5, Inc.** to proceed.
+ - In the **Welcome to F5 ADS for Google Cloud** window, select **Close Window** to return to the Google Cloud Console.
+1. You can now log into the F5 ADS for Google Cloud console by selecting **Manage on provider** from the Google Cloud Marketplace.
+
+## What's next
+
+[Create a Deployment]({{< ref "/f5ads/google/deploy/create-deployment/deploy-console.md" >}})
diff --git a/content/f5ads/google/deploy/ssl-tls-certificates/_index.md b/content/f5ads/google/deploy/ssl-tls-certificates/_index.md
new file mode 100644
index 0000000000..9997b03dc3
--- /dev/null
+++ b/content/f5ads/google/deploy/ssl-tls-certificates/_index.md
@@ -0,0 +1,6 @@
+---
+title: Add SSL-TLS certificates
+weight: 400
+url: /f5ads/google/deploy/ssl-tls-certificates/
+canonical: /f5ads/google/deploy/ssl-tls-certificates/
+---
diff --git a/content/f5ads/google/deploy/ssl-tls-certificates/overview.md b/content/f5ads/google/deploy/ssl-tls-certificates/overview.md
new file mode 100644
index 0000000000..116c51a886
--- /dev/null
+++ b/content/f5ads/google/deploy/ssl-tls-certificates/overview.md
@@ -0,0 +1,40 @@
+---
+title: Overview
+weight: 50
+toc: true
+url: /f5ads/google/deploy/ssl-tls-certificates/overview/
+canonical: /f5ads/google/deploy/ssl-tls-certificates/overview/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+Use F5 Application Delivery Service for Google Cloud to secure traffic by adding SSL/TLS certificates to a deployment.
+
+## Supported certificate types and formats
+
+NGINX supports the following certificate formats:
+
+- PEM format certificates.
+
+You can upload these certificates as text, as files, or as secrets from [Secret Manager](https://docs.cloud.google.com/secret-manager/docs/overview).
+
+Encrypt your certificates, keys, and PEM files using one of these standards:
+
+- RSA
+- ECC/ECDSA
+
+## Add SSL/TLS certificates
+
+F5 Application Delivery Service supports two ways to manage your certificates and keys securely:
+
+**F5 ADS console**: Manage certificates alongside the NGINX configurations that reference them. See [Add certificates using the F5 ADS Console]({{< ref "/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md" >}}).
+
+**Google Secret Manager**: Fetch secrets directly from [Secret Manager](https://docs.cloud.google.com/secret-manager/docs/overview), keeping credentials within Google Cloud. See [Add certificates from Secret Manager]({{< ref "/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md" >}}).
+
+## Certificate rotation
+
+F5 Application Delivery Service supports automatic and manual rotation for Secret Manager certificates:
+
+**Automatic rotation**: Let F5 Application Delivery Service pick up new certificate versions automatically with no configuration changes needed. See [Rotate a Secret Manager certificate (automatic)]({{< ref "/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md#rotate-a-secret-manager-certificate-automatic" >}}).
+
+**Manual rotation**: When you need to update certificates immediately, use **Reapply Configuration** in the console to refetch secrets right away. See [Rotate a Secret Manager certificate (manual)]({{< ref "/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md#rotate-a-secret-manager-certificate-manual" >}}).
diff --git a/content/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md b/content/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
new file mode 100644
index 0000000000..8265cf90dc
--- /dev/null
+++ b/content/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
@@ -0,0 +1,15 @@
+---
+title: Add certificates using the Console
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console/
+canonical: /f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+contentSource: nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
+---
+
+## What's next
+
+[Upload an NGINX Configuration]({{< ref "/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md b/content/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md
new file mode 100644
index 0000000000..d5bdc71c8f
--- /dev/null
+++ b/content/f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md
@@ -0,0 +1,129 @@
+---
+title: Add certificates from Secret Manager
+weight: 75
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager/
+canonical: /f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+F5 Application Delivery Service for Google Cloud can fetch secrets directly from [Secret Manager](https://docs.cloud.google.com/secret-manager/docs/overview) to use as certificates and keys in your NGINX configuration, ensuring your credentials remain securely within Google Cloud.
+
+## Prerequisites
+
+If you haven't already done so, complete the following prerequisites:
+
+- Enable the [Secret Manager API](https://docs.cloud.google.com/secret-manager/docs/configuring-secret-manager#enable-the-secret-manager-api).
+- [Create an F5 Application Delivery Service deployment]({{< ref "/f5ads/google/deploy/create-deployment/deploy-console.md" >}}).
+- Configure Workload Identity Federation (WIF). See [the documentation on setting up WIF]({{< ref "/f5ads/google/deploy/access-management.md#configure-wif" >}}) for exact steps.
+ - [Grant access to the WIF principal]({{< ref "/f5ads/google/deploy/access-management.md#grant-access-to-the-wif-principal-with-your-desired-roles" >}}) with the **Secret Manager Secret Accessor** role.
+
+## Add an SSL/TLS certificate to Secret Manager
+
+To add an SSL/TLS certificate and key as a secret to Secret Manager,
+
+1. Make sure your certificate and key file(s) are in one of the [accepted formats]({{< ref "/f5ads/google/deploy/ssl-tls-certificates/overview.md#supported-certificate-types-and-formats" >}}).
+1. Follow Google's [instructions to upload your certificate and key file(s) to Secret Manager](https://docs.cloud.google.com/secret-manager/docs/creating-and-accessing-secrets#console_1).
+
+{{< call-out class="note" title="Note" >}}
+
+There are many ways to manage your SSL/TLS certificates and keys. For example, you can include the PEM certificate data in the same secret as your private key. The ssl_certificate directive supports a single file containing multiple certificates and a key. See NGINX's [Configuring HTTPS servers](https://nginx.org/en/docs/http/configuring_https_servers.html) guide for more details.
+
+{{< /call-out >}}
+
+## Use a Secret Manager certificate in an NGINX configuration
+
+To add your Secret Manager certificate and key to an NGINX configuration in the F5 ADS console,
+
+1. Select **Configurations** in the left menu.
+2. Select the ellipsis (three dots) next to the configuration you want to edit, and select **Edit**.
+3. Select {{< icon "plus">}} **Add File**.
+4. Select **Cloud Provider Secret** as the type of file you want to add.
+5. Select **Google Secret Manager** as the **Cloud Secret Manager**.
+6. Provide the required information:
+ {{< table >}}
+
+ | Field | Description | Note |
+ |---------------------------- | ---------------------------- | ---- |
+ | Google Secret ID | The resource name of the secret in Secret Manager | The resource name must match the format `projects/$PROJECT_ID/secrets/$SECRET_ID/versions/$VERSION`, where `$VERSION` can be a specific version ID (for example, `3`), a custom alias, or the special version ID `latest`. |
+ | File Path | The secret will be written to this file path, so it can be used with NGINX directives such as `ssl_certificate` or `ssl_certificate_key` in your NGINX configuration. | The path must be unique within the configuration. See the [NGINX Filesystem Restrictions table]({{< ref "/f5ads/google/deploy/nginx-configuration/configuration-rules.md#nginx-filesystem-restrictions" >}}) for the allowed directories the file can be written to. |
+
+ {{< /table >}}
+
+{{< call-out "tip" "Enable automatic rotation with latest" >}}
+If you set `$VERSION` to `latest`, F5 Application Delivery Service automatically picks up any new secret version you add to Secret Manager without a configuration change. F5 Application Delivery Service applies new versions within four hours. See [Rotate a Secret Manager certificate (automatic)](#rotate-a-secret-manager-certificate-automatic) for details.
+{{< /call-out >}}
+
+7. Update the NGINX configuration to reference the certificate you just added by the path value.
+8. Select **Add**, **Next**, and then **Save** to save your changes.
+
+## Update your F5 Application Delivery Service deployment's NGINX configuration
+
+Before updating your F5 Application Delivery Service deployment to use your new NGINX configuration, make sure your deployment already has a [workload identity pool provider set up]({{< ref "/f5ads/google/deploy/access-management.md#configure-wif" >}}) with the **Secret Manager Secret Accessor** role granted, so it can fetch certificates. Then, in the F5 ADS console:
+
+1. Select **Deployments**.
+1. Select the deployment you want to edit.
+1. In the **Configuration Info** panel, select **Edit**.
+1. Select the configuration and configuration version created in the last section.
+1. Select **Update Configuration**.
+
+{{< call-out class="note" title="Note" >}}
+
+Configurations with Google Secret Manager secrets can only be added to Google deployments.
+
+{{< /call-out >}}
+
+## Rotate a Secret Manager certificate (automatic)
+
+If you set the version ID of your secret to `latest`, F5 Application Delivery Service fetches the latest secret version. When you [add a new secret version in Secret Manager](https://docs.cloud.google.com/secret-manager/docs/add-secret-version#add-a-secret-version), F5 Application Delivery Service automatically picks up that version within four hours.
+
+If you set the version ID of your secret to a custom alias, F5 Application Delivery Service fetches the secret version the alias points to. When you [update the alias to point to a different version in Secret Manager](https://docs.cloud.google.com/secret-manager/docs/assign-alias-to-secret-version), F5 Application Delivery Service automatically picks up that version within four hours.
+
+No configuration changes are required in either case. To confirm your deployment is using an updated certificate, check the **Certificates** list for the new serial number or inspect the certificate at your deployment's endpoint.
+
+## Rotate a Secret Manager certificate (manual)
+
+To immediately refetch secrets without editing your NGINX configuration, use **Reapply Configuration**. This is useful in the following scenarios:
+
+- **New secret version**: You've uploaded a new certificate and want F5 Application Delivery Service to use it right away.
+- **WIF or permissions fix**: You've updated a WIF provider or granted Secret Manager permissions and want F5 Application Delivery Service to retry immediately.
+
+To reapply your configuration:
+
+1. In the F5 ADS console, go to your deployment.
+2. Select **Reapply Configuration** in the **Configuration Info** panel.
+
+F5 Application Delivery Service reapplies your current configuration version and immediately refetches all referenced secrets.
+
+## Monitor secret fetch events
+
+F5 Application Delivery Service generates an event each time it fetches or fails to fetch a secret from Secret Manager. Use these events to track successful rotations and diagnose access failures.
+
+### Event types
+
+{{< table >}}
+| Event type | Description |
+|---|---|
+| Successful Secret Fetch from Google | The secret was fetched from Secret Manager and applied to NGINX. |
+| Failed Secret Fetch from Google | F5 Application Delivery Service couldn't fetch the secret. The event message includes the error details. |
+{{< /table >}}
+
+### View events in the console
+
+- Select **Overview** in the left menu, then select **Events**. To narrow results to a specific deployment, filter by its object ID using the controls at the top of the page.
+- For a summary of recent events for a specific deployment, select **Deployments**, select the deployment, and look for the **Recent Events** card. Select **See Events Details** to go to the full Events page pre-filtered for that deployment.
+
+### Common failure messages and remediation
+
+{{< table >}}
+| Message | Likely cause | Remediation |
+|---|---|---|
+| `Failed to fetch secret ... PermissionDenied: Permission 'secretmanager.versions.access' denied` | The Workload Identity Federation principal doesn't have the required IAM role on the secret. | Verify the WIF principal has the Secret Manager Secret Accessor role on the project or secret. |
+| `Failed to fetch secret ... NotFound: Secret [...] has no alias [latest]` | No versions exist for the referenced secret, or the specified version alias or number doesn't exist. | Confirm the secret has at least one enabled version and that the resource name in your configuration uses a valid version or alias. |
+{{< /table >}}
+
+## What's next
+
+[Upload an NGINX Configuration]({{< ref "/f5ads/google/deploy/nginx-configuration/nginx-configuration-console.md" >}})
\ No newline at end of file
diff --git a/content/f5ads/google/glossary.md b/content/f5ads/google/glossary.md
new file mode 100644
index 0000000000..2a467021fd
--- /dev/null
+++ b/content/f5ads/google/glossary.md
@@ -0,0 +1,11 @@
+---
+title: Glossary
+weight: 900
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/glossary/
+canonical: /f5ads/google/glossary/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for Google Cloud
+contentSource: nginxaas/overview/glossary.md
+---
diff --git a/content/f5ads/google/known-issues.md b/content/f5ads/google/known-issues.md
new file mode 100644
index 0000000000..5d7f7196a6
--- /dev/null
+++ b/content/f5ads/google/known-issues.md
@@ -0,0 +1,16 @@
+---
+title: "Known issues"
+weight: 1100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/known-issues/
+canonical: /f5ads/google/known-issues/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+List of known issues in the latest release of F5 Application Delivery Service for Google Cloud.
+
+_There are currently no known issues._
+
+{{< call-out class="note" >}} You may also want to be familiar with the documented [F5 Application Delivery Service limitations]({{< ref "/f5ads/google/overview.md#current-limitations" >}}). {{< /call-out >}}
\ No newline at end of file
diff --git a/content/f5ads/google/monitoring/_index.md b/content/f5ads/google/monitoring/_index.md
new file mode 100644
index 0000000000..d88f055b3e
--- /dev/null
+++ b/content/f5ads/google/monitoring/_index.md
@@ -0,0 +1,6 @@
+---
+title: Logging and monitoring
+weight: 300
+url: /f5ads/google/monitoring/
+canonical: /f5ads/google/monitoring/
+---
diff --git a/content/f5ads/google/monitoring/enable-monitoring.md b/content/f5ads/google/monitoring/enable-monitoring.md
new file mode 100644
index 0000000000..96b07dd58d
--- /dev/null
+++ b/content/f5ads/google/monitoring/enable-monitoring.md
@@ -0,0 +1,464 @@
+---
+title: Enable monitoring
+weight: 200
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/monitoring/enable-monitoring/
+canonical: /f5ads/google/monitoring/enable-monitoring/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+Monitoring your application's performance is crucial for maintaining its reliability and efficiency. F5 Application Delivery Service for Google Cloud seamlessly integrates with Google Cloud services, allowing you to collect, correlate, and analyze metrics for a thorough understanding of your application's health and behavior.
+
+## Prerequisites
+
+- Enable the [Cloud Monitoring API](https://cloud.google.com/monitoring/api/enable-api).
+- Configure Workload Identity Federation (WIF). See [our documentation on setting up WIF]({{< ref "/f5ads/google/deploy/access-management.md#configure-wif" >}}) for exact steps.
+- Grant your principal access to one of the following IAM roles depending on your needs:
+ - `roles/monitoring.viewer` — View metrics in Cloud Monitoring (read-only access)
+ - `roles/monitoring.editor` — View metrics and create or import dashboards
+
+ See [Google's documentation on controlling access to Cloud Monitoring with IAM](https://cloud.google.com/monitoring/access-control) for more information.
+- Configure the [`status_zone`](https://nginx.org/en/docs/http/ngx_http_status_module.html#status_zone) directive in your `server` blocks and the [`zone`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone) directive in your `upstream` blocks to collect HTTP request and response statistics, stream connection metrics, upstream statistics, and memory statistics. See the [Metrics Catalog]({{< ref "/f5ads/google/monitoring/metrics-catalog.md" >}}) for configuration requirements.
+
+## Export F5 Application Delivery Service metrics to a Google Cloud Project
+
+To enable sending metrics to your desired Google Cloud project, you must specify the project ID when creating or updating a deployment. To create a deployment, see [our documentation on creating an F5 Application Delivery Service deployment]({{< ref "/f5ads/google/deploy/create-deployment/" >}}) for a step-by-step guide. To update the deployment, in the F5 ADS console,
+
+1. On the navigation menu, select **Deployments**.
+1. Select the deployment you want to update and select **Edit**.
+1. Enter the project you want metrics to be sent to under **Metric Project ID**.
+1. Select **Update**.
+
+## View F5 Application Delivery Service metrics in Google Cloud Monitoring
+
+See the [Metrics Catalog]({{< ref "/f5ads/google/monitoring/metrics-catalog.md" >}}) for a full list of metrics F5 Application Delivery Service provides.
+
+### Google Cloud Console's Metrics Explorer
+
+Log in to your [Google Cloud Console](https://console.cloud.google.com/),
+
+1. Go to your metric project.
+2. Search for "Metrics Explorer".
+
+Refer to the [Google's Metrics Explorer](https://cloud.google.com/monitoring/charts/metrics-explorer) documentation to learn how you can create charts and queries.
+
+### Import a pre-built dashboard
+
+To help you quickly visualize important metrics and logs from your F5 Application Delivery Service deployments, you can import a pre-configured dashboard into Google Cloud Monitoring. The dashboard displays key metrics such as request and connection rates, response status codes, upstream health, and access and error logs.
+
+To import the dashboard:
+
+1. Copy the dashboard JSON configuration {{< details summary="Show dashboard JSON" >}}
+
+```json
+{
+ "displayName": "F5 ADS for Google Cloud",
+ "dashboardFilters": [
+ {
+ "filterType": "METRIC_LABEL",
+ "labelKey": "deployment_name",
+ "templateVariable": "deployment_name",
+ "valueType": "STRING_ARRAY"
+ }
+ ],
+ "description": "",
+ "labels": {},
+ "mosaicLayout": {
+ "columns": 48,
+ "tiles": [
+ {
+ "height": 16,
+ "width": 29,
+ "widget": {
+ "title": "Request + Connection rates",
+ "id": "",
+ "xyChart": {
+ "chartOptions": {
+ "displayHorizontal": false,
+ "mode": "COLOR",
+ "showLegend": false
+ },
+ "dataSets": [
+ {
+ "breakdowns": [],
+ "dimensions": [],
+ "legendTemplate": "Connections/second",
+ "measures": [],
+ "minAlignmentPeriod": "60s",
+ "plotType": "LINE",
+ "sort": [],
+ "targetAxis": "Y2",
+ "timeSeriesQuery": {
+ "outputFullDuration": false,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [],
+ "perSeriesAligner": "ALIGN_RATE"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.http.connections\" resource.type=\"generic_node\" metric.label.\"nginx_connections_outcome\"=\"ACCEPTED\" ${deployment_name}"
+ },
+ "unitOverride": ""
+ }
+ },
+ {
+ "breakdowns": [],
+ "dimensions": [],
+ "legendTemplate": "Requests/second",
+ "measures": [],
+ "minAlignmentPeriod": "60s",
+ "plotType": "LINE",
+ "sort": [],
+ "targetAxis": "Y1",
+ "timeSeriesQuery": {
+ "outputFullDuration": false,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [],
+ "perSeriesAligner": "ALIGN_RATE"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.http.requests\" resource.type=\"generic_node\" ${deployment_name}"
+ },
+ "unitOverride": ""
+ }
+ }
+ ],
+ "thresholds": [],
+ "y2Axis": {
+ "label": "Conn/s",
+ "scale": "LINEAR"
+ },
+ "yAxis": {
+ "label": "Req/s",
+ "scale": "LINEAR"
+ }
+ }
+ }
+ },
+ {
+ "xPos": 29,
+ "height": 16,
+ "width": 18,
+ "widget": {
+ "title": "Current Connections",
+ "id": "",
+ "scorecard": {
+ "breakdowns": [],
+ "dimensions": [],
+ "measures": [],
+ "sparkChartView": {
+ "sparkChartType": "SPARK_LINE"
+ },
+ "thresholds": [],
+ "timeSeriesQuery": {
+ "outputFullDuration": false,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [
+ "metric.label.\"nginx_connections_outcome\""
+ ],
+ "perSeriesAligner": "ALIGN_MEAN"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.http.connection.count\" resource.type=\"generic_node\" ${deployment_name}"
+ },
+ "unitOverride": ""
+ }
+ }
+ }
+ },
+ {
+ "yPos": 16,
+ "height": 14,
+ "width": 29,
+ "widget": {
+ "title": "Response rate by Zone + Status",
+ "id": "",
+ "xyChart": {
+ "chartOptions": {
+ "displayHorizontal": false,
+ "mode": "COLOR",
+ "showLegend": false
+ },
+ "dataSets": [
+ {
+ "breakdowns": [],
+ "dimensions": [],
+ "legendTemplate": "",
+ "measures": [],
+ "minAlignmentPeriod": "60s",
+ "plotType": "LINE",
+ "sort": [],
+ "targetAxis": "Y1",
+ "timeSeriesQuery": {
+ "outputFullDuration": false,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [
+ "metric.label.\"nginx_zone_name\"",
+ "metric.label.\"nginx_status_range\""
+ ],
+ "perSeriesAligner": "ALIGN_RATE"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.http.response.status\" resource.type=\"generic_node\" ${deployment_name}"
+ },
+ "unitOverride": ""
+ }
+ }
+ ],
+ "thresholds": [],
+ "yAxis": {
+ "label": "",
+ "scale": "LINEAR"
+ }
+ }
+ }
+ },
+ {
+ "yPos": 16,
+ "xPos": 29,
+ "height": 9,
+ "width": 9,
+ "widget": {
+ "title": "Current Requests",
+ "id": "",
+ "scorecard": {
+ "breakdowns": [],
+ "dimensions": [],
+ "measures": [],
+ "sparkChartView": {
+ "sparkChartType": "SPARK_LINE"
+ },
+ "thresholds": [],
+ "timeSeriesQuery": {
+ "outputFullDuration": false,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [],
+ "perSeriesAligner": "ALIGN_MEAN"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.http.request.processing.count\" resource.type=\"generic_node\" metric.label.\"nginx_zone_name\"=monitoring.regex.full_match(\"..*\") ${deployment_name}",
+ "pickTimeSeriesFilter": {
+ "direction": "TOP",
+ "numTimeSeries": 12,
+ "rankingMethod": "METHOD_MEAN"
+ }
+ },
+ "unitOverride": ""
+ }
+ }
+ }
+ },
+ {
+ "yPos": 16,
+ "xPos": 38,
+ "height": 9,
+ "width": 9,
+ "widget": {
+ "title": "Config updates",
+ "id": "",
+ "scorecard": {
+ "breakdowns": [],
+ "dimensions": [],
+ "measures": [],
+ "sparkChartView": {
+ "sparkChartType": "SPARK_LINE"
+ },
+ "thresholds": [],
+ "timeSeriesQuery": {
+ "outputFullDuration": true,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [
+ "metric.label.\"deployment_name\""
+ ],
+ "perSeriesAligner": "ALIGN_DELTA"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.config.reloads\" resource.type=\"generic_node\" ${deployment_name}",
+ "pickTimeSeriesFilter": {
+ "direction": "TOP",
+ "numTimeSeries": 12,
+ "rankingMethod": "METHOD_MEAN"
+ }
+ },
+ "unitOverride": ""
+ }
+ }
+ }
+ },
+ {
+ "yPos": 25,
+ "xPos": 29,
+ "height": 12,
+ "width": 18,
+ "widget": {
+ "title": "Upstream Status",
+ "id": "",
+ "xyChart": {
+ "chartOptions": {
+ "displayHorizontal": false,
+ "mode": "COLOR",
+ "showLegend": false
+ },
+ "dataSets": [
+ {
+ "breakdowns": [],
+ "dimensions": [],
+ "legendTemplate": "",
+ "measures": [],
+ "minAlignmentPeriod": "60s",
+ "plotType": "STACKED_AREA",
+ "sort": [],
+ "targetAxis": "Y1",
+ "timeSeriesQuery": {
+ "outputFullDuration": false,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [
+ "metric.label.\"nginx_peer_state\""
+ ],
+ "perSeriesAligner": "ALIGN_MEAN"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.http.upstream.peer.count\" resource.type=\"generic_node\" ${deployment_name}",
+ "pickTimeSeriesFilter": {
+ "direction": "TOP",
+ "numTimeSeries": 12,
+ "rankingMethod": "METHOD_MAX"
+ }
+ },
+ "unitOverride": ""
+ }
+ }
+ ],
+ "thresholds": [],
+ "yAxis": {
+ "label": "",
+ "scale": "LINEAR"
+ }
+ }
+ }
+ },
+ {
+ "yPos": 30,
+ "height": 14,
+ "width": 29,
+ "widget": {
+ "title": "Upstream Response rate by Zone + Status",
+ "id": "",
+ "xyChart": {
+ "chartOptions": {
+ "displayHorizontal": false,
+ "mode": "COLOR",
+ "showLegend": false
+ },
+ "dataSets": [
+ {
+ "breakdowns": [],
+ "dimensions": [],
+ "legendTemplate": "",
+ "measures": [],
+ "minAlignmentPeriod": "60s",
+ "plotType": "LINE",
+ "sort": [],
+ "targetAxis": "Y1",
+ "timeSeriesQuery": {
+ "outputFullDuration": false,
+ "timeSeriesFilter": {
+ "aggregation": {
+ "alignmentPeriod": "60s",
+ "crossSeriesReducer": "REDUCE_SUM",
+ "groupByFields": [
+ "metric.label.\"nginx_zone_name\"",
+ "metric.label.\"nginx_status_range\""
+ ],
+ "perSeriesAligner": "ALIGN_RATE"
+ },
+ "filter": "metric.type=\"workload.googleapis.com/nginx.http.upstream.peer.responses\" resource.type=\"generic_node\" ${deployment_name}"
+ },
+ "unitOverride": ""
+ }
+ }
+ ],
+ "thresholds": [],
+ "yAxis": {
+ "label": "",
+ "scale": "LINEAR"
+ }
+ }
+ }
+ },
+ {
+ "yPos": 44,
+ "height": 16,
+ "width": 48,
+ "widget": {
+ "title": "Error Logs",
+ "logsPanel": {
+ "filter": "resource.type=\"generic_node\"\nlabels.\"log.file.name\"=\"error.log\"\nlabels.\"log.file.path\"=~\"/var/log/nginx/.*\\.log\"",
+ "resourceNames": []
+ }
+ }
+ },
+ {
+ "yPos": 60,
+ "height": 16,
+ "width": 48,
+ "widget": {
+ "title": "Access Logs",
+ "logsPanel": {
+ "filter": "resource.type=\"generic_node\"\nlabels.\"log.file.name\"=\"access.log\"\nlabels.\"log.file.path\"=~\"/var/log/nginx/.*\\.log\"",
+ "resourceNames": []
+ }
+ }
+ }
+ ]
+ }
+}
+```
+
+{{< /details >}}
+
+2. Go to the [Google Cloud Console](https://console.cloud.google.com/).
+3. Go to your metrics project.
+4. Search for **Monitoring** and select **Dashboards**.
+5. Select **Create Custom Dashboard**.
+6. Select the settings icon (⚙), and select **JSON** to switch to JSON editor mode.
+7. Replace the default JSON with the dashboard configuration you copied.
+8. Select **Apply Changes**.
+
+{{< call-out class="note" >}}The dashboard includes a **deployment_name** filter. Use this filter to view metrics for a specific F5 Application Delivery Service deployment or select multiple deployments to compare their performance.{{< /call-out >}}
+
+## Disable exporting F5 Application Delivery Service metrics to a Google Cloud project
+
+To disable sending metrics to your Google Cloud project, update your F5 Application Delivery Service deployment to remove the reference to your project ID. To update the deployment, in the F5 ADS console,
+
+1. On the navigation menu, select **Deployments**.
+1. Select the deployment you want to update and select **Edit**.
+1. Remove the project ID under **Metric Project ID**.
+1. Select **Update**.
+
+## Troubleshooting
+
+If Google Cloud Monitoring is not showing any metrics, check for **Failed Metric Export to Google** events from your F5 Application Delivery Service deployment.
+
+In the F5 ADS console:
+
+1. On the navigation menu, select **Events**.
+1. Select **Add Filter**.
+1. Select **Affected Object** and the name of your F5 Application Delivery Service deployment.
+
+Events are deleted after 14 days.
diff --git a/content/f5ads/google/monitoring/enable-nginx-logs.md b/content/f5ads/google/monitoring/enable-nginx-logs.md
new file mode 100644
index 0000000000..c4b1cc2f85
--- /dev/null
+++ b/content/f5ads/google/monitoring/enable-nginx-logs.md
@@ -0,0 +1,78 @@
+---
+title: Enable NGINX logs
+weight: 350
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/monitoring/enable-nginx-logs/
+canonical: /f5ads/google/monitoring/enable-nginx-logs/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+---
+
+F5 Application Delivery Service for Google Cloud supports integrating with Google Cloud services to collect NGINX error and access logs, and F5 WAF for NGINX security logs.
+
+## Prerequisites
+
+- Enable the [Cloud Logging API](https://docs.cloud.google.com/logging/docs/api/enable-api).
+- Configure Workload Identity Federation (WIF). See [our documentation on setting up WIF]({{< ref "/f5ads/google/deploy/access-management.md#configure-wif" >}}) for exact steps.
+- Grant a project-level role or grant your principal access to the `roles/logging.viewer` role. See [Google's documentation on controlling access to Cloud Logging with IAM](https://cloud.google.com/logging/docs/access-control).
+
+## Setting up error logs
+
+{{< include "/nginxaas/logging-config-error-logs.md" >}}
+
+## Setting up access logs
+
+{{< include "/nginxaas/logging-config-access-logs.md" >}}
+
+## Setting up F5 WAF for NGINX security logs
+
+{{< include "/nginxaas/logging-config-security-logs.md" >}}
+
+## Export NGINX logs to a Google Cloud Project
+
+To enable sending logs to your desired Google Cloud project, you must specify the project ID when creating or updating a deployment. To create a deployment, see [our documentation on creating an F5 Application Delivery Service deployment]({{< ref "/f5ads/google/deploy/create-deployment/" >}}) for a step-by-step guide. To update the deployment, in the F5 ADS console,
+
+1. On the left menu, select **Deployments**.
+1. Select the deployment you want to update and select **Edit**.
+1. Enter the project you want metrics to be sent to under **Log Project ID**.
+1. Select **Update**.
+
+## View NGINX logs in Google Cloud Logging
+
+In the [Google Cloud Console](https://console.cloud.google.com/),
+
+1. Go to your log project.
+2. Search for "Logs Explorer".
+
+Refer to the [Google's Logs Explorer](https://cloud.google.com/logging/docs/view/logs-explorer-interface) documentation to learn how you can create queries.
+
+NGINX access and error logs sent to Cloud Logging will have the log name `nginx-logs` which can be used to filter NGINX logs from the rest of your project logs. You can also filter based on log labels, for example,
+
+* `filename`
+* `organization_object_id`
+* `deployment_location`
+* `deployment_name`
+* `deployment_object_id`
+* `namespace`
+
+## Disable Exporting NGINX logs to a Google Cloud Project
+
+To disable sending logs to your Google Cloud project, update your F5 Application Delivery Service deployment to remove the reference to your project ID. To update the deployment, in the F5 ADS console,
+
+1. On the navigation menu, select **Deployments**.
+1. Select the deployment you want to update and select **Edit**.
+1. Remove the project ID under **Log Project ID**.
+1. Select **Update**.
+
+## Troubleshooting
+
+If Google Cloud Logging is not showing any logs, check for **Failed Log Export to Google** events from your F5 Application Delivery Service deployment.
+
+In the F5 ADS console:
+
+1. On the navigation menu, select **Events**.
+1. Select **Add Filter**.
+1. Select **Affected Object** and the name of your F5 Application Delivery Service deployment.
+
+Events are deleted after 14 days.
diff --git a/content/f5ads/google/monitoring/metrics-catalog.md b/content/f5ads/google/monitoring/metrics-catalog.md
new file mode 100644
index 0000000000..ea32b34168
--- /dev/null
+++ b/content/f5ads/google/monitoring/metrics-catalog.md
@@ -0,0 +1,35 @@
+---
+title: Metrics catalog
+description: "Reference catalog of NGINX metrics exported by F5 Application Delivery Service for Google Cloud deployments."
+weight: 400
+toc: false
+f5-docs: DOCS-000
+url: /f5ads/google/monitoring/metrics-catalog/
+canonical: /f5ads/google/monitoring/metrics-catalog/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-keywords: "NGINXaaS for Google, metrics catalog, Google Cloud monitoring, connections, requests, SSL, cache, memory, upstream, stream"
+f5-summary: >
+ Reference catalog of metrics exported by F5 ADS for Google Cloud.
+ Use this guide to look up metric names, labels, data types, and roll-up scopes for NGINX config, connections, requests, SSL, cache, memory, upstream, and stream statistics.
+f5-audience: operator
+---
+
+## Overview
+
+F5 Application Delivery Service for Google Cloud provides a rich set of metrics that you can use to monitor the health and performance of your F5 Application Delivery Service deployment. This document provides a catalog of the metrics that are available for monitoring F5 ADS for Google Cloud.
+
+The following metrics are reported by F5 ADS for Google Cloud in Google Cloud Monitoring.
+The metrics are categorized by the namespace used in Google Cloud Monitoring. The labels allow you to filter or split your queries in Google Cloud Monitoring providing you with a granular view over the metrics reported.
+
+
+{{< include "/nginxaas/metrics-catalog.md" >}}
+
+
+## References
+
+For more information, see:
+
+- [Enable monitoring]({{< ref "/f5ads/google/monitoring/enable-monitoring.md" >}})
+- [Enable NGINX logs]({{< ref "/f5ads/google/monitoring/enable-nginx-logs.md" >}})
+- [Identity and access management]({{< ref "/f5ads/google/deploy/access-management.md" >}})
diff --git a/content/f5ads/google/overview.md b/content/f5ads/google/overview.md
new file mode 100644
index 0000000000..f8ec85df2d
--- /dev/null
+++ b/content/f5ads/google/overview.md
@@ -0,0 +1,139 @@
+---
+title: Overview and architecture
+description: "Overview of F5 Application Delivery Service for Google Cloud architecture, capabilities, and how it integrates with your Google Cloud environment."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/overview/
+canonical: /f5ads/google/overview/
+f5-content-type: concept
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-keywords: "F5 ADS for Google Cloud, architecture, service frontend, private endpoint, managed public endpoint, upstream network, NGINX Capacity Unit, NCU, geographical controller"
+f5-summary: >
+ NGINX Plus powers F5 Application Delivery Service for Google Cloud, a fully managed, Google Cloud-native SaaS load balancer and application delivery service.
+ This overview covers its architecture, service frontend types, upstream connectivity, and capacity model, so you understand how it fits into your Google Cloud environment before you deploy.
+f5-audience: any
+---
+
+## What is F5 Application Delivery Service for Google Cloud?
+
+F5 Application Delivery Service for Google Cloud (F5 ADS for Google Cloud) is a SaaS offering tightly integrated with Google Cloud and its ecosystem of services. It helps make your applications fast, efficient, and reliable, using advanced traffic management from [NGINX Plus](https://www.nginx.com/products/nginx/) without the operational overhead.
+
+NGINX Plus extends NGINX Open Source with advanced functionality, giving you a complete application delivery solution. F5 ADS handles NGINX Plus license management automatically.
+
+{{}}
+ {{}}
+ Follow these steps to prepare for your F5 ADS deployment
+ {{}}
+ {{}}
+ Step-by-step instructions to deploy F5 ADS using the F5 ADS Console
+ {{}}
+ {{}}
+ Instructions to add SSL/TLS certificates to your F5 ADS deployment using the F5 ADS Console
+ {{}}
+ {{}}
+ Contact F5 support for assistance with F5 ADS for Google Cloud
+ {{}}
+{{}}
+
+## Capabilities
+
+The key capabilities of F5 ADS for Google Cloud are:
+
+- Simplifies onboarding and use of NGINX by providing a fully managed, ready-to-use service, eliminating the need for infrastructure setup or manual upgrades.
+- Lowers operational overhead in running and optimizing NGINX.
+- Simplifies NGINX deployments with fewer moving parts (edge routing is built into the service).
+- Supports migration of existing NGINX configurations to the cloud with minimal effort.
+- Integrates with the Google Cloud ecosystem.
+- Uses consumption-based pricing, so your infrastructure costs align with actual usage through Google Cloud transaction billing.
+
+## F5 ADS for Google Cloud architecture
+
+{{< img src="nginxaas/google/nginxaas-google-cloud-architecture.svg" alt="Architecture diagram showing how F5 ADS integrates with Google Cloud. At the top, inside the Google Cloud IaaS layer, NGINX Plus is managed using UI, API, and Terraform, alongside F5 ADS. Admins connect to this layer. Below, in the Customer VPC, end users connect through Edge Routing to multiple App Servers (labeled App Server 1). NGINX Plus directs traffic to these app servers. The Customer VPC also connects with Google Cloud services such as Secret Manager, Monitoring, and other services. Green arrows show traffic flow from end users through edge routing and NGINX Plus to app servers, while blue arrows show admin access." >}}
+
+- Use the F5 ADS Console to create, update, and delete NGINX configurations, certificates, and F5 ADS deployments.
+- F5 ADS automatically adapts to application traffic demands through autoscaling.
+- Each F5 ADS deployment has dedicated network and compute resources, so there's no risk of noisy neighbor problems or data leakage between deployments.
+- F5 ADS can route traffic to upstream servers in different geographies. See [Known issues]({{< ref "/f5ads/google/known-issues.md" >}}) for networking restrictions.
+- F5 ADS supports [request tracing](https://www.f5.com/company/blog/nginx/application-tracing-nginx-plus).
+- F5 ADS supports HTTP to HTTPS, HTTPS to HTTP, and HTTP to HTTP redirects. You can also create custom rules for redirecting traffic. See [How to Create NGINX Rewrite Rules | NGINX](https://blog.nginx.org/blog/creating-nginx-rewrite-rules) for more details.
+
+### Service frontend
+
+The service frontend of an F5 ADS deployment controls how client ingress traffic reaches your deployment. There are two frontend types: managed public endpoint and private endpoint.
+
+#### Managed public endpoint
+
+A managed public endpoint frontend gives clients access over the internet through a public DNS name that F5 ADS creates in its network.
+
+**This frontend type is suitable for:**
+
+- Serving public web applications to end users over the internet
+- Proxying traffic from clients outside Google Cloud
+- Testing F5 ADS configurations before you set up a [private endpoint](#private-endpoint) frontend
+
+Access control for this frontend type uses ACL rules to control traffic to the deployment. If you don't provide ACL rules, F5 ADS blocks all traffic. Each ACL rule includes the following settings:
+
+- **Source prefixes**: A list of CIDR blocks to allow traffic from
+ - Use `0.0.0.0/0` to allow traffic from all source IP addresses
+- **Protocol**: The network protocol to allow
+ - Valid values are **TCP** and **UDP**
+ - Required when you specify a port range
+- **Port range**: A single port or port range to allow traffic from
+ - If you don't specify a port range, F5 ADS accepts traffic on any port
+ - Required when you specify a protocol
+
+#### Private endpoint
+
+A private endpoint frontend gives clients access through your network using Google [Private Service Connect (PSC)](https://cloud.google.com/vpc/docs/private-service-connect). This approach brings the deployment into your client network through an F5 ADS-created service attachment, so application clients can connect directly into your network.
+
+To set up connectivity, create one of the following:
+
+- A [PSC endpoint](https://docs.cloud.google.com/vpc/docs/private-service-connect#endpoints) for internal traffic
+- A [PSC backend](https://cloud.google.com/vpc/docs/private-service-connect#backends) for external traffic
+
+For step-by-step instructions, see [Set up connectivity]({{< ref "/f5ads/google/deploy/create-deployment/deploy-console.md#set-up-connectivity-private-endpoint-only" >}}).
+
+**This frontend type is suitable for:**
+
+- Situations where you need greater control over traffic to the F5 ADS deployment
+- Environments where all clients exist within your Google Cloud network
+- Internal services that shouldn't be exposed to the internet
+
+Access control for this frontend type uses a service attachment accept list, which restricts which Google project IDs can connect to the deployment. If you don't specify any project IDs, F5 ADS accepts traffic from all projects.
+
+### Upstream network
+
+F5 ADS uses Google [Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect) (PSC) to connect securely to your applications.
+
+A [PSC interface](https://cloud.google.com/vpc/docs/private-service-connect#interfaces) brings the deployment into your application network and supports secure connectivity to your applications. By using your own networking resources, you control traffic flow and can apply your preferred security controls.
+
+To connect the F5 ADS PSC interface to your network, create a [network attachment](https://cloud.google.com/vpc/docs/about-network-attachments). For steps, see [Create a network attachment]({{< ref "/f5ads/google/deploy/create-deployment/deploy-console.md#create-a-network-attachment" >}}).
+
+### NGINX Capacity Unit (NCU)
+
+An NGINX Capacity Unit (NCU) quantifies the capacity of an NGINX deployment based on its underlying compute resources. With this abstraction, you can specify capacity in NCUs without considering hardware differences between regions.
+You can reserve a minimum capacity for your deployment. The deployment automatically scales up or down based on traffic demand and makes sure it never drops below the reserved minimum.
+
+### Geographical controllers
+
+F5 ADS for Google Cloud operates globally, and regional controllers handle management requests. A geographical controller (GC) is a control plane that serves users within a defined geographic boundary. It addresses data residency and localization requirements. For example, a US geographical controller serves customers in the United States. F5 ADS currently operates in three geographies: US, EU, and Asia Pacific (APAC).
+
+### Supported regions
+
+{{< include "/nginxaas/google/supported-regions.md" >}}
+
+## Current limitations
+
+F5 is committed to enhancing F5 ADS for Google Cloud and welcomes your feedback to help shape its future. If there are features you'd like to see prioritized, submit a [support ticket]({{< ref "/f5ads/google/support.md" >}}) to share your suggestions.
+
+Be aware of the following constraints when using F5 ADS for Google Cloud:
+
+- F5 ADS is supported in a limited number of regions. F5 is continually working to expand support across additional regions. See [Supported regions](#supported-regions).
+- User Role-Based Access Control (RBAC) isn't supported yet. F5 plans to add this in a future release to improve access control for multi-user environments.
+- F5 ADS deployments on Google Cloud don't support IPv6 traffic.
+- F5 ADS deployments on Google Cloud support UDP traffic only when using the **Managed Public Endpoint** frontend service.
+
+## What's next
+
+To get started, check the [F5 ADS for Google Cloud prerequisites]({{< ref "/f5ads/google/deploy/prerequisites.md" >}}).
diff --git a/content/f5ads/google/quickstart/security-controls/_index.md b/content/f5ads/google/quickstart/security-controls/_index.md
new file mode 100644
index 0000000000..cb5c44a22a
--- /dev/null
+++ b/content/f5ads/google/quickstart/security-controls/_index.md
@@ -0,0 +1,8 @@
+---
+title: Security controls
+weight: 200
+url: /f5ads/google/quickstart/security-controls/
+canonical: /f5ads/google/quickstart/security-controls/
+toc: false
+draft: true
+---
\ No newline at end of file
diff --git a/content/f5ads/google/support.md b/content/f5ads/google/support.md
new file mode 100644
index 0000000000..a261a97db5
--- /dev/null
+++ b/content/f5ads/google/support.md
@@ -0,0 +1,11 @@
+---
+title: Support
+weight: 9999
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/google/support/
+canonical: /f5ads/google/support/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service for Google Cloud
+contentSource: nginxaas/support/
+---
diff --git a/content/f5ads/overview/_index.md b/content/f5ads/overview/_index.md
new file mode 100644
index 0000000000..a79c80a397
--- /dev/null
+++ b/content/f5ads/overview/_index.md
@@ -0,0 +1,10 @@
+---
+title: Overview
+description:
+weight: 100
+url: /f5ads/overview
+canonical: /f5ads/overview
+cascade:
+ contentVars:
+ product: ADS
+---
diff --git a/content/f5ads/overview/about.md b/content/f5ads/overview/about.md
new file mode 100644
index 0000000000..b99c18d5c6
--- /dev/null
+++ b/content/f5ads/overview/about.md
@@ -0,0 +1,41 @@
+---
+title: About
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/about/
+canonical: /f5ads/overview/about/
+f5-content-type: concept
+f5-product: F5 Application Delivery Service
+---
+
+## What is F5 Application Delivery Service?
+
+F5 Application Delivery Service (F5 ADS) is a service offering that is tightly integrated into your cloud platform and its ecosystem, making applications fast, efficient, and reliable with full lifecycle management of advanced NGINX traffic services.
+
+F5 ADS is powered by [NGINX Plus](https://www.nginx.com/products/nginx/), which extends NGINX Open Source with advanced functionality and provides customers with a complete application delivery solution. F5 ADS handles the NGINX Plus license management automatically.
+
+## Capabilities
+
+The key capabilities of F5 ADS are:
+
+- Simplifies onboarding by providing a fully managed, ready-to-use NGINX service, eliminating the need for infrastructure setup, manual upgrades, or operational overhead.
+- Lowers operational overhead in running and optimizing NGINX.
+- Simplifies NGINX deployments with fewer moving parts (edge routing is built into the service).
+- Supports migration of existing NGINX configurations to the cloud with minimal effort.
+- Integrates with your cloud provider's ecosystem.
+- F5 ADS keeps your SSL private keys and other secrets secure and easy to manage.
+- Adopts a consumption-based pricing model to align infrastructure costs to actual usage.
+- F5 ADS is used to create, update, and delete NGINX configurations, certificates, and deployments.
+- F5 ADS automatically adapts to application traffic demands through autoscaling.
+- Each F5 ADS deployment has dedicated network and compute resources. There is no possibility of noisy neighbor problems or data leakage between deployments.
+- Makes collecting and reviewing access logs and NGINX metrics painless and accessible.
+- F5 ADS supports request tracing. See the [Application Performance Management with NGINX Variables](https://www.f5.com/company/blog/nginx/application-tracing-nginx-plus) blog to learn more about tracing.
+- Supports HTTP to HTTPS, HTTPS to HTTP, and HTTP to HTTP redirects. F5 ADS also provides the ability to create new rules for redirecting. See [How to Create NGINX Rewrite Rules](https://blog.nginx.org/blog/creating-nginx-rewrite-rules) for more details.
+
+## Availability
+
+F5 ADS is available for use with multiple public cloud providers. See specific documentation for more details:
+
+- [F5 ADS for AWS]({{< ref "/f5ads/aws/overview.md" >}})
+- [NGINXaaS for Google Cloud]({{< ref "/nginxaas/google/overview.md" >}})
diff --git a/content/f5ads/overview/app-protect/_index.md b/content/f5ads/overview/app-protect/_index.md
new file mode 100644
index 0000000000..a2c14466ba
--- /dev/null
+++ b/content/f5ads/overview/app-protect/_index.md
@@ -0,0 +1,6 @@
+---
+title: F5 WAF for NGINX
+weight: 500
+url: /f5ads/overview/app-protect/
+canonical: /f5ads/overview/app-protect/
+---
diff --git a/content/f5ads/overview/app-protect/configure-waf.md b/content/f5ads/overview/app-protect/configure-waf.md
new file mode 100644
index 0000000000..6100a8cb8a
--- /dev/null
+++ b/content/f5ads/overview/app-protect/configure-waf.md
@@ -0,0 +1,93 @@
+---
+title: Configure F5 WAF for NGINX
+description: "Configure F5 WAF for NGINX security features by editing the NGINX configuration file."
+weight: 110
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/app-protect/configure-waf/
+canonical: /f5ads/overview/app-protect/configure-waf/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service
+f5-keywords: "F5 WAF, app protect, security policy, NGINX configuration"
+f5-summary: >
+ This page explains how to configure F5 WAF for NGINX by loading the module and setting the enforcer address, then enabling a security policy.
+ You need this to protect your application from web threats.
+f5-audience: operator
+contentVars:
+ product: ADS
+---
+
+## Overview
+
+This guide explains how to configure the F5 WAF for NGINX security features.
+
+## Configure
+
+To use F5 WAF for NGINX, apply the following changes to the NGINX config file.
+
+1. Load the F5 WAF for NGINX module on the main context:
+
+```nginx
+load_module modules/ngx_http_app_protect_module.so;
+```
+
+2. Set the enforcer address:
+
+```nginx
+app_protect_enforcer_address 127.0.0.1:50000;
+```
+
+{{< call-out class="note" >}} The app_protect_enforcer_address directive is a required directive for F5 WAF for NGINX to work and must match `127.0.0.1:50000`{{< /call-out >}}
+
+3. Enable F5 WAF for NGINX with the `app_protect_enable` directives in the appropriate scope. The `app_protect_enable` directive may be set in the `http`, `server`, and `location` contexts.
+
+It is recommended to have a basic policy enabled in the `http` or `server` context to process malicious requests in a more complete manner.
+
+```nginx
+app_protect_enable on;
+```
+
+4. Configure the pre-defined policy to use with the `app_protect_policy_file` directive (either the `app_protect_default_policy` or `app_protect_strict_policy`).
+
+```nginx
+app_protect_policy_file app_protect_strict_policy;
+```
+
+Sample Config with F5 WAF for NGINX configured:
+
+```nginx
+user nginx;
+worker_processes auto;
+worker_rlimit_nofile 8192;
+pid /run/nginx/nginx.pid;
+
+load_module modules/ngx_http_app_protect_module.so;
+
+events {
+ worker_connections 4000;
+}
+
+error_log /var/log/nginx/error.log debug;
+
+http {
+ access_log off;
+ server_tokens "";
+
+ app_protect_enforcer_address 127.0.0.1:50000;
+
+ server {
+ listen 80 default_server;
+
+ location / {
+ app_protect_enable on;
+ app_protect_policy_file app_protect_strict_policy;
+ proxy_pass http://127.0.0.1:80/proxy/$request_uri;
+ }
+
+ location /proxy {
+ default_type text/html;
+ return 200 "Hello World\n";
+ }
+ }
+}
+```
diff --git a/content/f5ads/overview/app-protect/disable-waf.md b/content/f5ads/overview/app-protect/disable-waf.md
new file mode 100644
index 0000000000..c00dcf39e7
--- /dev/null
+++ b/content/f5ads/overview/app-protect/disable-waf.md
@@ -0,0 +1,40 @@
+---
+title: Disable F5 WAF for NGINX
+description: "Disable F5 WAF for NGINX on an F5 Application Delivery Service deployment using the F5 ADS Console."
+weight: 120
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/app-protect/disable-waf/
+canonical: /f5ads/overview/app-protect/disable-waf/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service
+f5-keywords: "F5 WAF, app protect, disable, F5 ADS Console"
+f5-summary: >
+ This page explains how to disable F5 WAF for NGINX on an F5 Application Delivery Service deployment through the F5 ADS Console.
+ You need this when you no longer want WAF protection applied to your deployment.
+f5-audience: operator
+contentVars:
+ product: ADS
+---
+
+## Overview
+
+This guide explains how to disable F5 WAF for NGINX on an F5 Application Delivery Service (F5 ADS) deployment.
+
+## Before you start
+
+You must remove the WAF directives from your NGINX config file before attempting to disable WAF.
+
+## Disable F5 WAF for NGINX
+
+### Using the F5 ADS Console
+
+{{< include "/f5ads/access-console.md" >}}
+
+1. Go to your F5 ADS deployment.
+
+2. Edit your deployment.
+
+3. Disable **WAF** for your deployment.
+
+4. Select **Save Changes** to begin the deployment process.
diff --git a/content/f5ads/overview/app-protect/enable-waf.md b/content/f5ads/overview/app-protect/enable-waf.md
new file mode 100644
index 0000000000..e37f9e3398
--- /dev/null
+++ b/content/f5ads/overview/app-protect/enable-waf.md
@@ -0,0 +1,42 @@
+---
+title: Enable F5 WAF for NGINX
+description: "Enable F5 WAF for NGINX on an F5 Application Delivery Service deployment using the F5 ADS Console."
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/app-protect/enable-waf/
+canonical: /f5ads/overview/app-protect/enable-waf/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service
+f5-keywords: "F5 WAF, app protect, enable, F5 ADS Console"
+f5-summary: >
+ This page explains how to enable F5 WAF for NGINX on an F5 Application Delivery Service deployment through the F5 ADS Console.
+ You need this because WAF is disabled by default and must be turned on explicitly to protect your applications.
+f5-audience: operator
+contentVars:
+ product: ADS
+---
+
+## Overview
+
+This guide explains how to enable F5 WAF for NGINX on an F5 Application Delivery Service (F5 ADS) 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.
+
+## Enable F5 WAF for NGINX
+
+F5 WAF for NGINX is disabled by default and needs to be explicitly enabled on an F5 ADS deployment. Follow these steps:
+
+### Using the F5 ADS Console
+
+{{< include "/f5ads/access-console.md" >}}
+
+1. Go to your F5 ADS deployment.
+
+2. Edit your deployment.
+
+3. Enable **WAF** for your deployment.
+
+4. Select **Save Changes** to begin the deployment process.
+
+## What's next
+
+[Configure F5 WAF for NGINX]({{< ref "/f5ads/overview/app-protect/configure-waf.md" >}})
diff --git a/content/f5ads/overview/client-credentials.md b/content/f5ads/overview/client-credentials.md
new file mode 100644
index 0000000000..36fe839b96
--- /dev/null
+++ b/content/f5ads/overview/client-credentials.md
@@ -0,0 +1,201 @@
+---
+title: "Programmatic authentication with client credentials"
+description: "Learn how to set up OAuth2 client credentials for programmatic access to the F5 Application Delivery Service API."
+weight: 400
+toc: true
+url: /f5ads/overview/client-credentials/
+canonical: /f5ads/overview/client-credentials/
+f5-product: F5 Application Delivery Service
+f5-content-type: how-to
+f5-keywords: "client credentials, OAuth2, programmatic authentication, API"
+f5-summary: >
+ Use this guide to create OAuth2 client credentials in the F5 ADS Console and exchange
+ them for an access token that authenticates requests to the F5 Application Delivery Service API.
+ Client credentials enable access for automation toolchains such as CI/CD pipelines,
+ allowing you to manage Deployments, Configurations, and Certificates APIs.
+ Credentials are scoped to a single organization.
+f5-audience: operator
+---
+
+## Overview
+
+This guide explains how to create and use client credentials for automating access to F5 Application Delivery Service APIs. Client credentials enable automation tools such as CI/CD pipelines to manage certain F5 ADS resources without requiring user login.
+
+Client credentials work the same way regardless of which cloud your F5 ADS organization is associated with.
+
+To authenticate, you exchange your client credentials (client ID and secret) for a short-lived access token from the F5 ADS token endpoint. This access token is then used in the Authorization header of your API requests. Access tokens have limited validity, after which you'll need to request a new one using the same credentials.
+
+Client credentials are scoped to an organization and expire after a set period (up to 1 year, 6 months recommended).
+
+## Before you begin
+
+- You must be logged in to the [F5 ADS Console](https://console.nginxaas.net/).
+
+## Create client credentials
+
+Follow these steps to create a new client credential through the F5 ADS Console:
+
+1. Log in to [F5 ADS Console](https://console.nginxaas.net/).
+1. Select **Settings** > **Client Credentials** from the left navigation menu.
+1. Select **+ Add Client** to create a new credential.
+1. Enter a unique name for your client in the text field that appears.
+1. Choose an expiration date (maximum 1 year from today; 6 months is recommended). This setting is immutable after creation.
+1. Select **Create**.
+1. A popup window displays your client secret.
+
+{{< call-out class="warning" title="Important: Store Your Client Secret Securely" >}}
+The client secret appears only once. Save it immediately in a secure location, such as a password manager or secrets vault.
+{{< /call-out >}}
+
+Your client credentials can access the Certificates, Configs, and Deployments resources for your F5 ADS organization.
+
+### Client limits
+
+Organizations are limited to a maximum of 10 client credentials. To request an increase to this limit, contact the [NGINX Support]({{< ref "/f5ads/support.md" >}}).
+
+## Retrieve client information
+
+Follow these steps to view information about your clients:
+
+1. Log in to [F5 ADS Console](https://console.nginxaas.net/).
+1. Select **Settings** > **Client Credentials** from the left navigation menu.
+1. You can see all the available client credentials for your organization in the **Client Credentials** page. The table shows the following metadata for each credential:
+ - Client Name
+ - Client ID
+ - Token Endpoint
+ - Date Created
+ - Expires On
+
+1. Check the expiration status indicator next to **Expires On**:
+ - **Green dot**: Credential is active and valid
+ - **Red dot**: Credential has expired
+
+{{< call-out class="note" >}}
+You can only view the client secret once, when they're created. If you need to use credentials again, you must have saved the secret when you initially created the client.
+{{< /call-out >}}
+
+## Delete client credentials
+
+Follow these steps to delete a client credential:
+
+1. Log in to [F5 ADS Console](https://console.nginxaas.net/).
+1. Select **Settings** > **Client Credentials** from the left navigation menu.
+1. Locate the credential to delete in the table.
+1. Select the three vertical dots icon (⋮) at the end of the row.
+1. Select **Delete** from the menu.
+
+After deletion:
+
+- Existing access tokens continue to work for 1 full hour after they're issued.
+
+{{< call-out class="note" >}}
+Expired credentials are not automatically removed. You must manually delete credentials that are past their expiration date.
+{{< /call-out >}}
+
+## Use client credentials for authentication
+
+Learn how to obtain and use access tokens from your client credentials to authenticate API requests.
+
+{{< call-out class="note" >}}
+Client credential access to these resources isn’t officially supported yet.
+{{< /call-out >}}
+
+### Exchange credentials for an access token
+
+Use the client credentials to obtain an access token from the token endpoint.
+
+**Endpoint**: `POST https://.api.nginxaas.net/api/v1/auth/token`
+
+**Example using cURL**:
+
+```bash
+curl -X POST "https://.api.nginxaas.net/api/v1/auth/token" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "client_id": "",
+ "client_secret": "",
+ "grant_type": "client_credentials"
+ }'
+```
+
+**Response**:
+
+```json
+{
+ "access_token": "",
+ "token_type": "Bearer",
+ "expires_in": 3600
+}
+```
+
+### Use the access token
+
+Include the access token in the Authorization header when making API requests.
+
+**Example**:
+
+```bash
+curl -X GET "https://.api.nginxaas.net/api/v1/deployments" \
+ -H "Authorization: Bearer "
+```
+
+### Access token validity
+
+- **Duration**: Access tokens are valid for 1 hour from issuance
+- **Reauthentication**: When a token expires, request a new one using the same client credentials, if the client credentials are still active
+- **Scope**: Tokens are also scoped to the organization associated with the client credentials
+
+## Security best practices
+
+- **Store secrets securely**: Store client credentials in a secure place
+- **Delete unused credentials**: Remove clients that are no longer needed
+- **Follow the recommended expiration**: Avoid using clients with a very long expiration, a good default to begin with is 6 months
+
+## Troubleshooting
+
+Common issues when authenticating with client credentials and how to resolve them.
+
+### Invalid or expired credentials
+
+If you attempt to authenticate with invalid or expired credentials, you will receive a `401 Unauthorized` response. In this case:
+
+- Verify your client ID and secret are correct
+- Check if the client has expired
+- Create new credentials if necessary
+
+**Example error response**:
+
+```json
+{
+ "error": "unauthorized",
+ "error_description": "token is expired/invalid"
+}
+```
+
+### Forbidden APIs
+
+Client credentials can only access the Certificates, Configs, and Deployments APIs. Attempting to access any other API with client credentials returns a `403 Forbidden` response. In this case:
+
+- Verify you are using the correct API endpoint
+- Ensure the API is one of the supported resources
+
+**Example error response**:
+
+```json
+{
+ "error": "forbidden",
+ "error_description": "Client credentials do not have permission to access this resource"
+}
+```
+
+## Quick reference
+
+| Property | Value |
+|----------|-------|
+| Client secret visibility | Only shown once during creation |
+| Default expiration | 6 months (recommended) |
+| Maximum expiration | 1 year |
+| Client limit per organization | 10 clients contact [NGINX Support]({{< ref "/f5ads/support.md" >}}) to increase |
+| Access token validity | 1 hour |
+| Supported resources | Deployments, Configs, Certificates |
+| Token endpoint | `https://.api.nginxaas.net/api/v1/auth/token` |
diff --git a/content/f5ads/overview/f5ads-glossary.md b/content/f5ads/overview/f5ads-glossary.md
new file mode 100644
index 0000000000..3ee994033f
--- /dev/null
+++ b/content/f5ads/overview/f5ads-glossary.md
@@ -0,0 +1,30 @@
+---
+title: Glossary
+weight: 900
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/f5ads-glossary/
+canonical: /f5ads/overview/f5ads-glossary/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service
+contentVars:
+ product: ADS
+---
+
+This document provides definitions for terms and acronyms commonly used in F5 Application Delivery Service documentation.
+
+{{
}}
+
+| Term | Description |
+| ------------------------ | -------------------------------------------------------------------------------------|
+| Geographical Controller (GC)| Geographical Controller (GC) is a control plane that serves users in a given geographical boundary while taking into account concerns relating to data residency and localization. Example: A US geographical controller serves US customers. |
+| Network attachment | A Google Cloud resource that connects your NGINXaaS for Google Cloud deployment to upstream applications in your VPC network. [More information](https://cloud.google.com/vpc/docs/about-network-attachments). |
+| NGINX Configuration | F5 ADS deployments are configured with standard NGINX configuration file syntax - the same syntax you'd use for NGINX running outside F5 ADS. See the [NGINX configuration reference documentation](https://nginx.org/en/docs/).
+| F5 ADS Deployment | An instance of the highly available NGINX Plus managed service. A deployment can be created in any supported cloud provider where your organization holds an active F5 ADS marketplace subscription.
+| F5 ADS Organization | The account that hosts your F5 ADS configurations and deployments. An Organization can be linked to marketplace subscriptions for each cloud provider you want to deploy into, and can have unlimited users added for collaboration on your F5 ADS resources. |
+| F5 ADS User | F5 ADS Users are granted access to all resources in the F5 ADS Organization. User authentication is performed securely via Google Cloud, requiring a matching identity. Individuals can be added as users to multiple F5 ADS Organizations, and can switch between them. |
+| Service Frontend | Each F5 ADS deployment uses one of two service frontend types: **Managed public endpoint**, which makes the deployment available for client access over the public internet, or **Private endpoint**, which enables client access from trusted private network connections. For details, see the docs for each cloud provider: - [AWS]({{< ref "/f5ads/aws/overview.md#service-frontend" >}}) - [Google Cloud]({{< ref "/nginxaas/google/overview.md#service-frontend" >}}) |
+| Upstream Network | The network that hosts your applications and workloads F5 ADS proxies traffic to. These backend services or origin servers, are typically defined in an NGINX `upstream` block. For instructions on connecting your F5 ADS deployment to an upstream network, see the docs for each supported cloud provider. |
+| VPC Endpoint | An AWS resource that establishes a PrivateLink connection from your AWS VPC to the F5 ADS deployment. When you configure an F5 ADS for AWS deployment's service frontend as **Private endpoint**, you can create an interface VPC endpoint that target's the deployment's VPC endpoint service. For details, see the [AWS PrivateLink documentation](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html). |
+| VPC Peering | A method for connecting an F5 ADS deployment's network to an upstream network so traffic to your backend services routes directly over a private network. |
+{{
}}
diff --git a/content/f5ads/overview/manage-users-organizations.md b/content/f5ads/overview/manage-users-organizations.md
new file mode 100644
index 0000000000..4c84ae40ac
--- /dev/null
+++ b/content/f5ads/overview/manage-users-organizations.md
@@ -0,0 +1,101 @@
+---
+title: Manage users and organizations
+weight: 300
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/manage-users-organizations/
+canonical: /f5ads/overview/manage-users-organizations/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service
+---
+
+## Overview
+
+This document explains how to manage users and organizations in F5 Application Delivery Service using the F5 ADS Console.
+
+Before you start, ensure you understand the following concepts:
+
+- **F5 ADS Organization**: An F5 ADS Organization can be created at any time, to host your F5 ADS resources for your team or business unit. The organization must be linked to an active cloud marketplace subscription in order to manage and utilize F5 ADS deployments in that cloud.
+- **User**: F5 ADS Users are granted access to all resources in the F5 ADS Organization. User authentication is performed securely via your allowed login method(s), requiring a matching identity.
+ - Individuals can be added as users to multiple F5 ADS Organizations, and can switch between them using the steps documented below.
+ - Note that once a user has gained access to an F5 ADS Organization through a particular login method, they must continue to use that login method to gain access to that F5 ADS Organization. If the same human user authenticates through two different login methods, the resulting user identities are distinct from the perspective of F5 ADS.
+
+- **Authentication settings**: Authentication settings are specific to the enabled login method.
+ - **Login Methods**: F5 ADS authenticates users through the following login methods:
+ - Microsoft social login
+ - Google social login
+ - Email and password
+
+ You can configure the F5 ADS Organization to allow any or all of these methods. By default, all listed methods are enabled. See [user login]({{< ref "/f5ads/overview/user-login.md" >}}) for further details.
+ - **Google Authorized Domains**: If Google social login is enabled, authorized users can configure the list of domains with which users must be associated.
+ - This can be used to restrict access to Google identities within your Google Cloud Organization or Google Workspace, or other known, trusted Workspaces. For example, your Google Cloud Organization may have users created under the `example.com` domain. By setting the Authorized Domains in your F5 ADS Organization to only allow `example.com`, users attempting to log in with the same email associated with `alternative.net` Google Workspace would not be authenticated.
+ - By default, an F5 ADS Organization has an empty authorized domains list, which accepts matching users from any Google Workspace.
+ - **Microsoft Authorized Tenants**: If Microsoft social login is enabled, authorized users can configure the list of Azure tenant IDs to which users must belong.
+ - For example, all team members seeking to gain access to your F5 ADS Organization have an Entra identity within a particular Azure tenant. You can add the Azure tenant ID to the list of Microsoft Authorized Tenants. This will restrict anyone with an Entra identity outside that Azure tenant from accessing your F5 ADS Organization.
+ - By default, users of all Azure tenants will be allowed to match with the new user entries you add to your organization.
+
+## Access the F5 ADS Console
+
+{{< include "/f5ads/access-console.md" >}}
+
+Once logged in, you can create and manage [NGINX configurations]({{< ref "/f5ads/overview/nginx-configuration/nginx-configuration-console.md" >}}) and [SSL/TLS certificates]({{< ref "/f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console.md" >}}).
+
+If you want to create an F5 ADS deployment, subscribe to your preferred cloud provider(s) (such as [AWS]({{< ref "/f5ads/aws/deploy/prerequisites.md" >}}) or [Google Cloud]({{< ref "/nginxaas/google/deploy/prerequisites.md#subscribe-to-the-nginxaas-for-google-cloud-offering" >}})).
+
+## Create an organization
+
+- **Logging in for the first time**: If you are not already a member of an existing organization, you will be prompted to create a new organization. Enter an optional **Organization Name** and select **Submit**.
+- **When already logged in**: In the [F5 ADS Console](https://console.nginxaas.net/), select your profile icon in the top right corner and choose **Switch Organization**. Select **Add Organization**, enter an **Organization Name**, and choose **Create and Select** to create and switch to the new organization.
+
+{{< call-out class="note" >}}
+Choose a clear, recognizable name for your organization. Avoid leaving the name empty or using generic titles, as a distinct organization name helps team members easily identify and switch to the correct organization when collaborating.
+
+You can create NGINX configurations and upload SSL/TLS certificates within an organization without a cloud subscription. If you want to create an F5 ADS deployment, please subscribe to your preferred cloud provider(s) in the cloud marketplace.
+{{< /call-out >}}
+
+## Add or edit a user
+
+An existing F5 ADS Organization user can add additional users following these steps:
+
+1. Navigate to the **Users** page on the left menu, then select **Add User**.
+1. Enter the **Email** address for the user to be added.
+1. Select **Create User** to save the changes.
+
+The new user will appear in the list of users on the **Users** page. The next time they log in, they will be able to access this F5 ADS Organization.
+
+## Modify an organization's Authentication Settings
+
+1. Select **Organization Details** under the **Settings** section on the left menu.
+1. Select **Edit** in the **Authentication Settings** section.
+1. Tick the login methods that you wish to enable.
+1. To add a new Google authorized domain, select **Add Domain** and enter the new domain.
+1. To remove an existing Google authorized domain, select the Recycle Bin button next to it.
+1. To add a new Authorized Microsoft tenant, select **Add Tenant ID** and enter the Azure tenant ID.
+1. To remove an existing Authorized Microsoft tenant, select the Recycle Bin button next to it.
+1. Select **Update** to save changes.
+
+{{< call-out class="note" >}}You cannot remove a Google authorized domain or an Authorized Microsoft tenant from an organization's authentication settings if the action will lock out existing users of the organization. To modify the authentication settings you must first delete every F5 ADS user that is associated with the Google authorized domain or Authorized Microsoft tenant that you wish to exclude.{{< /call-out >}}
+
+### Modify the name of an organization
+
+1. Select **Organization Details** under the **Settings** section on the left menu.
+1. Select **Edit** in the **Organization Info** section.
+1. Enter new name in the **Organization Name** field, then select **Update** to save changes.
+
+## Switch organizations
+
+To switch to a different F5 ADS Organization (or to create a new organization), select the profile symbol in the top right corner and choose **Switch Organization**. This opens a page showing the list of all F5 ADS Organizations linked to your user identity. Select the organization you want to switch to, or select **Add Organization** to set up a new one.
+
+## Delete a user
+
+An authenticated user can delete other users, but not their own user. Deletion is irreversible; the deleted user will no longer be able to access the F5 ADS Organization.
+
+To delete a user in an F5 ADS Organization:
+
+1. Select **Organization Details** under the **Settings** section on the left menu.
+1. Select the ellipsis (three dots) menu next to the user you want to delete.
+1. Select **Delete** in the menu. The deleted user will no longer appear in the **Users** page.
+
+## What's next
+
+[Add an NGINX configuration using the F5 ADS Console]({{< ref "/f5ads/overview/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/f5ads/overview/nginx-configuration/_index.md b/content/f5ads/overview/nginx-configuration/_index.md
new file mode 100644
index 0000000000..4f56abd776
--- /dev/null
+++ b/content/f5ads/overview/nginx-configuration/_index.md
@@ -0,0 +1,6 @@
+---
+title: NGINX configurations
+weight: 500
+url: /f5ads/overview/nginx-configuration/
+canonical: /f5ads/overview/nginx-configuration/
+---
diff --git a/content/f5ads/overview/nginx-configuration/configuration-rules.md b/content/f5ads/overview/nginx-configuration/configuration-rules.md
new file mode 100644
index 0000000000..b719285808
--- /dev/null
+++ b/content/f5ads/overview/nginx-configuration/configuration-rules.md
@@ -0,0 +1,921 @@
+---
+title: NGINX configuration rules and limits
+weight: 50
+toc: true
+url: /f5ads/overview/nginx-configuration/configuration-rules/
+canonical: /f5ads/overview/nginx-configuration/configuration-rules/
+f5-content-type: reference
+f5-product: F5 Application Delivery Service
+contentVars:
+ product: ADS
+---
+
+This document provides details about using NGINX configuration files with your
+F5 Application Delivery Service deployment, restrictions, and available directives.
+
+## NGINX configuration common user workflows
+
+You can upload NGINX configurations to your F5 ${product} deployment using the F5 ADS Console:
+
+- [Upload using the console]({{< ref "/f5ads/overview/nginx-configuration/nginx-configuration-console.md" >}})
+
+The topics below explain NGINX configuration restrictions and which directives are supported, unsupported, or cannot be overridden.
+
+## NGINX filesystem restrictions
+
+There are limits to where files, including NGINX configuration files, certificate files, and any other files uploaded to the deployment, can be placed on the filesystem. There are also limits on what directories NGINX can access during runtime. These limits help support the separation of roles, enforce the principle of least privilege, and ensure the smooth operation of the system.
+
+{{
}}
+
+ | Allowed Directory | User can upload files to | NGINX master process can read | NGINX master process can write | NGINX worker process can read | NGINX worker process can write |
+ | -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | -------------------- |
+ | /etc/nginx | {{< icon "check" >}} | {{< icon "check" >}} | | | |
+ | /opt | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /srv | {{< icon "check" >}} | {{< icon "check" >}} | | {{< icon "check" >}} | |
+ | /tmp | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /spool/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /var/cache/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /var/spool/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /var/www | {{< icon "check" >}} | {{< icon "check" >}} | | {{< icon "check" >}} | |
+
+{{< /table >}}
+
+For example, `/etc/nginx` is only readable by the NGINX master process, making it a secure location for certificate files that won't be accidentally served due to configuration errors. `/var/www` is a secure location for static content because the NGINX worker process can serve files from it but cannot modify them, ensuring content integrity. `/tmp` is a good choice for storing temporary files with `proxy_temp_path` or `client_body_temp_path` since it is writable by the NGINX worker process.
+
+If you need access to additional directories, please [contact us]({{< ref "/f5ads/support.md" >}}).
+
+## Disallowed configuration directives
+
+The following directives are not supported because of specific limitations. If you include any of these directives in your NGINX configuration, you'll get an error.
+
+{{< table >}}
+
+| Disallowed Directive | Reason |
+|------------------ | ----------------- |
+| ssl_engine | No hardware SSL accelerator is available. |
+| debug_points | F5 ADS does not provide access to NGINX processes for debugging. |
+| fastcgi_bind grpc_bind memcached_bind proxy_bind scgi_bind uwsgi_bind | Source IP specification for active-active deployments is not allowed. |
+| quic_bpf | QUIC connection migration is not currently supported for active-active deployments. |
+
+{{< /table >}}
+
+You may find a few directives are not listed here as either allowed or disallowed. Our team is working on getting these directives supported soon.
+
+## Directives that cannot be overridden
+
+The following directives cannot be overridden by the user provided configuration.
+
+{{< table >}}
+
+| Persistent Directive | Value | Reason |
+|------------------ | ----------------------- | -----------------|
+| `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_rlimit_nofile` | `524288` | Set for optimal performance of deployments. |
+| `worker_connections` | `150000` | Set for optimal performance of deployments. |
+| `pid` | `/run/nginx/nginx.pid` | Set to this value to allow F5 ADS to automatically manage the NGINX master process. |
+| `daemon` | `on` | Automatically set to `on` to allow F5 ADS to manage the NGINX master process. |
+| `master_process` | `on` | This directive is intended for NGINX developers. |
+| `worker_cpu_affinity` | `auto` | The value `auto` allows binding worker processes automatically to available CPUs based on the current capacity of the deployment. |
+
+{{< /table >}}
+
+For connection and request rate limiting, consider using these NGINX modules:
+
+- [limit_conn](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn)
+- [limit_req](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req)
+- [upstream queue](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue)
+
+## Listener restrictions
+
+F5 ADS reserves the following listen ports for internal use.
+
+- `49151`
+- `49152`
+
+F5 ADS does not support specific hostnames or IP addresses (other than localhost / loopback addresses) to be used as a `listen` address.
+You must use an unspecified address to listen on all IPs (such as `0.0.0.0`, `[::0]` or `*`) or a local address for use-cases where you do not want the listener exposed via the service endpoint (such as `127.0.0.1` or `localhost`).
+
+## Configuration directives list
+
+F5 ADS supports a limited set of NGINX directives. The directives with the "app_protect" prefix require [F5 WAF for NGINX]({{< ref "/waf" >}}) to be enabled for the deployment.
+
+F5 ADS does not yet support F5 WAF for NGINX custom security policies or logging profiles. Support is limited to the [prebuilt policies]({{< ref "/waf/policies/configuration.md#default-policy" >}}) and the [default logging profiles]({{< ref "/waf/logging/logs-overview.md#default-logging-profile-bundles" >}}).
+
+{{< 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)\
+[access_log (ngx_http_log_module)](https://nginx.org/en/docs/http/ngx_http_log_module.html#access_log)\
+[access_log (ngx_stream_log_module)](https://nginx.org/en/docs/stream/ngx_stream_log_module.html#access_log)\
+[add_after_body](https://nginx.org/en/docs/http/ngx_http_addition_module.html#add_after_body)\
+[add_before_body](https://nginx.org/en/docs/http/ngx_http_addition_module.html#add_before_body)\
+[add_header](https://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header)\
+[add_trailer](https://nginx.org/en/docs/http/ngx_http_headers_module.html#add_trailer)\
+[addition_types](https://nginx.org/en/docs/http/ngx_http_addition_module.html#addition_types)\
+[aio](https://nginx.org/en/docs/http/ngx_http_core_module.html#aio)\
+[aio_write](https://nginx.org/en/docs/http/ngx_http_core_module.html#aio_write)\
+[alias](https://nginx.org/en/docs/http/ngx_http_core_module.html#alias)\
+[allow (ngx_http_access_module)](https://nginx.org/en/docs/http/ngx_http_access_module.html#allow)\
+[allow (ngx_stream_access_module)](https://nginx.org/en/docs/stream/ngx_stream_access_module.html#allow)\
+[ancient_browser](https://nginx.org/en/docs/http/ngx_http_browser_module.html#ancient_browser)\
+[ancient_browser_value](https://nginx.org/en/docs/http/ngx_http_browser_module.html#ancient_browser_value)\
+[app_protect_compressed_requests_action]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_compressed_requests_action" >}})\
+[app_protect_cookie_seed]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_cookie_seed" >}})\
+[app_protect_cpu_thresholds]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_cpu_thresholds" >}})\
+[app_protect_custom_log_attribute]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_custom_log_attribute" >}})\
+[app_protect_enable]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=modules/ngx_http_app_protect_module.so-,app_protect_enable" >}})\
+[app_protect_failure_mode_action]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_failure_mode_action" >}})\
+[app_protect_physical_memory_util_thresholds]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_physical_memory_util_thresholds" >}})\
+[app_protect_policy_file](<{{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_enable%20on-%2Capp_protect_policy_file" >}}>)\
+[app_protect_reconnect_period_seconds]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_reconnect_period_seconds" >}})\
+[app_protect_request_buffer_overflow_action]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_request_buffer_overflow_action" >}})\
+[app_protect_security_log]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_security_log" >}})\
+[app_protect_security_log_enable]({{< ref "/waf/policies/directives/#f5-waf-for-nginx-directives:~:text=app_protect_security_log_enable" >}})\
+[app_protect_user_defined_signatures]({{< ref "/waf/policies/directives/#global-directives:~:text=app_protect_user_defined_signatures" >}})\
+[auth_basic](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic)\
+[auth_basic_user_file](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic_user_file)\
+[auth_delay](https://nginx.org/en/docs/http/ngx_http_core_module.html#auth_delay)\
+[auth_http](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http)\
+[auth_http_header](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http_header)\
+[auth_http_pass_client_cert](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http_pass_client_cert)\
+[auth_http_timeout](https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#auth_http_timeout)\
+[auth_jwt](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt)\
+[auth_jwt_claim_set](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_claim_set)\
+[auth_jwt_header_set](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_header_set)\
+[auth_jwt_key_cache](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_cache)\
+[auth_jwt_key_file](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_file)\
+[auth_jwt_key_request](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_request)\
+[auth_jwt_leeway](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_leeway)\
+[auth_jwt_require](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_require)\
+[auth_jwt_type](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_type)\
+[auth_oidc](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#auth_oidc)\
+[auth_request](https://nginx.org/en/docs/http/ngx_http_auth_request_module.html#auth_request)\
+[auth_request_set](https://nginx.org/en/docs/http/ngx_http_auth_request_module.html#auth_request_set)\
+[autoindex](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex)\
+[autoindex_exact_size](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex_exact_size)\
+[autoindex_format](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex_format)\
+[autoindex_localtime](https://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex_localtime)\
+[break](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#break)\
+[connect_timeout](https://nginx.org/en/docs/ngx_mgmt_module.html#connect_timeout)\
+[charset](https://nginx.org/en/docs/http/ngx_http_charset_module.html#charset)\
+[charset_map](https://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_map)\
+[charset_types](https://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_types)\
+[chunked_transfer_encoding](https://nginx.org/en/docs/http/ngx_http_core_module.html#chunked_transfer_encoding)\
+[client_body_buffer_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size)\
+[client_body_in_file_only](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_file_only)\
+[client_body_in_single_buffer](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_single_buffer)\
+[client_body_temp_path](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_temp_path)\
+[client_body_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout)\
+[client_header_buffer_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_buffer_size)\
+[client_header_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_timeout)\
+[client_id](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#client_id)\
+[client_max_body_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size)\
+[client_secret](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#client_secret)\
+[config_url](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#config_url)\
+[connection_pool_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#connection_pool_size)\
+[cookie_name](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#cookie_name)\
+[create_full_put_path](https://nginx.org/en/docs/http/ngx_http_dav_module.html#create_full_put_path)\
+[daemon](https://nginx.org/en/docs/ngx_core_module.html#daemon)\
+[dav_access](https://nginx.org/en/docs/http/ngx_http_dav_module.html#dav_access)\
+[dav_methods](https://nginx.org/en/docs/http/ngx_http_dav_module.html#dav_methods)\
+[debug_connection](https://nginx.org/en/docs/ngx_core_module.html#debug_connection)\
+[default_type](https://nginx.org/en/docs/http/ngx_http_core_module.html#default_type)\
+[deny (ngx_http_access_module)](https://nginx.org/en/docs/http/ngx_http_access_module.html#deny)\
+[deny (ngx_stream_access_module)](https://nginx.org/en/docs/stream/ngx_stream_access_module.html#deny)\
+[directio](https://nginx.org/en/docs/http/ngx_http_core_module.html#directio)\
+[directio_alignment](https://nginx.org/en/docs/http/ngx_http_core_module.html#directio_alignment)\
+[disable_symlinks](https://nginx.org/en/docs/http/ngx_http_core_module.html#disable_symlinks)\
+[empty_gif](https://nginx.org/en/docs/http/ngx_http_empty_gif_module.html#empty_gif)\
+[enforce_initial_report](https://nginx.org/en/docs/ngx_mgmt_module.html#enforce_initial_report)\
+[env](https://nginx.org/en/docs/ngx_core_module.html#env)\
+[error_log](https://nginx.org/en/docs/ngx_core_module.html#error_log)\
+[error_page](https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page)\
+[etag](https://nginx.org/en/docs/http/ngx_http_core_module.html#etag)\
+[events](https://nginx.org/en/docs/ngx_core_module.html#events)\
+[expires](https://nginx.org/en/docs/http/ngx_http_headers_module.html#expires)\
+[extra_auth_args](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#extra_auth_args)\
+[f4f](https://nginx.org/en/docs/http/ngx_http_f4f_module.html#f4f)\
+[f4f_buffer_size](https://nginx.org/en/docs/http/ngx_http_f4f_module.html#f4f_buffer_size)\
+[fastcgi_buffer_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffer_size)\
+[fastcgi_buffering](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffering)\
+[fastcgi_buffers](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffers)\
+[fastcgi_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_busy_buffers_size)\
+[fastcgi_cache](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache)\
+[fastcgi_cache_background_update](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_background_update)\
+[fastcgi_cache_bypass](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_bypass)\
+[fastcgi_cache_key](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_key)\
+[fastcgi_cache_lock](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_lock)\
+[fastcgi_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_lock_age)\
+[fastcgi_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_lock_timeout)\
+[fastcgi_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_max_range_offset)\
+[fastcgi_cache_methods](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_methods)\
+[fastcgi_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_min_uses)\
+[fastcgi_cache_path](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_path)\
+[fastcgi_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_revalidate)\
+[fastcgi_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_use_stale)\
+[fastcgi_cache_valid](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_valid)\
+[fastcgi_catch_stderr](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_catch_stderr)\
+[fastcgi_connect_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_connect_timeout)\
+[fastcgi_force_ranges](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_force_ranges)\
+[fastcgi_hide_header](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_hide_header)\
+[fastcgi_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_ignore_client_abort)\
+[fastcgi_ignore_headers](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_ignore_headers)\
+[fastcgi_index](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_index)\
+[fastcgi_intercept_errors](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors)\
+[fastcgi_keep_conn](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn)\
+[fastcgi_limit_rate](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_limit_rate)\
+[fastcgi_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_max_temp_file_size)\
+[fastcgi_next_upstream](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream)\
+[fastcgi_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_timeout)\
+[fastcgi_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream_tries)\
+[fastcgi_no_cache](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_no_cache)\
+[fastcgi_param](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param)\
+[fastcgi_pass](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass)\
+[fastcgi_pass_header](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass_header)\
+[fastcgi_pass_request_body](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass_request_body)\
+[fastcgi_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass_request_headers)\
+[fastcgi_read_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_read_timeout)\
+[fastcgi_request_buffering](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_request_buffering)\
+[fastcgi_send_lowat](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_send_lowat)\
+[fastcgi_send_timeout](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_send_timeout)\
+[fastcgi_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_socket_keepalive)\
+[fastcgi_split_path_info](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info)\
+[fastcgi_store](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_store)\
+[fastcgi_store_access](http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_store_access)\
+[fastcgi_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_temp_file_write_size)\
+[fastcgi_temp_path](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_temp_path)\
+[flv](https://nginx.org/en/docs/http/ngx_http_flv_module.html#flv)\
+[geo (ngx_http_geo_module)](https://nginx.org/en/docs/http/ngx_http_geo_module.html#geo)\
+[geo (ngx_stream_geo_module)](https://nginx.org/en/docs/stream/ngx_stream_geo_module.html#geo)\
+[grpc_buffer_size](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_buffer_size)\
+[grpc_connect_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_connect_timeout)\
+[grpc_hide_header](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_hide_header)\
+[grpc_ignore_headers](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ignore_headers)\
+[grpc_intercept_errors](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_intercept_errors)\
+[grpc_next_upstream](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream)\
+[grpc_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_timeout)\
+[grpc_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_tries)\
+[grpc_pass](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass)\
+[grpc_pass_header](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass_header)\
+[grpc_read_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_read_timeout)\
+[grpc_send_timeout](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_send_timeout)\
+[grpc_set_header](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_set_header)\
+[grpc_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_socket_keepalive)\
+[grpc_ssl_certificate](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate)\
+[grpc_ssl_certificate_cache](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_cache)\
+[grpc_ssl_certificate_key](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_key)\
+[grpc_ssl_ciphers](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_ciphers)\
+[grpc_ssl_conf_command](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_conf_command)\
+[grpc_ssl_crl](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_crl)\
+[grpc_ssl_name](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_name)\
+[grpc_ssl_password_file](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_password_file)\
+[grpc_ssl_protocols](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_protocols)\
+[grpc_ssl_server_name](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_server_name)\
+[grpc_ssl_session_reuse](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_session_reuse)\
+[grpc_ssl_trusted_certificate](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_trusted_certificate)\
+[grpc_ssl_verify](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify)\
+[grpc_ssl_verify_depth](https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify_depth)\
+[gunzip](https://nginx.org/en/docs/http/ngx_http_gunzip_module.html#gunzip)\
+[gunzip_buffers](https://nginx.org/en/docs/http/ngx_http_gunzip_module.html#gunzip_buffers)\
+[gzip](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip)\
+[gzip_buffers](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_buffers)\
+[gzip_comp_level](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_comp_level)\
+[gzip_disable](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_disable)\
+[gzip_http_version](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_http_version)\
+[gzip_min_length](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_min_length)\
+[gzip_proxied](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_proxied)\
+[gzip_static](https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html#gzip_static)\
+[gzip_types](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_types)\
+[gzip_vary](https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_vary)\
+[hash (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash)\
+[hash (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#hash)\
+[health_check (ngx_http_upstream_hc_module)](https://nginx.org/en/docs/http/ngx_http_upstream_hc_module.html#health_check)\
+[health_check (ngx_stream_upstream_hc_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_hc_module.html#health_check)\
+[health_check_timeout](https://nginx.org/en/docs/stream/ngx_stream_upstream_hc_module.html#health_check_timeout)\
+[hls](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls)\
+[hls_buffers](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_buffers)\
+[hls_forward_args](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_forward_args)\
+[hls_fragment](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_fragment)\
+[hls_mp4_buffer_size](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_mp4_buffer_size)\
+[hls_mp4_max_buffer_size](https://nginx.org/en/docs/http/ngx_http_hls_module.html#hls_mp4_max_buffer_size)\
+[http](https://nginx.org/en/docs/http/ngx_http_core_module.html#http)\
+[http2_body_preread_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_body_preread_size)\
+[http2_chunk_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_chunk_size)\
+[http2_idle_timeout](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_idle_timeout)\
+[http2_max_concurrent_pushes](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_concurrent_pushes)\
+[http2_max_concurrent_streams](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_concurrent_streams)\
+[http2_max_field_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_field_size)\
+[http2_max_header_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_header_size)\
+[http2_max_requests](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_requests)\
+[http2_push](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_push)\
+[http2_push_preload](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_push_preload)\
+[http2_recv_buffer_size](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_recv_buffer_size)\
+[http2_recv_timeout](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_recv_timeout)\
+[http3](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3)\
+[http3_hq](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3_hq)\
+[http3_max_concurrent_streams](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3_max_concurrent_streams)\
+[http3_stream_buffer_size](http://nginx.org/en/docs/http/ngx_http_v3_module.html#http3_stream_buffer_size)\
+[if](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if)\
+[if_modified_since](https://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since)\
+[ignore_invalid_headers](https://nginx.org/en/docs/http/ngx_http_core_module.html#ignore_invalid_headers)\
+[image_filter](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter)\
+[image_filter_buffer](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_buffer)\
+[image_filter_interlace](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_interlace)\
+[image_filter_jpeg_quality](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_jpeg_quality)\
+[image_filter_sharpen](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_sharpen)\
+[image_filter_transparency](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_transparency)\
+[image_filter_webp_quality](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_webp_quality)\
+[imap_auth](https://nginx.org/en/docs/mail/ngx_mail_imap_module.html#imap_auth)\
+[imap_capabilities](https://nginx.org/en/docs/mail/ngx_mail_imap_module.html#imap_capabilities)\
+[imap_client_buffer](https://nginx.org/en/docs/mail/ngx_mail_imap_module.html#imap_client_buffer)\
+[include](https://nginx.org/en/docs/ngx_core_module.html#include)\
+[index](https://nginx.org/en/docs/http/ngx_http_index_module.html#index)\
+[internal](https://nginx.org/en/docs/http/ngx_http_core_module.html#internal)\
+[internal_redirect](http://nginx.org/en/docs/http/ngx_http_internal_redirect_module.html#internal_redirect)\
+[ip_hash](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash)\
+[issuer](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#issuer)\
+[js_access (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_access)\
+[js_body_filter](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_body_filter)\
+[js_content](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_content)\
+[js_fetch_buffer_size (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_buffer_size)\
+[js_fetch_buffer_size (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_buffer_size)\
+[js_fetch_ciphers (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_ciphers)\
+[js_fetch_ciphers (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_ciphers)\
+[js_fetch_max_response_buffer_size (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_max_response_buffer_size)\
+[js_fetch_max_response_buffer_size (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_max_response_buffer_size)\
+[js_fetch_protocols (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_protocols)\
+[js_fetch_protocols (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_protocols)\
+[js_fetch_timeout (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_timeout)\
+[js_fetch_timeout (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_timeout)\
+[js_fetch_trusted_certificate (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_trusted_certificate)\
+[js_fetch_trusted_certificate (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_trusted_certificate)\
+[js_fetch_verify (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_verify)\
+[js_fetch_verify (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_verify)\
+[js_fetch_verify_depth (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_fetch_verify_depth)\
+[js_fetch_verify_depth (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_fetch_verify_depth)\
+[js_filter (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_filter)\
+[js_header_filter](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_header_filter)\
+[js_import (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_import)\
+[js_import (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_import)\
+[js_include (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_include)\
+[js_include (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_include)\
+[js_path (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_path)\
+[js_path (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_path)\
+[js_periodic (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_periodic)\
+[js_periodic (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_periodic)\
+[js_preload_object (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_preload_object)\
+[js_preload_object (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_preload_object)\
+[js_preread (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_preread)\
+[js_set (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_set)\
+[js_set (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_set)\
+[js_var (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_var)\
+[js_var (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_var)\
+[js_shared_dict_zone (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_shared_dict_zone)\
+[js_var (ngx_http_js_module)](https://nginx.org/en/docs/http/ngx_http_js_module.html#js_var)\
+[js_var (ngx_stream_js_module)](https://nginx.org/en/docs/stream/ngx_stream_js_module.html#js_var)\
+[keepalive](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive)\
+[keepalive_disable](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable)\
+[keepalive_min_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_min_timeout)\
+[keepalive_requests (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests)\
+[keepalive_time (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_time)\
+[keepalive_timeout (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout)\
+[keyval (ngx_http_keyval_module)](https://nginx.org/en/docs/http/ngx_http_keyval_module.html#keyval)\
+[keyval (ngx_stream_keyval_module)](https://nginx.org/en/docs/stream/ngx_stream_keyval_module.html#keyval)\
+[keyval_zone (ngx_http_keyval_module)](https://nginx.org/en/docs/http/ngx_http_keyval_module.html#keyval_zone)\
+[keyval_zone (ngx_stream_keyval_module)](https://nginx.org/en/docs/stream/ngx_stream_keyval_module.html#keyval_zone)\
+[large_client_header_buffers](https://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers)\
+[least_conn (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn)\
+[least_conn (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#least_conn)\
+[least_time (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_time)\
+[least_time (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#least_time)\
+[license_token](https://nginx.org/en/docs/ngx_mgmt_module.html#license_token)\
+[limit_conn (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn)\
+[limit_conn (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn)\
+[limit_conn_dry_run (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_dry_run)\
+[limit_conn_dry_run (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn_dry_run)\
+[limit_conn_log_level (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_log_level)\
+[limit_conn_log_level (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn_log_level)\
+[limit_conn_status](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_status)\
+[limit_conn_zone (ngx_http_limit_conn_module)](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_zone)\
+[limit_conn_zone (ngx_stream_limit_conn_module)](https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html#limit_conn_zone)\
+[limit_except](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except)\
+[limit_rate](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate)\
+[limit_rate_after](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after)\
+[limit_req](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req)\
+[limit_req_dry_run](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_dry_run)\
+[limit_req_log_level](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_log_level)\
+[limit_req_status](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_status)\
+[limit_req_zone](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_zone)\
+[limit_zone](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_zone)\
+[lingering_close](https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_close)\
+[lingering_time](https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_time)\
+[lingering_timeout](https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_timeout)\
+[listen (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#listen)\
+[listen (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#listen)\
+[load_module](https://nginx.org/en/docs/ngx_core_module.html#load_module)\
+[location](https://nginx.org/en/docs/http/ngx_http_core_module.html#location)\
+[lock_file](http://nginx.org/en/docs/ngx_core_module.html#lock_file)\
+[log_format (ngx_http_log_module)](https://nginx.org/en/docs/http/ngx_http_log_module.html#log_format)\
+[log_format (ngx_stream_log_module)](https://nginx.org/en/docs/stream/ngx_stream_log_module.html#log_format)\
+[log_not_found](https://nginx.org/en/docs/http/ngx_http_core_module.html#log_not_found)\
+[log_subrequest](https://nginx.org/en/docs/http/ngx_http_core_module.html#log_subrequest)\
+[mail](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#mail)\
+[map (ngx_http_map_module)](https://nginx.org/en/docs/http/ngx_http_map_module.html#map)\
+[map (ngx_stream_map_module)](https://nginx.org/en/docs/stream/ngx_stream_map_module.html#map)\
+[map_hash_bucket_size (ngx_http_map_module)](https://nginx.org/en/docs/http/ngx_http_map_module.html#map_hash_bucket_size)\
+[map_hash_bucket_size (ngx_stream_map_module)](https://nginx.org/en/docs/stream/ngx_stream_map_module.html#map_hash_bucket_size)\
+[map_hash_max_size (ngx_http_map_module)](https://nginx.org/en/docs/http/ngx_http_map_module.html#map_hash_max_size)\
+[map_hash_max_size (ngx_stream_map_module)](https://nginx.org/en/docs/stream/ngx_stream_map_module.html#map_hash_max_size)\
+[master_process](https://nginx.org/en/docs/ngx_core_module.html#master_process)\
+[match (ngx_http_upstream_hc_module)](https://nginx.org/en/docs/http/ngx_http_upstream_hc_module.html#match)\
+[match (ngx_stream_upstream_hc_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_hc_module.html#match)\
+[max_errors](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#max_errors)\
+[max_ranges](https://nginx.org/en/docs/http/ngx_http_core_module.html#max_ranges)\
+[memcached_buffer_size](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_buffer_size)\
+[memcached_connect_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_connect_timeout)\
+[memcached_gzip_flag](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_gzip_flag)\
+[memcached_next_upstream](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream)\
+[memcached_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_timeout)\
+[memcached_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_next_upstream_tries)\
+[memcached_pass](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_pass)\
+[memcached_read_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_read_timeout)\
+[memcached_send_timeout](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_send_timeout)\
+[memcached_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_socket_keepalive)\
+[merge_slashes](https://nginx.org/en/docs/http/ngx_http_core_module.html#merge_slashes)\
+[mgmt](https://nginx.org/en/docs/ngx_mgmt_module.html#mgmt)\
+[min_delete_depth](https://nginx.org/en/docs/http/ngx_http_dav_module.html#min_delete_depth)\
+[mirror](https://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror)\
+[mirror_request_body](https://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror_request_body)\
+[modern_browser](https://nginx.org/en/docs/http/ngx_http_browser_module.html#modern_browser)\
+[modern_browser_value](https://nginx.org/en/docs/http/ngx_http_browser_module.html#modern_browser_value)\
+[more_clear_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_clear_headers)\
+[more_clear_input_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_clear_input_headers)\
+[more_set_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_set_headers)\
+[more_set_input_headers](https://github.com/openresty/headers-more-nginx-module?tab=readme-ov-file#more_set_input_headers)\
+[mp4](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4)\
+[mp4_buffer_size](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_buffer_size)\
+[mp4_limit_rate](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_limit_rate)\
+[mp4_limit_rate_after](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_limit_rate_after)\
+[mp4_max_buffer_size](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_max_buffer_size)\
+[mp4_start_key_frame](https://nginx.org/en/docs/http/ngx_http_mp4_module.html#mp4_start_key_frame)\
+[mqtt](https://nginx.org/en/docs/stream/ngx_stream_mqtt_filter_module.html#mqtt)\
+[mqtt_rewrite_buffer_size](https://nginx.org/en/docs/stream/ngx_stream_mqtt_filter_module.html#mqtt_rewrite_buffer_size)\
+[mqtt_set_connect](https://nginx.org/en/docs/stream/ngx_stream_mqtt_filter_module.html#mqtt_set_connect)\
+[msie_padding](https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_padding)\
+[msie_refresh](https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_refresh)\
+[multi_accept](https://nginx.org/en/docs/ngx_core_module.html#multi_accept)\
+[ntlm](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ntlm)\
+[oidc_provider](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#oidc_provider)\
+[open_file_cache](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache)\
+[open_file_cache_errors](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_errors)\
+[open_file_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_min_uses)\
+[open_file_cache_valid](https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_valid)\
+[open_log_file_cache (ngx_http_log_module)](https://nginx.org/en/docs/http/ngx_http_log_module.html#open_log_file_cache)\
+[open_log_file_cache (ngx_stream_log_module)](https://nginx.org/en/docs/stream/ngx_stream_log_module.html#open_log_file_cache)\
+[otel_exporter](https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter)\
+[otel_service_name](https://nginx.org/en/docs/ngx_otel_module.html#otel_service_name)\
+[otel_trace](https://nginx.org/en/docs/ngx_otel_module.html#otel_trace)\
+[otel_trace_context](https://nginx.org/en/docs/ngx_otel_module.html#otel_trace_context)\
+[otel_span_name](https://nginx.org/en/docs/ngx_otel_module.html#otel_span_name)\
+[otel_span_attr](https://nginx.org/en/docs/ngx_otel_module.html#otel_span_attr)\
+[output_buffers](https://nginx.org/en/docs/http/ngx_http_core_module.html#output_buffers)\
+[override_charset](https://nginx.org/en/docs/http/ngx_http_charset_module.html#override_charset)\
+[pass](https://nginx.org/en/docs/stream/ngx_stream_pass_module.html#pass)\
+[pid](https://nginx.org/en/docs/ngx_core_module.html#pid)\
+[pop3_auth](https://nginx.org/en/docs/mail/ngx_mail_pop3_module.html#pop3_auth)\
+[pop3_capabilities](https://nginx.org/en/docs/mail/ngx_mail_pop3_module.html#pop3_capabilities)\
+[port_in_redirect](https://nginx.org/en/docs/http/ngx_http_core_module.html#port_in_redirect)\
+[postpone_output](https://nginx.org/en/docs/http/ngx_http_core_module.html#postpone_output)\
+[preread_buffer_size (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_buffer_size)\
+[preread_timeout (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_timeout)\
+[protocol](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#protocol)\
+[proxy_buffer](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_buffer)\
+[proxy_buffer_size (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffer_size)\
+[proxy_buffer_size (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_buffer_size)\
+[proxy_buffering](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering)\
+[proxy_buffers](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers)\
+[proxy_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_busy_buffers_size)\
+[proxy_cache](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache)\
+[proxy_cache_background_update](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_background_update)\
+[proxy_cache_bypass](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_bypass)\
+[proxy_cache_convert_head](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head)\
+[proxy_cache_key](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key)\
+[proxy_cache_lock](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock)\
+[proxy_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_age)\
+[proxy_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_timeout)\
+[proxy_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_max_range_offset)\
+[proxy_cache_methods](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_methods)\
+[proxy_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_min_uses)\
+[proxy_cache_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path)\
+[proxy_cache_purge](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_purge)\
+[proxy_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_revalidate)\
+[proxy_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale)\
+[proxy_cache_valid](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid)\
+[proxy_connect_timeout (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout)\
+[proxy_connect_timeout (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_connect_timeout)\
+[proxy_cookie_domain](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain)\
+[proxy_cookie_flags](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_flags)\
+[proxy_cookie_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path)\
+[proxy_download_rate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_download_rate)\
+[proxy_force_ranges](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_force_ranges)\
+[proxy_half_close (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_half_close)\
+[proxy_headers_hash_bucket_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_bucket_size)\
+[proxy_headers_hash_max_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_max_size)\
+[proxy_hide_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header)\
+[proxy_http_version](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version)\
+[proxy_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_client_abort)\
+[proxy_ignore_headers](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_headers)\
+[proxy_intercept_errors](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors)\
+[proxy_limit_rate](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_limit_rate)\
+[proxy_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size)\
+[proxy_method](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_method)\
+[proxy_next_upstream (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream)\
+[proxy_next_upstream (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_next_upstream)\
+[proxy_next_upstream_timeout (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout)\
+[proxy_next_upstream_timeout (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_next_upstream_timeout)\
+[proxy_next_upstream_tries (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries)\
+[proxy_next_upstream_tries (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_next_upstream_tries)\
+[proxy_no_cache](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_no_cache)\
+[proxy_pass (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass)\
+[proxy_pass (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_pass)\
+[proxy_pass_error_message](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_pass_error_message)\
+[proxy_pass_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_header)\
+[proxy_pass_request_body](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_body)\
+[proxy_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_headers)\
+[proxy_protocol (ngx_mail_proxy_module)](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_protocol)\
+[proxy_protocol (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_protocol)\
+[proxy_protocol_timeout (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#proxy_protocol_timeout)\
+[proxy_read_timeout](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout)\
+[proxy_redirect](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect)\
+[proxy_requests (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_requests)\
+[proxy_request_buffering](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering)\
+[proxy_responses (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_responses)\
+[proxy_send_lowat](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_lowat)\
+[proxy_send_timeout](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_timeout)\
+[proxy_session_drop (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_session_drop)\
+[proxy_set_body](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_body)\
+[proxy_set_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header)\
+[proxy_smtp_auth](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_smtp_auth)\
+[proxy_socket_keepalive (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_socket_keepalive)\
+[proxy_socket_keepalive (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_socket_keepalive)\
+[proxy_ssl (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl)\
+[proxy_ssl_certificate (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate)\
+[proxy_ssl_certificate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate)\
+[proxy_ssl_certificate_cache (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_cache)\
+[proxy_ssl_certificate_cache (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate_cache)\
+[proxy_ssl_certificate_key (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_key)\
+[proxy_ssl_certificate_key (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate_key)\
+[proxy_ssl_ciphers (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_ciphers)\
+[proxy_ssl_ciphers (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_ciphers)\
+[proxy_ssl_conf_command (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_conf_command)\
+[proxy_ssl_conf_command (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_conf_command)\
+[proxy_ssl_crl (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_crl)\
+[proxy_ssl_crl (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_crl)\
+[proxy_ssl_name (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_name)\
+[proxy_ssl_name (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_name)\
+[proxy_ssl_password_file (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_password_file)\
+[proxy_ssl_password_file (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_password_file)\
+[proxy_ssl_protocols (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_protocols)\
+[proxy_ssl_protocols (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_protocols)\
+[proxy_ssl_server_name (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name)\
+[proxy_ssl_server_name (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_server_name)\
+[proxy_ssl_session_reuse (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_session_reuse)\
+[proxy_ssl_session_reuse (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_session_reuse)\
+[proxy_ssl_trusted_certificate (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_trusted_certificate)\
+[proxy_ssl_trusted_certificate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_trusted_certificate)\
+[proxy_ssl_verify (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify)\
+[proxy_ssl_verify (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_verify)\
+[proxy_ssl_verify_depth (ngx_http_proxy_module)](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify_depth)\
+[proxy_ssl_verify_depth (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_verify_depth)\
+[proxy_store](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store)\
+[proxy_store_access](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store_access)\
+[proxy_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_file_write_size)\
+[proxy_temp_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_path)\
+[proxy_timeout (ngx_mail_proxy_module)](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_timeout)\
+[proxy_timeout (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_timeout)\
+[proxy_upload_rate (ngx_stream_proxy_module)](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_upload_rate)\
+[queue](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue)\
+[quic_active_connection_id_limit](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_active_connection_id_limit)\
+[quic_gso](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_gso)\
+[quic_host_key](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_host_key)\
+[quic_retry](http://nginx.org/en/docs/http/ngx_http_v3_module.html#quic_retry)\
+[random (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#random)\
+[random (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#random)\
+[random_index](https://nginx.org/en/docs/http/ngx_http_random_index_module.html#random_index)\
+[read_ahead](https://nginx.org/en/docs/http/ngx_http_core_module.html#read_ahead)\
+[read_timeout](https://nginx.org/en/docs/ngx_mgmt_module.html#read_timeout)\
+[real_ip_header](https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header)\
+[real_ip_recursive](https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive)\
+[recursive_error_pages](https://nginx.org/en/docs/http/ngx_http_core_module.html#recursive_error_pages)\
+[redirect_uri](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#redirect_uri)\
+[referer_hash_bucket_size](https://nginx.org/en/docs/http/ngx_http_referer_module.html#referer_hash_bucket_size)\
+[referer_hash_max_size](https://nginx.org/en/docs/http/ngx_http_referer_module.html#referer_hash_max_size)\
+[request_pool_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#request_pool_size)\
+[reset_timedout_connection](https://nginx.org/en/docs/http/ngx_http_core_module.html#reset_timedout_connection)\
+[resolver (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver)\
+[resolver (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#resolver)\
+[resolver (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver)\
+[resolver (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#resolver)\
+[resolver (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#resolver)\
+[resolver_timeout (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout)\
+[resolver_timeout (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#resolver_timeout)\
+[resolver_timeout (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver_timeout)\
+[resolver_timeout (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#resolver_timeout)\
+[resolver_timeout (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#resolver_timeout)\
+[return (ngx_http_rewrite_module)](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return)\
+[return (ngx_stream_return_module)](https://nginx.org/en/docs/stream/ngx_stream_return_module.html#return)\
+[rewrite](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite)\
+[rewrite_log](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite_log)\
+[root](https://nginx.org/en/docs/http/ngx_http_core_module.html#root)\
+[satisfy](https://nginx.org/en/docs/http/ngx_http_core_module.html#satisfy)\
+[scgi_buffer_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_buffer_size)\
+[scgi_buffering](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_buffering)\
+[scgi_buffers](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_buffers)\
+[scgi_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_busy_buffers_size)\
+[scgi_cache](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache)\
+[scgi_cache_background_update](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_background_update)\
+[scgi_cache_bypass](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_bypass)\
+[scgi_cache_key](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_key)\
+[scgi_cache_lock](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_lock)\
+[scgi_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_lock_age)\
+[scgi_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_lock_timeout)\
+[scgi_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_max_range_offset)\
+[scgi_cache_methods](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_methods)\
+[scgi_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_min_uses)\
+[scgi_cache_path](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_path)\
+[scgi_cache_purge](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_purge)\
+[scgi_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_revalidate)\
+[scgi_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_use_stale)\
+[scgi_cache_valid](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_cache_valid)\
+[scgi_connect_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_connect_timeout)\
+[scgi_force_ranges](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_force_ranges)\
+[scgi_hide_header](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_hide_header)\
+[scgi_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_ignore_client_abort)\
+[scgi_ignore_headers](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_ignore_headers)\
+[scgi_intercept_errors](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_intercept_errors)\
+[scgi_limit_rate](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_limit_rate)\
+[scgi_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_max_temp_file_size)\
+[scgi_next_upstream](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream)\
+[scgi_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_timeout)\
+[scgi_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_next_upstream_tries)\
+[scgi_no_cache](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_no_cache)\
+[scgi_param](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_param)\
+[scgi_pass](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass)\
+[scgi_pass_header](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass_header)\
+[scgi_pass_request_body](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass_request_body)\
+[scgi_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass_request_headers)\
+[scgi_read_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_read_timeout)\
+[scgi_request_buffering](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_request_buffering)\
+[scgi_send_timeout](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_send_timeout)\
+[scgi_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_socket_keepalive)\
+[scgi_store](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_store)\
+[scgi_store_access](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_store_access)\
+[scgi_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_temp_file_write_size)\
+[scgi_temp_path](https://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_temp_path)\
+[scope](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#scope)\
+[secure_link](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link)\
+[secure_link_md5](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link_md5)\
+[secure_link_secret](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link_secret)\
+[send_lowat](https://nginx.org/en/docs/http/ngx_http_core_module.html#send_lowat)\
+[send_timeout (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#send_timeout)\
+[send_timeout (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#send_timeout)\
+[sendfile](https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile)\
+[sendfile_max_chunk](https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile_max_chunk)\
+[server (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#server)\
+[server (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#server)\
+[server (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#server)\
+[server (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#server)\
+[server_name (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name)\
+[server_name (ngx_mail_core_module)](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#server_name)\
+[server_name (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#server_name)\
+[server_name_in_redirect](https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect)\
+[server_tokens](https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens)\
+[session_log](https://nginx.org/en/docs/http/ngx_http_session_log_module.html#session_log)\
+[session_log_format](https://nginx.org/en/docs/http/ngx_http_session_log_module.html#session_log_format)\
+[session_log_zone](https://nginx.org/en/docs/http/ngx_http_session_log_module.html#session_log_zone)\
+[session_store](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#session_store)\
+[session_timeout](https://nginx.org/en/docs/http/ngx_http_oidc_module.html#session_timeout)\
+[set (ngx_http_rewrite_module)](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#set)\
+[set (ngx_stream_set_module)](https://nginx.org/en/docs/stream/ngx_stream_set_module.html#set)\
+[set_real_ip_from (ngx_http_realip_module)](https://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from)\
+[set_real_ip_from (ngx_mail_realip_module)](https://nginx.org/en/docs/mail/ngx_mail_realip_module.html#set_real_ip_from)\
+[set_real_ip_from (ngx_stream_realip_module)](https://nginx.org/en/docs/stream/ngx_stream_realip_module.html#set_real_ip_from)\
+[slice](https://nginx.org/en/docs/http/ngx_http_slice_module.html#slice)\
+[smtp_auth](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_auth)\
+[smtp_capabilities](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_capabilities)\
+[smtp_client_buffer](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_client_buffer)\
+[smtp_greeting_delay](https://nginx.org/en/docs/mail/ngx_mail_smtp_module.html#smtp_greeting_delay)\
+[source_charset](https://nginx.org/en/docs/http/ngx_http_charset_module.html#source_charset)
+[split_clients (ngx_http_split_clients_module)](https://nginx.org/en/docs/http/ngx_http_split_clients_module.html#split_clients)\
+[split_clients (ngx_stream_split_clients_module)](https://nginx.org/en/docs/stream/ngx_stream_split_clients_module.html#split_clients)\
+[ssi](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi)\
+[ssi_last_modified](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_last_modified)\
+[ssi_min_file_chunk](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_min_file_chunk)\
+[ssi_silent_errors](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_silent_errors)\
+[ssi_types](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_types)\
+[ssi_value_length](https://nginx.org/en/docs/http/ngx_http_ssi_module.html#ssi_value_length)\
+[ssl (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl)\
+[ssl (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl)\
+[ssl (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl)\
+[ssl_buffer_size](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_buffer_size)\
+[ssl_certificate (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate)\
+[ssl_certificate (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_certificate)\
+[ssl_certificate (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate)\
+[ssl_certificate (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_certificate)\
+[ssl_certificate_cache (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_cache)\
+[ssl_certificate_cache (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate_cache)\
+[ssl_certificate_key (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_key)\
+[ssl_certificate_key (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_certificate_key)\
+[ssl_certificate_key (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate_key)\
+[ssl_certificate_key (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_certificate_key)\
+[ssl_ciphers (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers)\
+[ssl_ciphers (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_ciphers)\
+[ssl_ciphers (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_ciphers)\
+[ssl_client_certificate (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate)\
+[ssl_client_certificate (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_client_certificate)\
+[ssl_client_certificate (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_client_certificate)\
+[ssl_conf_command (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_conf_command)\
+[ssl_conf_command (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_conf_command)\
+[ssl_conf_command (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_conf_command)\
+[ssl_crl (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_crl)\
+[ssl_crl (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_crl)\
+[ssl_crl (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_crl)\
+[ssl_dhparam (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam)\
+[ssl_dhparam (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_dhparam)\
+[ssl_early_data](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data)\
+[ssl_ecdh_curve (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ecdh_curve)\
+[ssl_ecdh_curve (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_ecdh_curve)\
+[ssl_ecdh_curve (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_ecdh_curve)\
+[ssl_handshake_timeout](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_handshake_timeout)\
+[ssl_name](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_name)\
+[ssl_object_cache_inheritable](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_object_cache_inheritable)\
+[ssl_ocsp](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp)\
+[ssl_ocsp_cache](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp_cache)\
+[ssl_ocsp_responder](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp_responder)\
+[ssl_password_file (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_password_file)\
+[ssl_password_file (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_password_file)\
+[ssl_password_file (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_password_file)\
+[ssl_prefer_server_ciphers (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers)\
+[ssl_prefer_server_ciphers (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_prefer_server_ciphers)\
+[ssl_prefer_server_ciphers (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_prefer_server_ciphers)\
+[ssl_preread (ngx_stream_ssl_preread_module)](http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html#var_ssl_preread_protocol)\
+[ssl_protocols (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols)\
+[ssl_protocols (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_protocols)\
+[ssl_protocols (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_protocols)\
+[ssl_protocols (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_protocols)\
+[ssl_reject_handshake](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_reject_handshake)\
+[ssl_server_name](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_server_name)\
+[ssl_session_cache (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache)\
+[ssl_session_cache (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_cache)\
+[ssl_session_cache (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_cache)\
+[ssl_session_ticket_key (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_ticket_key)\
+[ssl_session_ticket_key (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_ticket_key)\
+[ssl_session_ticket_key (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_ticket_key)\
+[ssl_session_tickets (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_tickets)\
+[ssl_session_tickets (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_tickets)\
+[ssl_session_tickets (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_tickets)\
+[ssl_session_timeout (ngx_http_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_session_timeout)\
+[ssl_session_timeout (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_session_timeout)\
+[ssl_session_timeout (ngx_stream_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_timeout)\
+[ssl_stapling](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling)\
+[ssl_stapling_file](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_file)\
+[ssl_stapling_responder](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_responder)\
+[ssl_stapling_verify](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_verify)\
+[ssl_trusted_certificate (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_trusted_certificate)\
+[ssl_trusted_certificate (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_trusted_certificate)\
+[ssl_trusted_certificate (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_trusted_certificate)\
+[ssl_trusted_certificate (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_trusted_certificate)\
+[ssl_verify](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_verify)\
+[ssl_verify_client (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_client)\
+[ssl_verify_client (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_verify_client)\
+[ssl_verify_client (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_verify_client)\
+[ssl_verify_depth (ngx_http_ssl_module)](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_depth)\
+[ssl_verify_depth (ngx_mail_ssl_module)](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#ssl_verify_depth)\
+[ssl_verify_depth (ngx_stream_ssl_module)](https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_verify_depth)\
+[ssl_verify_depth (ngx_mgmt_module)](https://nginx.org/en/docs/ngx_mgmt_module.html#ssl_verify_depth)\
+[starttls](https://nginx.org/en/docs/mail/ngx_mail_ssl_module.html#starttls)\
+[state (ngx_http_upstream_module)](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#state)\
+[status_zone (ngx_http_api_module)](https://nginx.org/en/docs/http/ngx_http_api_module.html#status_zone)\
+[sticky](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky)\
+[sticky_cookie_insert](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky_cookie_insert)\
+[stream (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#stream)\
+[stub_status](https://nginx.org/en/docs/http/ngx_http_stub_status_module.html#stub_status)\
+[sub_filter](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter)\
+[sub_filter_last_modified](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter_last_modified)\
+[sub_filter_once](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter_once)\
+[sub_filter_types](https://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter_types)\
+[subrequest_output_buffer_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#subrequest_output_buffer_size)\
+[tcp_nodelay (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay)\
+[tcp_nodelay (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#tcp_nodelay)\
+[tcp_nopush](https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nopush)\
+[thread_pool](https://nginx.org/en/docs/ngx_core_module.html#thread_pool)\
+[timeout](https://nginx.org/en/docs/mail/ngx_mail_core_module.html#timeout)\
+[timer_resolution](https://nginx.org/en/docs/ngx_core_module.html#timer_resolution)\
+[try_files](https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files)\
+[types](https://nginx.org/en/docs/http/ngx_http_core_module.html#types)\
+[types_hash_bucket_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_bucket_size)\
+[types_hash_max_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_max_size)\
+[underscores_in_headers](https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers)\
+[uninitialized_variable_warn](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#uninitialized_variable_warn)\
+[upstream (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream)\
+[upstream (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#upstream)\
+[upstream_conf](https://nginx.org/en/docs/http/ngx_http_upstream_conf_module.html#upstream_conf)\
+[usage_report](https://nginx.org/en/docs/ngx_mgmt_module.html#usage_report)\
+[use](https://nginx.org/en/docs/ngx_core_module.html#use)\
+[user](https://nginx.org/en/docs/ngx_core_module.html#user)\
+[userid](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid)\
+[userid_domain](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_domain)\
+[userid_expires](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_expires)\
+[userid_flags](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_flags)\
+[userid_mark](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_mark)\
+[userid_name](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_name)\
+[userid_p3p](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_p3p)\
+[userid_path](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_path)\
+[userid_service](https://nginx.org/en/docs/http/ngx_http_userid_module.html#userid_service)\
+[uuid_file](https://nginx.org/en/docs/ngx_mgmt_module.html#uuid_file)\
+[uwsgi_buffer_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_buffer_size)\
+[uwsgi_buffering](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_buffering)\
+[uwsgi_buffers](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_buffers)\
+[uwsgi_busy_buffers_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_busy_buffers_size)\
+[uwsgi_cache](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache)\
+[uwsgi_cache_background_update](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_background_update)\
+[uwsgi_cache_bypass](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_bypass)\
+[uwsgi_cache_key](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_key)\
+[uwsgi_cache_lock](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_lock)\
+[uwsgi_cache_lock_age](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_lock_age)\
+[uwsgi_cache_lock_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_lock_timeout)\
+[uwsgi_cache_max_range_offset](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_max_range_offset)\
+[uwsgi_cache_methods](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_methods)\
+[uwsgi_cache_min_uses](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_min_uses)\
+[uwsgi_cache_path](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_path)\
+[uwsgi_cache_purge](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_purge)\
+[uwsgi_cache_revalidate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_revalidate)\
+[uwsgi_cache_use_stale](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_use_stale)\
+[uwsgi_cache_valid](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid)\
+[uwsgi_connect_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_connect_timeout)\
+[uwsgi_force_ranges](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_force_ranges)\
+[uwsgi_hide_header](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_hide_header)\
+[uwsgi_ignore_client_abort](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ignore_client_abort)\
+[uwsgi_ignore_headers](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ignore_headers)\
+[uwsgi_intercept_errors](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_intercept_errors)\
+[uwsgi_limit_rate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_limit_rate)\
+[uwsgi_max_temp_file_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_max_temp_file_size)\
+[uwsgi_modifier1](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_modifier1)\
+[uwsgi_modifier2](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_modifier2)\
+[uwsgi_next_upstream](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream)\
+[uwsgi_next_upstream_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_timeout)\
+[uwsgi_next_upstream_tries](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream_tries)\
+[uwsgi_no_cache](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_no_cache)\
+[uwsgi_param](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_param)\
+[uwsgi_pass](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass)\
+[uwsgi_pass_header](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass_header)\
+[uwsgi_pass_request_body](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass_request_body)\
+[uwsgi_pass_request_headers](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass_request_headers)\
+[uwsgi_read_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_read_timeout)\
+[uwsgi_request_buffering](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_request_buffering)\
+[uwsgi_send_timeout](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_send_timeout)\
+[uwsgi_socket_keepalive](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_socket_keepalive)\
+[uwsgi_ssl_certificate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate)\
+[uwsgi_ssl_certificate_cache](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate_cache)\
+[uwsgi_ssl_certificate_key](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate_key)\
+[uwsgi_ssl_conf_command](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_conf_command)\
+[uwsgi_ssl_crl](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_crl)\
+[uwsgi_ssl_name](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_name)\
+[uwsgi_ssl_password_file](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_password_file)\
+[uwsgi_ssl_protocols](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_protocols)\
+[uwsgi_ssl_server_name](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_server_name)\
+[uwsgi_ssl_session_reuse](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_session_reuse)\
+[uwsgi_ssl_trusted_certificate](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_trusted_certificate)\
+[uwsgi_ssl_verify](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_verify)\
+[uwsgi_ssl_verify_depth](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_verify_depth)\
+[uwsgi_store](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_store)\
+[uwsgi_store_access](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_store_access)\
+[uwsgi_temp_file_write_size](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_temp_file_write_size)\
+[uwsgi_temp_path](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_temp_path)\
+[valid_referers](https://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers)\
+[variables_hash_bucket_size (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_bucket_size)\
+[variables_hash_bucket_size (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_bucket_size)\
+[variables_hash_max_size (ngx_http_core_module)](https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_max_size)\
+[variables_hash_max_size (ngx_stream_core_module)](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_max_size)\
+[worker_aio_requests](https://nginx.org/en/docs/ngx_core_module.html#worker_aio_requests)\
+[worker_connections](https://nginx.org/en/docs/ngx_core_module.html#worker_connections)\
+[worker_cpu_affinity](https://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity)\
+[worker_priority](https://nginx.org/en/docs/ngx_core_module.html#worker_priority)\
+[worker_processes](https://nginx.org/en/docs/ngx_core_module.html#worker_processes)\
+[worker_rlimit_core](https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_core)\
+[worker_rlimit_nofile](https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile)\
+[worker_shutdown_timeout](https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout)\
+[working_directory](https://nginx.org/en/docs/ngx_core_module.html#working_directory)\
+[xclient](https://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#xclient)\
+[xml_entities](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xml_entities)\
+[xslt_last_modified](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_last_modified)\
+[xslt_param](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_param)\
+[xslt_string_param](http://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_string_param)\
+[xslt_stylesheet](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_stylesheet)\
+[xslt_types](https://nginx.org/en/docs/http/ngx_http_xslt_module.html#xslt_types)\
+[zone (ngx_http_upstream_module)](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone)\
+[zone (ngx_stream_upstream_module)](https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#zone)\
+
+{{< /details >}}
diff --git a/content/f5ads/overview/nginx-configuration/nginx-configuration-console.md b/content/f5ads/overview/nginx-configuration/nginx-configuration-console.md
new file mode 100644
index 0000000000..9fb8fe3144
--- /dev/null
+++ b/content/f5ads/overview/nginx-configuration/nginx-configuration-console.md
@@ -0,0 +1,33 @@
+---
+title: Manage configs using the Console
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/nginx-configuration/nginx-configuration-console/
+canonical: /f5ads/overview/nginx-configuration/nginx-configuration-console/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service
+contentVars:
+ product: ADS
+---
+
+You can apply an NGINX configuration to your F5 Application Delivery Service deployment using the F5 ADS Console.
+
+## Access the F5 ADS Console
+
+{{< include "/f5ads/access-console.md" >}}
+
+## Create or import an NGINX configuration
+
+{{< include "/f5ads/create-or-import-nginx-config.md" >}}
+
+## Update an NGINX configuration
+
+{{< include "/f5ads/update-nginx-config.md" >}}
+
+## Delete NGINX configuration files
+
+1. On the left menu, select **Configurations**.
+1. On the list of configurations, select the ellipsis (three dots) icon next to the configuration you want to delete.
+1. Select **Delete**.
+1. Confirm that you want to delete the configuration.
diff --git a/content/f5ads/overview/ssl-tls-certificates/_index.md b/content/f5ads/overview/ssl-tls-certificates/_index.md
new file mode 100644
index 0000000000..75668d0f48
--- /dev/null
+++ b/content/f5ads/overview/ssl-tls-certificates/_index.md
@@ -0,0 +1,6 @@
+---
+title: Manage SSL/TLS certificates
+weight: 400
+url: /f5ads/overview/ssl-tls-certificates/
+canonical: /f5ads/overview/ssl-tls-certificates/
+---
diff --git a/content/f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console.md b/content/f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
new file mode 100644
index 0000000000..6d7431b028
--- /dev/null
+++ b/content/f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
@@ -0,0 +1,72 @@
+---
+title: Add certificates using the Console
+weight: 100
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console/
+canonical: /f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service
+contentVars:
+ product: ADS
+---
+
+You can manage SSL/TLS certificates for F5 Application Delivery Service using the F5 ADS Console.
+
+## Add an SSL/TLS certificate to F5 ADS
+
+- Select **Certificates** in the left menu.
+- Select {{< icon "plus">}} **Add Certificate**.
+- In the **Add Certificate** panel, provide the required information:
+ {{< table >}}
+
+ | Field | Description |
+ |---------------------------- | ---------------------------- |
+ | Name | A unique name for the certificate. |
+ | Type | Select the type of certificate you are adding: SSL certificate and key, or CA certificate bundle. |
+ | Certificate Import Options | Choose how you want to import the certificate. Enter the certificate text or upload a file. |
+
+ {{< /table >}}
+
+- Repeat the same steps to add as many certificates as needed.
+
+### Use a certificate in an NGINX configuration
+
+To use a certificate in an NGINX configuration, follow these steps:
+
+- Select **Configurations** in the left menu.
+- Select the ellipsis (three dots) next to the configuration you want to edit, and select **Edit**.
+- Select **Continue** to open the configuration editor.
+- In your configuration, select {{< icon "plus">}} **Add File** and either choose to use an existing certificate or add a new one.
+ - If you want to add a new certificate, select **New SSL Certificate or CA Bundle** and follow the steps mentioned in [Add an SSL/TLS certificate to F5 ADS](#add-an-ssltls-certificate-to-f5-ads).
+ - If you want to use an existing certificate, select **Existing SSL Certificate or CA Bundle** and use the menu to choose a certificate from the list of certificates you have already added.
+- Provide the required path information:
+ {{< table >}}
+
+ | Field | Description | Note |
+ |---------------------------- | ---------------------------- | ---- |
+ | Certificate File Path | This path can match one or more ssl_certificate directive file arguments in your NGINX configuration. | The certificate path must be unique within the same deployment. |
+ | Key File Path | This path can match one or more ssl_certificate_key directive file arguments in your NGINX configuration. | The key path must be unique within the same deployment. See the [NGINX Filesystem Restrictions table]({{< ref "/f5ads/overview/nginx-configuration/configuration-rules.md#nginx-filesystem-restrictions" >}}) for the allowed directories the file can be written to. |
+
+ {{< /table >}}
+- Update the NGINX configuration to reference the certificate you just added by the path value.
+- Select **Continue** and then **Save** to save your changes.
+
+### Edit an SSL/TLS certificate
+
+{{< include "/f5ads/update-nginx-config.md" >}}
+
+### Delete an SSL/TLS certificate
+
+- Select **Certificates** in the left menu.
+- On the list of certificates, select the ellipsis (three dots) icon next to the certificate you want to delete.
+- Select **Delete**.
+- Confirm that you want to delete the certificate.
+
+{{< call-out class="warning" >}}Deleting a TLS/SSL certificate currently used by an F5 ADS deployment will cause an error.{{< /call-out >}}
+
+## Add certificates via aux files
+
+You can upload certificate and key files as part of your NGINX configuration filesystem by selecting **Add File** > **Upload Auxiliary / Other File** in the [F5 ADS Console configuration editor]({{< ref "/f5ads/overview/nginx-configuration/nginx-configuration-console.md" >}}), then reference them with the `ssl_certificate` and `ssl_certificate_key` directives.
+
+{{< call-out class="warning" title="Warning" >}}Storing certificates, private keys, or any sensitive data in aux files is not recommended for security reasons. Use this method only when the other certificate management approaches are not suitable.{{< /call-out >}}
diff --git a/content/f5ads/overview/user-login.md b/content/f5ads/overview/user-login.md
new file mode 100644
index 0000000000..a12d933d1e
--- /dev/null
+++ b/content/f5ads/overview/user-login.md
@@ -0,0 +1,77 @@
+---
+title: User login
+weight: 350
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/overview/user-login/
+canonical: /f5ads/overview/user-login/
+f5-product: F5 Application Delivery Service
+f5-content-type: how-to
+f5-keywords: "login,authentication"
+f5-summary: >
+ Use this guide to sign up to F5 Application Delivery Service using an email address and password. The guide includes instructions on how to reset a password and how to grant admin consent for users of an Entra tenant to use the F5 Social Login Entra app.
+f5-audience: operator
+---
+
+## Overview
+
+F5 Application Delivery Service authenticates users through three login methods:
+
+- Microsoft social login
+- Google social login
+- Email and password
+
+If a user signs in through Microsoft social or Google social, they interact with [Google authentication](https://docs.cloud.google.com/architecture/identity/overview-google-authentication) or the [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/v2-overview) to establish their identity. Alternatively, the user can register an email address and password directly with our service.
+
+## Sign up with email and password
+
+If a user wishes to register with an email address and password, they must follow these steps:
+
+1. Select **Sign In** on the main console page.
+1. On the login page, select **Sign up** in the email address input form.
+1. Enter a valid email address and select **Continue**.
+1. Check your email account for a six-digit verification code.
+1. Enter the verification code in the browser.
+1. Choose a password and select **Continue**.
+1. Authenticate with our service using the email and password you have chosen.
+
+## Password reset
+
+If you want to reset your password, follow these steps:
+
+1. Select **Sign In** on the main console page.
+1. On the login page, enter email address and select **Continue**.
+1. On the password entry page, select **Reset password**.
+1. On the next page, confirm the email address and select **Continue**.
+1. Check your email account for a six-digit verification code.
+1. Enter the verification code in the browser.
+1. Enter a new password and then select **Reset password**.
+1. Use the new password to authenticate with our service.
+
+## Password standards
+
+A valid password must contain:
+
+- At least 14 characters
+- No more than 2 identical characters in a row
+- At least one special character (!@#$%^&*)
+- At least one lower case character (a-z), one upper case character (A-Z) and one number (0-9)
+
+## Entra configuration for Microsoft social login
+
+Depending on the configuration of an Entra tenant, administrators may need to follow these steps before users can log in with F5's Entra app and the Microsoft identity platform.
+
+1. Sign in to the service on the main console page
+1. Select **Continue with Microsoft**
+1. After signing in with Microsoft, on the **Permissions requested** prompt for the **F5 - Inc Social Login** Entra app, select **Accept**
+1. At this point, you can abort the login to F5 ADS if you wish
+1. Go to the Azure portal and go to **Entra** -> **Enterprise Applications**
+1. Select the **F5 Inc - Social Login** Entra app
+1. Under **Permissions**, select **Grant admin consent**
+1. Users of your Entra tenant should now be able to use Microsoft social login to authenticate with F5 ADS
+
+See [Entra guidance on granting admin consent](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal) for further details.
+
+- The app ID (client ID) of the **F5 Inc - Social Login** Entra app is `4aef7a9d-810c-4746-8a6a-6c5d43e4e5f2`.
+- The tenant ID is `dd3dfd2f-6a3b-40d1-9be0-bf8327d81c50`.
+- The app requires the following Microsoft Graph API permissions: `email`, `openid`, `profile` and `User.Read`.
\ No newline at end of file
diff --git a/content/f5ads/support.md b/content/f5ads/support.md
new file mode 100644
index 0000000000..b757e6d74d
--- /dev/null
+++ b/content/f5ads/support.md
@@ -0,0 +1,39 @@
+---
+title: Get help
+weight: 9999
+toc: true
+f5-docs: DOCS-000
+url: /f5ads/support/
+f5-content-type: how-to
+f5-product: F5 Application Delivery Service
+contentVars:
+ product: ADS
+---
+
+To contact support about F5 Application Delivery Service:
+
+1. Go to the [MyF5 portal](https://my.f5.com) and log in with your F5 account.
+
+1. Go to the **Support** section and select **Create a Case**.
+
+1. Fill out the **Subject** and **Description** sections, and include the following details about the specific issue, and then select **Next**:
+
+ 1. Identifying Information:
+ - Deployment identifiers (Object ID and name)
+ - Organization identifiers (Object ID and name)
+ 1. Issue Details:
+ - A detailed description of the issue
+ - The specific resources involved (for example: deployment, configuration, certificate, and so on)
+ - The operation you were performing when the issue occurred (for example: subscribing from cloud marketplace, creating a deployment, uploading a configuration, adding a certificate, and so on)
+ - Any error messages or request IDs displayed
+ - The time when the issue occurred
+
+1. Select **NGINX Products** as the product family and **F5 ADS** as the product module, and then select **Next**.
+
+1. Enter the following required fields, at a minimum, and then select **Next**:
+ - **Reason for contact**
+ - **Subscription ID** (Select **No subscription available** or your F5 subscription ID if you have a private offer.)
+ - **Cloud Provider**
+ - **Assign a priority**
+
+1. Complete the fields in the **Contact Information** section for your case and then select **Submit**.
diff --git a/content/includes/f5ads/access-console.md b/content/includes/f5ads/access-console.md
new file mode 100644
index 0000000000..1de8d818d9
--- /dev/null
+++ b/content/includes/f5ads/access-console.md
@@ -0,0 +1,14 @@
+---
+f5-product: F5 Application Delivery Service
+f5-files:
+- content/f5ads/overview/nginx-configuration/nginx-configuration-console.md
+- content/f5ads/overview/manage-users-organizations.md
+- content/f5ads/overview/app-protect/enable-waf.md
+- content/f5ads/overview/app-protect/disable-waf.md
+- content/f5ads/aws/deploy/create-deployment/deploy-console.md
+
+---
+
+- Open the [F5 ADS Console](https://console.nginxaas.net/).
+- Log in with your preferred identity provider.
+- Select the Geography you want to work in.
diff --git a/content/includes/nginxaas/aws/supported-regions.md b/content/includes/f5ads/aws/supported-regions.md
similarity index 66%
rename from content/includes/nginxaas/aws/supported-regions.md
rename to content/includes/f5ads/aws/supported-regions.md
index 4940f9f5a0..20f59bb96a 100644
--- a/content/includes/nginxaas/aws/supported-regions.md
+++ b/content/includes/f5ads/aws/supported-regions.md
@@ -1,17 +1,19 @@
---
f5-docs: DOCS-000
f5-files:
-- content/nginxaas/aws/overview.md
-f5-product: NGINXaaS for AWS
+- content/f5ads/aws/overview.md
+f5-product: F5 Application Delivery Service for AWS
---
-NGINXaaS for AWS is supported in the following regions per geography:
+F5 ADS for AWS supports the following regions, organized by geography.
{{< table "table" >}}
- |NGINXaaS Geography | AWS Regions |
+
+ | Geography | AWS regions |
|-----------|---------|
| US | us-east-1, us-east-2, us-west-1, us-west-2 |
| EU | eu-west-1, eu-west-2, eu-west-3, eu-central-1, eu-north-1 |
| APAC | ap-northeast-1, ap-northeast-2, ap-south-1, ap-south-2, ap-southeast-1, ap-southeast-4 |
| CA | ca-central-1, ca-west-1 |
+
{{< /table >}}
diff --git a/content/includes/f5ads/create-or-import-nginx-config.md b/content/includes/f5ads/create-or-import-nginx-config.md
new file mode 100644
index 0000000000..b0bf5548e6
--- /dev/null
+++ b/content/includes/f5ads/create-or-import-nginx-config.md
@@ -0,0 +1,30 @@
+---
+f5-product: F5 Application Delivery Service
+f5-files:
+- content/f5ads/overview/nginx-configuration/nginx-configuration-console.md
+- content/f5ads/aws/deploy/create-deployment/deploy-console.md
+- content/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md
+---
+
+In the F5 ADS Console,
+
+1. On the left menu, select **Configurations**.
+1. Select **Add Configuration** to add a new NGINX configuration.
+1. You can either create a new configuration from scratch or copy an existing configuration:
+
+ - Select **New configuration** to create a new config.
+ - Provide a name for your configuration and an optional description.
+ - Select to start with the "F5 Application Delivery Service Default" (a basic NGINX setup) or an empty configuration file.
+ - Select **Next**.
+ - Select **Copy existing configuration** to use one of the existing configuration files in your account as template.
+ - Provide a name for your configuration and an optional description.
+ - Use the **Choose configuration to copy** list to select the configuration file you want to copy.
+ - Use the **Choose configuration version to copy** list to select the version of the configuration file you want to copy.
+ - Select **Next**.
+
+1. Modify the configuration file as needed.
+ - Select **Add File** to stage new content such as certificates, configuration files, or upload non-configuration files.
+ - Select **File Actions** to rename, move, delete, or copy files as you build out the overall configuration filesystem.
+ - Warnings, errors, and recommendations appear in the editor as you modify your configuration content.
+ - You can hover over an NGINX configuration directive to view helpful descriptions and usage details.
+1. Select **Save**.
diff --git a/content/includes/f5ads/logging-config-access-logs.md b/content/includes/f5ads/logging-config-access-logs.md
new file mode 100644
index 0000000000..fbe2949601
--- /dev/null
+++ b/content/includes/f5ads/logging-config-access-logs.md
@@ -0,0 +1,41 @@
+---
+f5-product: F5 Application Delivery Service
+f5-files:
+- content/f5ads/aws/monitoring/enable-nginx-logs.md
+---
+
+NGINX access logs are disabled by default. You can enable access logs by adding **access_log** directives to your NGINX configuration to specify the location of the logs and formats. The log path should always be configured to be inside **/var/log/nginx**.
+
+```nginx
+http {
+ log_format myfmt '$remote_addr - $remote_user [$time_local] '
+ '"$request" $status $body_bytes_sent '
+ '"$http_referer" "$http_user_agent" "$gzip_ratio"';
+
+ access_log /var/log/nginx/nginx-access.log myfmt;
+ # ...
+}
+```
+
+{{< call-out class="note" >}} The **$time_local** variable includes the date and time for each log. It helps with ordering logs after export. {{< /call-out >}}
+
+To explicitly disable access logs, apply the following config:
+
+```nginx
+http {
+ access_log off;
+}
+```
+
+or
+
+```nginx
+http {
+ access_log /dev/null;
+}
+```
+
+To learn more about how to specify `access_log` in different configuration levels and their effect, see [access_log](https://nginx.org/en/docs/http/ngx_http_log_module.html#access_log)
+
+{{< call-out class="warning" >}}Keep NGINX logs in the **/var/log/nginx** directory. Otherwise, you may lose data from your logs.
+{{< /call-out >}}
diff --git a/content/includes/f5ads/logging-config-error-logs.md b/content/includes/f5ads/logging-config-error-logs.md
new file mode 100644
index 0000000000..60478c1e7f
--- /dev/null
+++ b/content/includes/f5ads/logging-config-error-logs.md
@@ -0,0 +1,21 @@
+---
+f5-product: F5 Application Delivery Service
+f5-files:
+- content/f5ads/aws/monitoring/enable-nginx-logs.md
+---
+
+NGINX error logs are disabled by default. You can enable error logs by adding **error_log** directives to your NGINX configuration to specify the location of the logs and formats. The log path should always be configured to be inside **/var/log/nginx**.
+
+While you should configure log files in the **/var/log/nginx** directory, you can change the filename and severity level. For example, the following line in the NGINX configuration sends errors to the `nginx-error.log` file, and limits messages to a severity level of **emerg**:
+
+```nginx
+error_log /var/log/nginx/nginx-error.log emerg;
+```
+
+Alternatively, you can disable error logs completely with the following line:
+
+```nginx
+error_log /dev/null;
+```
+
+To learn more about how to specify `error_log` in different configuration levels, see the documentation of the [error_log](https://nginx.org/en/docs/ngx_core_module.html?#error_log) directive.
diff --git a/content/includes/f5ads/logging-config-security-logs.md b/content/includes/f5ads/logging-config-security-logs.md
new file mode 100644
index 0000000000..2c8ec8862e
--- /dev/null
+++ b/content/includes/f5ads/logging-config-security-logs.md
@@ -0,0 +1,17 @@
+---
+f5-product: F5 Application Delivery Service
+f5-files:
+- content/f5ads/aws/monitoring/enable-nginx-logs.md
+---
+
+You can enable security logs by adding **app_protect_security_log** directives to your NGINX configuration to specify the location of the logs and logging formats. The log path should always be configured under **/var/log/app_protect**.
+
+```nginx
+app_protect_security_log_enable on;
+app_protect_security_log log_default /var/log/app_protect/security.log;
+```
+
+F5 ADS does not support custom logging profiles and is limited to the [default logging profiles]({{< ref "/waf/logging/logs-overview.md#default-logging-profile-bundles" >}}).
+
+{{< call-out class="warning" >}}WAF logs should always be stored under the **/var/log/app_protect** directory. You may lose logging data if you choose any other log paths.
+{{< /call-out >}}
diff --git a/content/includes/f5ads/metrics-catalog.md b/content/includes/f5ads/metrics-catalog.md
new file mode 100644
index 0000000000..d6bc3c56be
--- /dev/null
+++ b/content/includes/f5ads/metrics-catalog.md
@@ -0,0 +1,235 @@
+---
+f5-product: F5 Application Delivery Service
+f5-files:
+- content/f5ads/aws/monitoring/metrics-catalog.md
+---
+
+## Metrics
+
+- [NGINX config statistics](#nginx-config-statistics)
+- [NGINX connections statistics](#nginx-connections-statistics)
+- [NGINX requests and response statistics](#nginx-requests-and-response-statistics)
+- [NGINX SSL statistics](#nginx-ssl-statistics)
+- [NGINX cache statistics](#nginx-cache-statistics)
+- [NGINX memory statistics](#nginx-memory-statistics)
+- [NGINX upstream statistics](#nginx-upstream-statistics)
+- [NGINX stream statistics](#nginx-stream-statistics)
+
+### NGINX config statistics
+
+All F5 ADS deployments collect these metrics automatically. No additional NGINX configuration is required.
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.config.reloads | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location | count | The total number of NGINX configuration reloads since NGINX was last started. | deployment |
+
+{{< /table >}}
+
+### NGINX connections statistics
+
+All F5 ADS deployments collect these metrics automatically. No additional NGINX configuration is required.
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.http.connections | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_connections_outcome | count | The total number of client connections since NGINX was last started, categorized by outcome (accepted, active, dropped, idle). | deployment |
+| nginx.http.connection.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_connections_outcome | gauge | The current number of client connections, categorized by outcome (accepted, active, dropped, idle). | deployment |
+
+{{< /table >}}
+
+### NGINX requests and response statistics
+
+To collect these metrics, configure the `status_zone` directive in your NGINX configuration. Add a `status_zone` directive to your `server` or `location` blocks to enable zone-specific request and response tracking.
+
+Example:
+
+```nginx
+server {
+ listen 80;
+ status_zone my_server_zone;
+
+ location / {
+ proxy_pass http://backend;
+ }
+}
+```
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.http.request.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | gauge | The total number of client requests received since the last collection interval. | zone |
+| nginx.http.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of client requests received since NGINX was last started or reloaded. | zone |
+| nginx.http.responses | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of HTTP responses sent to clients since NGINX was last started or reloaded. | zone |
+| nginx.http.response.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name, nginx_zone_type | gauge | The total number of HTTP responses sent to clients since the last collection interval, grouped by status code range. | zone |
+| nginx.http.response.status | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name, nginx_zone_type | count | The total number of responses since NGINX was last started or reloaded, grouped by status code range. | zone |
+| nginx.http.request.processing.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | gauge | The number of client requests that are currently being processed. | zone |
+| nginx.http.request.discarded | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of requests completed without sending a response. | zone |
+| nginx.http.request.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name, nginx_zone_type | count | The total number of HTTP bytes transferred (receive/transmit). | zone |
+| nginx.http.limit_conn.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_limit_conn_outcome, nginx_zone_name | count | The total number of connections to an endpoint with a limit_conn directive. | zone |
+| nginx.http.limit_req.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_limit_req_outcome, nginx_zone_name | count | The total number of requests to an endpoint with a limit_req directive. | zone |
+
+{{< /table >}}
+
+### NGINX SSL statistics
+
+NGINX automatically collects these metrics when you configure SSL/TLS in your NGINX deployment. To collect SSL metrics, configure SSL certificates and enable HTTPS listeners in your NGINX configuration.
+
+Example:
+
+```nginx
+server {
+ listen 443 ssl;
+ ssl_certificate /path/to/cert.pem;
+ ssl_certificate_key /path/to/key.pem;
+}
+```
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.ssl.handshakes | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_ssl_status, nginx_ssl_handshake_reason | count | The total number of SSL handshakes (successful and failed). | deployment |
+| nginx.ssl.certificate.verify_failures | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_ssl_verify_failure_reason | count | The total number of SSL certificate verification failures, categorized by reason. | deployment |
+
+{{< /table >}}
+
+### NGINX cache statistics
+
+To collect cache metrics, configure caching in your NGINX configuration using the `proxy_cache_path` and `proxy_cache` directives.
+
+Example:
+
+```nginx
+http {
+ proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
+
+ server {
+ location / {
+ proxy_cache my_cache;
+ proxy_pass http://backend;
+ }
+ }
+}
+```
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.cache.bytes_read | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_outcome, nginx_cache_name | count | The total number of bytes read from the cache or proxied server. | cache |
+| nginx.cache.responses | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_outcome, nginx_cache_name | count | The total number of responses read from the cache or proxied server. | cache |
+| nginx.cache.memory.limit | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_name | gauge | The limit on the maximum size of the cache specified in the configuration. | cache |
+| nginx.cache.memory.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_name | gauge | The current size of the cache. | cache |
+
+{{< /table >}}
+
+### NGINX memory statistics
+
+These metrics track shared memory zone usage. NGINX automatically collects memory statistics when you configure zones using the `status_zone` directive or other directives that create shared memory zones.
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.slab.page.free | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The current number of free memory pages in the shared memory zone. | zone |
+| nginx.slab.page.limit | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The total number of memory pages (free and used) in the shared memory zone. | zone |
+| nginx.slab.page.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The current number of used memory pages in the shared memory zone. | zone |
+| nginx.slab.page.utilization | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The current percentage of used memory pages in the shared memory zone. | zone |
+| nginx.slab.slot.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_slab_slot_limit, nginx_zone_name | gauge | The current number of used memory slots. | zone |
+| nginx.slab.slot.free | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_slab_slot_limit, nginx_zone_name | gauge | The current number of free memory slots. | zone |
+| nginx.slab.slot.allocations | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_slab_slot_limit, nginx_slab_slot_allocation_result, nginx_zone_name | count | The number of attempts to allocate memory of specified size. | zone |
+
+{{< /table >}}
+
+### NGINX upstream statistics
+
+To collect upstream metrics, define `upstream` blocks in your NGINX configuration and reference them in your proxy configuration. Add `zone` directives to track upstream statistics.
+
+Example:
+
+```nginx
+upstream backend {
+ zone backend_zone 64k;
+ server 10.0.0.1:8080;
+ server 10.0.0.2:8080;
+}
+
+server {
+ status_zone my_server;
+ location / {
+ proxy_pass http://backend;
+ }
+}
+```
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.http.upstream.keepalive.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of idle keepalive connections per HTTP upstream. | upstream |
+| nginx.http.upstream.peer.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of bytes transferred per HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.connection.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average number of active connections per HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name | gauge | The current count of peers on the HTTP upstream grouped by state. | upstream |
+| nginx.http.upstream.peer.fails | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of unsuccessful attempts to communicate with the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.header.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to get the response header from the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.health_checks | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_health_check, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of health check requests made to an HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of client requests forwarded to the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.response.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to get the full response from the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.responses | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of responses obtained from the HTTP upstream peer grouped by status range. | peer |
+| nginx.http.upstream.peer.unavailables | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of times the server became unavailable for client requests. | peer |
+| nginx.http.upstream.peer.state | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | Current state of an upstream peer in deployment (1 if deployed, 0 if not). | peer |
+| nginx.http.upstream.queue.limit | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The maximum number of requests that can be in the queue at the same time. | upstream |
+| nginx.http.upstream.queue.overflows | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | count | The total number of requests rejected due to the queue overflow. | upstream |
+| nginx.http.upstream.queue.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of requests in the queue. | upstream |
+| nginx.http.upstream.zombie.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of upstream peers removed from the group but still processing active client requests. | upstream |
+
+{{< /table >}}
+
+### NGINX stream statistics
+
+To collect stream metrics, configure the `stream` context in your NGINX configuration and add `status_zone` directives to your stream servers.
+
+Example:
+
+```nginx
+stream {
+ server {
+ listen 12345;
+ status_zone tcp_server;
+ proxy_pass backend_stream;
+ }
+
+ upstream backend_stream {
+ zone stream_backend 64k;
+ server 10.0.0.1:12345;
+ }
+}
+```
+
+{{< table >}}
+
+| Metric | Labels | Type | Description | Roll-up per |
+| ------ | ------ | ---- | ----------- | ------------|
+| nginx.stream.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name | count | The total number of Stream bytes transferred (receive/transmit). | zone |
+| nginx.stream.connection.accepted | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | count | The total number of connections accepted from clients. | zone |
+| nginx.stream.connection.discarded | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | count | Total number of connections completed without creating a session. | zone |
+| nginx.stream.connection.processing.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The number of client connections that are currently being processed. | zone |
+| nginx.stream.session.status | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name | count | The total number of completed sessions grouped by status range. | zone |
+| nginx.stream.upstream.peer.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of Stream upstream peer bytes transferred. | peer |
+| nginx.stream.upstream.peer.connection.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The current number of Stream upstream peer connections. | peer |
+| nginx.stream.upstream.peer.connection.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to connect to the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.connections | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of client connections forwarded to this stream upstream peer. | peer |
+| nginx.stream.upstream.peer.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name | gauge | The current number of stream upstream peers grouped by state. | upstream |
+| nginx.stream.upstream.peer.fails | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address | count | The total number of unsuccessful attempts to communicate with the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.health_checks | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_health_check, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of health check requests made to the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.response.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to receive the last byte of data for the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.ttfb.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to receive the first byte of data for the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.unavailables | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | How many times the server became unavailable for client connections due to the number of unsuccessful attempts reaching the max_fails threshold. | peer |
+| nginx.stream.upstream.peer.state | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | Current state of upstream peers in deployment (1 if any peer matches state, 0 if none). | peer |
+| nginx.stream.upstream.zombie.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of peers removed from the group but still processing active client connections. | upstream |
+
+{{< /table >}}
diff --git a/content/includes/f5ads/update-nginx-config.md b/content/includes/f5ads/update-nginx-config.md
new file mode 100644
index 0000000000..b29805c7cc
--- /dev/null
+++ b/content/includes/f5ads/update-nginx-config.md
@@ -0,0 +1,22 @@
+---
+f5-product: F5 Application Delivery Service
+f5-files:
+- content/f5ads/overview/nginx-configuration/nginx-configuration-console.md
+- content/f5ads/aws/deploy/nginx-configuration/nginx-configuration-console.md
+- content/f5ads/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
+---
+
+1. On the left menu, select **Configurations**.
+1. On the list of configurations, select the ellipsis (three dots) icon next to the configuration you want to update.
+1. Select **Edit**.
+1. Update the "Description" field as needed and select **Next**.
+1. Modify the configuration file(s) as needed.
+ - Select a config file in the file tree to update its content.
+ - Select **Add File** to stage new content such as certificates, configuration files, or upload non-configuration files.
+ - Select **File Actions** to rename, move, delete, or copy files as you build out the overall configuration filesystem.
+ - Warnings, errors, and recommendations appear in the editor as you modify your configuration content.
+ - You can hover over an NGINX configuration directive to view helpful descriptions and usage details.
+1. Select **Next** when you have completed your changes.
+1. Review the changes using the "Inline" or "Side-by-side" views and select **Save**.
+
+You will see a notification confirming that the configuration was updated successfully, and a new config version will be available to apply to your F5 ADS deployments.
diff --git a/content/includes/nginxaas/access-console.md b/content/includes/nginxaas/access-console.md
index 8c53586a10..f6e1950c0e 100644
--- a/content/includes/nginxaas/access-console.md
+++ b/content/includes/nginxaas/access-console.md
@@ -3,9 +3,7 @@ f5-product: F5 NGINXaaS
f5-files:
- content/nginxaas/overview/manage-users-organizations.md
- content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md
-- content/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md
- content/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md
-- content/nginxaas/aws/deploy/create-deployment/deploy-console.md
- content/nginxaas/google/deploy/create-deployment/deploy-console.md
---
diff --git a/content/includes/nginxaas/create-or-import-nginx-config.md b/content/includes/nginxaas/create-or-import-nginx-config.md
index 900ebe95c3..0e56da0a29 100644
--- a/content/includes/nginxaas/create-or-import-nginx-config.md
+++ b/content/includes/nginxaas/create-or-import-nginx-config.md
@@ -2,13 +2,11 @@
f5-product: F5 NGINXaaS
f5-files:
- content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md
-- content/nginxaas/aws/deploy/create-deployment/deploy-console.md
-- content/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md
- content/nginxaas/google/deploy/create-deployment/deploy-console.md
- content/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md
---
-In the NGINXaaS Console,
+In the F5 ADS Console,
1. On the left menu, select **Configurations**.
1. Select **Add Configuration** to add a new NGINX configuration.
@@ -16,7 +14,7 @@ In the NGINXaaS Console,
- Select **New configuration** to create a new config.
- Provide a name for your configuration and an optional description.
- - Select to start with the "F5 NGINXaaS Default" (a basic NGINX setup) or an empty configuration file.
+ - Select to start with the "F5 Application Delivery Service Default" (a basic NGINX setup) or an empty configuration file.
- Select **Next**.
- Select **Copy existing configuration** to use one of the existing configuration files in your account as template.
- Provide a name for your configuration and an optional description.
diff --git a/content/includes/nginxaas/logging-config-access-logs.md b/content/includes/nginxaas/logging-config-access-logs.md
index 2f5b034ac7..b3afc08d0a 100644
--- a/content/includes/nginxaas/logging-config-access-logs.md
+++ b/content/includes/nginxaas/logging-config-access-logs.md
@@ -1,7 +1,6 @@
---
f5-product: F5 NGINXaaS
f5-files:
-- content/nginxaas/aws/monitoring/enable-nginx-logs.md
- content/nginxaas/google/monitoring/enable-nginx-logs.md
---
diff --git a/content/includes/nginxaas/logging-config-error-logs.md b/content/includes/nginxaas/logging-config-error-logs.md
index bc96e55393..6c38af83ec 100644
--- a/content/includes/nginxaas/logging-config-error-logs.md
+++ b/content/includes/nginxaas/logging-config-error-logs.md
@@ -1,7 +1,6 @@
---
f5-product: F5 NGINXaaS
f5-files:
-- content/nginxaas/aws/monitoring/enable-nginx-logs.md
- content/nginxaas/google/monitoring/enable-nginx-logs.md
---
diff --git a/content/includes/nginxaas/logging-config-security-logs.md b/content/includes/nginxaas/logging-config-security-logs.md
index bd105ab4c3..0f375d9db1 100644
--- a/content/includes/nginxaas/logging-config-security-logs.md
+++ b/content/includes/nginxaas/logging-config-security-logs.md
@@ -1,7 +1,6 @@
---
f5-product: F5 NGINXaaS
f5-files:
-- content/nginxaas/aws/monitoring/enable-nginx-logs.md
- content/nginxaas/google/monitoring/enable-nginx-logs.md
---
diff --git a/content/includes/nginxaas/metrics-catalog.md b/content/includes/nginxaas/metrics-catalog.md
index 3144ddf76b..5303b0ddaf 100644
--- a/content/includes/nginxaas/metrics-catalog.md
+++ b/content/includes/nginxaas/metrics-catalog.md
@@ -1,7 +1,6 @@
---
f5-product: F5 NGINXaaS
f5-files:
-- content/nginxaas/aws/monitoring/metrics-catalog.md
- content/nginxaas/google/monitoring/metrics-catalog.md
---
@@ -18,26 +17,26 @@ f5-files:
### NGINX config statistics
-All NGINXaaS deployments collect these metrics automatically. No additional NGINX configuration is required.
+All F5 ADS deployments collect these metrics automatically. No additional NGINX configuration is required.
{{< table >}}
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.config.reloads | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location | count | The total number of NGINX configuration reloads since NGINX was last started. | deployment |
+| nginx.config.reloads | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location | count | The total number of NGINX configuration reloads since NGINX was last started. | deployment |
{{< /table >}}
### NGINX connections statistics
-All NGINXaaS deployments collect these metrics automatically. No additional NGINX configuration is required.
+All F5 ADS deployments collect these metrics automatically. No additional NGINX configuration is required.
{{< table >}}
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.http.connections | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_connections_outcome | count | The total number of client connections since NGINX was last started, categorized by outcome (accepted, active, dropped, idle). | deployment |
-| nginx.http.connection.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_connections_outcome | gauge | The current number of client connections, categorized by outcome (accepted, active, dropped, idle). | deployment |
+| nginx.http.connections | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_connections_outcome | count | The total number of client connections since NGINX was last started, categorized by outcome (accepted, active, dropped, idle). | deployment |
+| nginx.http.connection.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_connections_outcome | gauge | The current number of client connections, categorized by outcome (accepted, active, dropped, idle). | deployment |
{{< /table >}}
@@ -62,16 +61,16 @@ server {
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.http.request.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_zone_type | gauge | The total number of client requests received since the last collection interval. | zone |
-| nginx.http.requests | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of client requests received since NGINX was last started or reloaded. | zone |
-| nginx.http.responses | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of HTTP responses sent to clients since NGINX was last started or reloaded. | zone |
-| nginx.http.response.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_status_range, nginx_zone_name, nginx_zone_type | gauge | The total number of HTTP responses sent to clients since the last collection interval, grouped by status code range. | zone |
-| nginx.http.response.status | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_status_range, nginx_zone_name, nginx_zone_type | count | The total number of responses since NGINX was last started or reloaded, grouped by status code range. | zone |
-| nginx.http.request.processing.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_zone_type | gauge | The number of client requests that are currently being processed. | zone |
-| nginx.http.request.discarded | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of requests completed without sending a response. | zone |
-| nginx.http.request.io | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_io_direction, nginx_zone_name, nginx_zone_type | count | The total number of HTTP bytes transferred (receive/transmit). | zone |
-| nginx.http.limit_conn.requests | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_limit_conn_outcome, nginx_zone_name | count | The total number of connections to an endpoint with a limit_conn directive. | zone |
-| nginx.http.limit_req.requests | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_limit_req_outcome, nginx_zone_name | count | The total number of requests to an endpoint with a limit_req directive. | zone |
+| nginx.http.request.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | gauge | The total number of client requests received since the last collection interval. | zone |
+| nginx.http.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of client requests received since NGINX was last started or reloaded. | zone |
+| nginx.http.responses | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of HTTP responses sent to clients since NGINX was last started or reloaded. | zone |
+| nginx.http.response.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name, nginx_zone_type | gauge | The total number of HTTP responses sent to clients since the last collection interval, grouped by status code range. | zone |
+| nginx.http.response.status | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name, nginx_zone_type | count | The total number of responses since NGINX was last started or reloaded, grouped by status code range. | zone |
+| nginx.http.request.processing.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | gauge | The number of client requests that are currently being processed. | zone |
+| nginx.http.request.discarded | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_zone_type | count | The total number of requests completed without sending a response. | zone |
+| nginx.http.request.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name, nginx_zone_type | count | The total number of HTTP bytes transferred (receive/transmit). | zone |
+| nginx.http.limit_conn.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_limit_conn_outcome, nginx_zone_name | count | The total number of connections to an endpoint with a limit_conn directive. | zone |
+| nginx.http.limit_req.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_limit_req_outcome, nginx_zone_name | count | The total number of requests to an endpoint with a limit_req directive. | zone |
{{< /table >}}
@@ -93,9 +92,9 @@ server {
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.ssl.handshakes | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_ssl_status, nginx_ssl_handshake_reason | count | The total number of SSL handshakes (successful and failed). | deployment |
-| nginx.ssl.certificate.verify_failures | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_ssl_verify_failure_reason | count | The total number of SSL certificate verification failures, categorized by reason. | deployment |
-| nginx.ssl.certificate.expiry.time | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, file_path, public_key_algorithm, serial_number, subject_common_name | gauge | The Unix timestamp, in seconds, at which an SSL/TLS certificate expires. | deployment |
+| nginx.ssl.handshakes | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_ssl_status, nginx_ssl_handshake_reason | count | The total number of SSL handshakes (successful and failed). | deployment |
+| nginx.ssl.certificate.verify_failures | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_ssl_verify_failure_reason | count | The total number of SSL certificate verification failures, categorized by reason. | deployment |
+| nginx.ssl.certificate.expiry.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, file_path, public_key_algorithm, serial_number, subject_common_name | gauge | The Unix timestamp, in seconds, at which an SSL/TLS certificate expires. | deployment |
{{< /table >}}
@@ -124,10 +123,10 @@ http {
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.cache.bytes_read | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_cache_outcome, nginx_cache_name | count | The total number of bytes read from the cache or proxied server. | cache |
-| nginx.cache.responses | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_cache_outcome, nginx_cache_name | count | The total number of responses read from the cache or proxied server. | cache |
-| nginx.cache.memory.limit | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_cache_name | gauge | The limit on the maximum size of the cache specified in the configuration. | cache |
-| nginx.cache.memory.usage | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_cache_name | gauge | The current size of the cache. | cache |
+| nginx.cache.bytes_read | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_outcome, nginx_cache_name | count | The total number of bytes read from the cache or proxied server. | cache |
+| nginx.cache.responses | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_outcome, nginx_cache_name | count | The total number of responses read from the cache or proxied server. | cache |
+| nginx.cache.memory.limit | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_name | gauge | The limit on the maximum size of the cache specified in the configuration. | cache |
+| nginx.cache.memory.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_cache_name | gauge | The current size of the cache. | cache |
{{< /table >}}
@@ -139,13 +138,13 @@ These metrics track shared memory zone usage. NGINX automatically collects memor
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.slab.page.free | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name | gauge | The current number of free memory pages in the shared memory zone. | zone |
-| nginx.slab.page.limit | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name | gauge | The total number of memory pages (free and used) in the shared memory zone. | zone |
-| nginx.slab.page.usage | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name | gauge | The current number of used memory pages in the shared memory zone. | zone |
-| nginx.slab.page.utilization | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name | gauge | The current percentage of used memory pages in the shared memory zone. | zone |
-| nginx.slab.slot.usage | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_slab_slot_limit, nginx_zone_name | gauge | The current number of used memory slots. | zone |
-| nginx.slab.slot.free | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_slab_slot_limit, nginx_zone_name | gauge | The current number of free memory slots. | zone |
-| nginx.slab.slot.allocations | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_slab_slot_limit, nginx_slab_slot_allocation_result, nginx_zone_name | count | The number of attempts to allocate memory of specified size. | zone |
+| nginx.slab.page.free | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The current number of free memory pages in the shared memory zone. | zone |
+| nginx.slab.page.limit | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The total number of memory pages (free and used) in the shared memory zone. | zone |
+| nginx.slab.page.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The current number of used memory pages in the shared memory zone. | zone |
+| nginx.slab.page.utilization | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The current percentage of used memory pages in the shared memory zone. | zone |
+| nginx.slab.slot.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_slab_slot_limit, nginx_zone_name | gauge | The current number of used memory slots. | zone |
+| nginx.slab.slot.free | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_slab_slot_limit, nginx_zone_name | gauge | The current number of free memory slots. | zone |
+| nginx.slab.slot.allocations | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_slab_slot_limit, nginx_slab_slot_allocation_result, nginx_zone_name | count | The number of attempts to allocate memory of specified size. | zone |
{{< /table >}}
@@ -174,22 +173,22 @@ server {
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.http.upstream.keepalive.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of idle keepalive connections per HTTP upstream. | upstream |
-| nginx.http.upstream.peer.io | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_io_direction, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of bytes transferred per HTTP upstream peer. | peer |
-| nginx.http.upstream.peer.connection.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average number of active connections per HTTP upstream peer. | peer |
-| nginx.http.upstream.peer.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name | gauge | The current count of peers on the HTTP upstream grouped by state. | upstream |
-| nginx.http.upstream.peer.fails | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of unsuccessful attempts to communicate with the HTTP upstream peer. | peer |
-| nginx.http.upstream.peer.header.time | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to get the response header from the HTTP upstream peer. | peer |
-| nginx.http.upstream.peer.health_checks | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_health_check, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of health check requests made to an HTTP upstream peer. | peer |
-| nginx.http.upstream.peer.requests | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of client requests forwarded to the HTTP upstream peer. | peer |
-| nginx.http.upstream.peer.response.time | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to get the full response from the HTTP upstream peer. | peer |
-| nginx.http.upstream.peer.responses | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_status_range, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of responses obtained from the HTTP upstream peer grouped by status range. | peer |
-| nginx.http.upstream.peer.unavailables | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of times the server became unavailable for client requests. | peer |
-| nginx.http.upstream.peer.state | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | Current state of an upstream peer in deployment (1 if deployed, 0 if not). | peer |
-| nginx.http.upstream.queue.limit | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The maximum number of requests that can be in the queue at the same time. | upstream |
-| nginx.http.upstream.queue.overflows | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name | count | The total number of requests rejected due to the queue overflow. | upstream |
-| nginx.http.upstream.queue.usage | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of requests in the queue. | upstream |
-| nginx.http.upstream.zombie.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of upstream peers removed from the group but still processing active client requests. | upstream |
+| nginx.http.upstream.keepalive.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of idle keepalive connections per HTTP upstream. | upstream |
+| nginx.http.upstream.peer.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of bytes transferred per HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.connection.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average number of active connections per HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name | gauge | The current count of peers on the HTTP upstream grouped by state. | upstream |
+| nginx.http.upstream.peer.fails | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of unsuccessful attempts to communicate with the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.header.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to get the response header from the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.health_checks | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_health_check, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of health check requests made to an HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.requests | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of client requests forwarded to the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.response.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to get the full response from the HTTP upstream peer. | peer |
+| nginx.http.upstream.peer.responses | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of responses obtained from the HTTP upstream peer grouped by status range. | peer |
+| nginx.http.upstream.peer.unavailables | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of times the server became unavailable for client requests. | peer |
+| nginx.http.upstream.peer.state | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | Current state of an upstream peer in deployment (1 if deployed, 0 if not). | peer |
+| nginx.http.upstream.queue.limit | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The maximum number of requests that can be in the queue at the same time. | upstream |
+| nginx.http.upstream.queue.overflows | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | count | The total number of requests rejected due to the queue overflow. | upstream |
+| nginx.http.upstream.queue.usage | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of requests in the queue. | upstream |
+| nginx.http.upstream.zombie.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of upstream peers removed from the group but still processing active client requests. | upstream |
{{< /table >}}
@@ -218,22 +217,22 @@ stream {
| Metric | Labels | Type | Description | Roll-up per |
| ------ | ------ | ---- | ----------- | ------------|
-| nginx.stream.io | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_io_direction, nginx_zone_name | count | The total number of Stream bytes transferred (receive/transmit). | zone |
-| nginx.stream.connection.accepted | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name | count | The total number of connections accepted from clients. | zone |
-| nginx.stream.connection.discarded | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name | count | Total number of connections completed without creating a session. | zone |
-| nginx.stream.connection.processing.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name | gauge | The number of client connections that are currently being processed. | zone |
-| nginx.stream.session.status | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_status_range, nginx_zone_name | count | The total number of completed sessions grouped by status range. | zone |
-| nginx.stream.upstream.peer.io | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_io_direction, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of Stream upstream peer bytes transferred. | peer |
-| nginx.stream.upstream.peer.connection.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The current number of Stream upstream peer connections. | peer |
-| nginx.stream.upstream.peer.connection.time | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to connect to the stream upstream peer. | peer |
-| nginx.stream.upstream.peer.connections | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of client connections forwarded to this stream upstream peer. | peer |
-| nginx.stream.upstream.peer.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name | gauge | The current number of stream upstream peers grouped by state. | upstream |
-| nginx.stream.upstream.peer.fails | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address | count | The total number of unsuccessful attempts to communicate with the stream upstream peer. | peer |
-| nginx.stream.upstream.peer.health_checks | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_health_check, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of health check requests made to the stream upstream peer. | peer |
-| nginx.stream.upstream.peer.response.time | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to receive the last byte of data for the stream upstream peer. | peer |
-| nginx.stream.upstream.peer.ttfb.time | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to receive the first byte of data for the stream upstream peer. | peer |
-| nginx.stream.upstream.peer.unavailables | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | How many times the server became unavailable for client connections due to the number of unsuccessful attempts reaching the max_fails threshold. | peer |
-| nginx.stream.upstream.peer.state | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | Current state of upstream peers in deployment (1 if any peer matches state, 0 if none). | peer |
-| nginx.stream.upstream.zombie.count | nginxaas_organization_object_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of peers removed from the group but still processing active client connections. | upstream |
+| nginx.stream.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name | count | The total number of Stream bytes transferred (receive/transmit). | zone |
+| nginx.stream.connection.accepted | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | count | The total number of connections accepted from clients. | zone |
+| nginx.stream.connection.discarded | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | count | Total number of connections completed without creating a session. | zone |
+| nginx.stream.connection.processing.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name | gauge | The number of client connections that are currently being processed. | zone |
+| nginx.stream.session.status | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_status_range, nginx_zone_name | count | The total number of completed sessions grouped by status range. | zone |
+| nginx.stream.upstream.peer.io | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_io_direction, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of Stream upstream peer bytes transferred. | peer |
+| nginx.stream.upstream.peer.connection.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The current number of Stream upstream peer connections. | peer |
+| nginx.stream.upstream.peer.connection.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to connect to the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.connections | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of client connections forwarded to this stream upstream peer. | peer |
+| nginx.stream.upstream.peer.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name | gauge | The current number of stream upstream peers grouped by state. | upstream |
+| nginx.stream.upstream.peer.fails | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address | count | The total number of unsuccessful attempts to communicate with the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.health_checks | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_health_check, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | The total number of health check requests made to the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.response.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to receive the last byte of data for the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.ttfb.time | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | gauge | The average time to receive the first byte of data for the stream upstream peer. | peer |
+| nginx.stream.upstream.peer.unavailables | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | How many times the server became unavailable for client connections due to the number of unsuccessful attempts reaching the max_fails threshold. | peer |
+| nginx.stream.upstream.peer.state | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name, nginx_peer_address, nginx_peer_name | count | Current state of upstream peers in deployment (1 if any peer matches state, 0 if none). | peer |
+| nginx.stream.upstream.zombie.count | organization_object_id, namespace, deployment_object_id, deployment_name, deployment_location, nginx_zone_name, nginx_upstream_name | gauge | The current number of peers removed from the group but still processing active client connections. | upstream |
{{< /table >}}
diff --git a/content/includes/nginxaas/update-nginx-config.md b/content/includes/nginxaas/update-nginx-config.md
index 7d628aaad0..a028b03e03 100644
--- a/content/includes/nginxaas/update-nginx-config.md
+++ b/content/includes/nginxaas/update-nginx-config.md
@@ -2,8 +2,6 @@
f5-product: F5 NGINXaaS
f5-files:
- content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md
-- content/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md
-- content/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
- content/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md
- content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
---
diff --git a/content/nginxaas/_index.md b/content/nginxaas/_index.md
index 9b57982ab4..24d3f63d60 100644
--- a/content/nginxaas/_index.md
+++ b/content/nginxaas/_index.md
@@ -1,13 +1,9 @@
---
-title: F5 NGINXaaS Product Documentation
+title: F5 NGINXaaS
description: Learn how to deliver, manage, and protect your applications using F5 NGINXaaS.
url: /nginxaas/
f5-landing-page: true
f5-content-type: landing-page
-cascade:
- f5-banner:
- enabled: true
- md: /_banners/nginxaas-aws-ea.md
---
Learn how to deliver, manage, and protect your applications using F5 NGINXaaS.
@@ -26,8 +22,8 @@ and reliable, and bringing advanced traffic services enabled with the commercial
{{}}
Step-by-step instructions to deploy NGINXaaS in Google Cloud using the NGINXaaS Console
{{}}
- {{}}
- Step-by-step instructions to deploy NGINXaaS in AWS using the NGINXaaS Console
+ {{}}
+ Step-by-step instructions to deploy F5 Application Delivery Service for AWS using the F5 ADS Console
{{}}
{{}}
@@ -36,8 +32,8 @@ and reliable, and bringing advanced traffic services enabled with the commercial
Access the [NGINXaaS Console](https://console.nginxaas.net/) directly to manage organizations, NGINX configurations, and certificates. To create and manage deployments, subscribe to F5 NGINXaaS using your preferred cloud provider marketplace.
{{}}
- {{}}
- Use NGINXaaS alongside your services running in AWS
+ {{}}
+ Use F5 ADS alongside your services running in AWS
{{}}
{{}}
Deploy NGINXaaS for use with your Google Cloud services
diff --git a/content/nginxaas/aws/_index.md b/content/nginxaas/aws/_index.md
deleted file mode 100644
index e811e43a7a..0000000000
--- a/content/nginxaas/aws/_index.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: NGINXaaS for AWS
-f5-subtitle: AWS-native and managed SaaS load balancer and application delivery service powered by commercial grade NGINX
-url: /nginxaas/aws/
-cascade:
- logo: F5-NGINXaaS-icon.svg
- contentVars:
- product: NGINXaaS for AWS
-f5-product: NGINXaaS for AWS
-weight: 500
----
diff --git a/content/nginxaas/aws/billing/overview.md b/content/nginxaas/aws/billing/overview.md
deleted file mode 100644
index 303cbac246..0000000000
--- a/content/nginxaas/aws/billing/overview.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Billing overview
-description: "Overview of how F5 NGINXaaS for AWS is billed through the AWS Marketplace."
-weight: 100
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/billing/overview/
-f5-content-type: concept
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, billing, AWS Marketplace, pricing, Early Access"
-f5-summary: >
- F5 NGINXaaS for AWS is purchased and billed through the AWS Marketplace.
- This page explains how billing works during Early Access and how to get more information.
-f5-audience: any
----
-
-{{< call-out class="important" title="Early Access" >}}
-**NGINXaaS for AWS** is currently in **Early Access**. Contact us for information about billing.
-{{< /call-out >}}
-
-F5 NGINXaaS for AWS is purchased and billed through the AWS Marketplace. Contact us if you are interested in participating in our Early Access offering by sending an email to nginxaas-early-access@f5.com.
diff --git a/content/nginxaas/aws/deploy/nginx-configuration/configuration-rules.md b/content/nginxaas/aws/deploy/nginx-configuration/configuration-rules.md
deleted file mode 100644
index 20ec8c4aaf..0000000000
--- a/content/nginxaas/aws/deploy/nginx-configuration/configuration-rules.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: NGINX configuration rules and limits
-description: "Reference for NGINX configuration file restrictions and workflows for F5 NGINXaaS for AWS."
-weight: 50
-toc: true
-url: /nginxaas/aws/deploy/nginx-configuration/configuration-rules/
-f5-content-type: reference
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, NGINX configuration, filesystem restrictions, disallowed directives, configuration workflow"
-f5-summary: >
- This reference explains how to work with NGINX configuration files in F5 NGINXaaS for AWS deployments, including filesystem restrictions and directive support.
- Use it to look up which directories NGINXaaS can read from and write to, and which directives are disallowed or fixed.
-f5-audience: operator
-contentSource: nginxaas/overview/nginx-configuration/configuration-rules.md
----
diff --git a/content/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md b/content/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md
deleted file mode 100644
index ec44e64dc2..0000000000
--- a/content/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Create or upload using the NGINXaaS Console
-description: "Create, upload, and update NGINX configurations for F5 NGINXaaS for AWS using the NGINXaaS Console."
-weight: 100
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console/
-f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, NGINX configuration, NGINXaaS Console, upload configuration, update configuration"
-f5-summary: >
- Learn how to create, upload, update, and delete NGINX configurations for F5 NGINXaaS for AWS using the NGINXaaS Console.
- This guide walks through the console workflow for managing configuration files and versions.
-f5-audience: operator
-contentSource: nginxaas/overview/nginx-configuration/nginx-configuration-console.md
----
diff --git a/content/nginxaas/aws/deploy/prerequisites.md b/content/nginxaas/aws/deploy/prerequisites.md
deleted file mode 100644
index 240bc83472..0000000000
--- a/content/nginxaas/aws/deploy/prerequisites.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Prerequisites
-description: "Steps to subscribe to F5 NGINXaaS for AWS in the AWS Marketplace before you deploy."
-weight: 100
-toc: false
-f5-docs: DOCS-000
-url: /nginxaas/aws/deploy/prerequisites/
-f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, prerequisites, AWS Marketplace, subscribe, Early Access"
-f5-summary: >
- Before you can deploy F5 NGINXaaS for AWS, you must subscribe to the AWS Marketplace offering.
- This page covers Early Access enrollment and what to do next once you're subscribed.
-f5-audience: operator
----
-
-Before you can deploy F5 NGINXaaS for AWS, you must subscribe to the AWS Marketplace offering.
-
-## Early Access to the F5 NGINXaaS for AWS Marketplace offering
-
-F5 NGINXaaS for AWS is currently in Early Access. Contact us if you are interested in participating in our Early Access offering by sending an email to nginxaas-early-access@f5.com.
-
-## What's next
-
-[Create a Deployment]({{< ref "/nginxaas/aws/deploy/create-deployment/deploy-console.md" >}})
diff --git a/content/nginxaas/aws/deploy/ssl-tls-certificates/overview.md b/content/nginxaas/aws/deploy/ssl-tls-certificates/overview.md
deleted file mode 100644
index f4a752e053..0000000000
--- a/content/nginxaas/aws/deploy/ssl-tls-certificates/overview.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Overview
-description: "Reference for supported SSL/TLS certificate types and how to add them to an F5 NGINXaaS for AWS deployment."
-weight: 50
-toc: true
-url: /nginxaas/aws/deploy/ssl-tls-certificates/overview/
-f5-content-type: reference
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, SSL, TLS, certificates, AWS Secrets Manager, certificate rotation, PEM"
-f5-summary: >
- This reference covers the SSL/TLS certificate types and formats F5 NGINXaaS for AWS supports, and the two ways to manage them: the NGINXaaS Console and AWS Secrets Manager.
- Use it to choose a certificate management approach and understand automatic and manual rotation options.
-f5-audience: operator
----
-
-Use F5 NGINXaaS for AWS to secure traffic by adding SSL/TLS certificates to a deployment.
-
-## Supported certificate types and formats
-
-NGINX supports the following certificate formats:
-
-- PEM format certificates.
-
-You can upload these certificates as text, as files, or as secrets from [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
-
-Encrypt your certificates, keys, and PEM files using one of these algorithms:
-
-- RSA
-- ECC/ECDSA
-
-## Add SSL/TLS certificates
-
-NGINXaaS for AWS supports two ways to manage your certificates and keys securely:
-
-**NGINXaaS console**: Manage certificates alongside the NGINX configurations that reference them. See [Add certificates using the NGINXaaS Console]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md" >}}).
-
-**AWS Secrets Manager**: Fetch secrets directly from [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html), keeping credentials within AWS. See [Add certificates from AWS Secrets Manager]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md" >}}).
-
-## Certificate rotation
-
-NGINXaaS for AWS supports automatic and manual rotation for AWS Secrets Manager certificates:
-
-**Automatic rotation**: Let NGINXaaS for AWS pick up new certificate versions automatically with no configuration changes needed. See [Rotate an AWS Secrets Manager certificate (automatic)]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md#rotate-an-aws-secrets-manager-certificate-automatic" >}}).
-
-**Manual rotation**: When you need to update certificates immediately, use **Reapply Configuration** in the console to refetch secrets right away. See [Rotate an AWS Secrets Manager certificate (manual)]({{< ref "/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-secrets-manager.md#rotate-an-aws-secrets-manager-certificate-manual" >}}).
diff --git a/content/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md b/content/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
deleted file mode 100644
index 5ab5b8078d..0000000000
--- a/content/nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Add certificates using the Console
-description: "Add, update, and delete SSL/TLS certificates for F5 NGINXaaS for AWS using the NGINXaaS Console."
-weight: 100
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/deploy/ssl-tls-certificates/ssl-tls-certificates-console/
-f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, SSL, TLS, certificates, NGINXaaS Console, add certificate"
-f5-summary: >
- Learn how to add, use, and delete SSL/TLS certificates for F5 NGINXaaS for AWS using the NGINXaaS Console.
- This guide covers uploading certificates and referencing them in an NGINX configuration.
-f5-audience: operator
-contentSource: nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
----
-
-## What's next
-
-[Upload an NGINX Configuration]({{< ref "/nginxaas/aws/deploy/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/nginxaas/aws/glossary.md b/content/nginxaas/aws/glossary.md
deleted file mode 100644
index 53aa7c8679..0000000000
--- a/content/nginxaas/aws/glossary.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Glossary
-description: "Definitions for terms and acronyms used in F5 NGINXaaS for AWS documentation."
-weight: 900
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/glossary/
-f5-content-type: reference
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, glossary, terminology, geographical controller, NGINXaaS deployment, service frontend, upstream network, VPC endpoint, VPC peering"
-f5-summary: >
- This glossary defines terms and acronyms commonly used in F5 NGINXaaS for AWS documentation.
- Use it to look up definitions for concepts like geographical controllers, service frontends, and VPC networking as they apply to NGINXaaS deployments.
-f5-audience: any
-contentSource: nginxaas/overview/glossary.md
----
diff --git a/content/nginxaas/aws/known-issues.md b/content/nginxaas/aws/known-issues.md
deleted file mode 100644
index 85d466af5a..0000000000
--- a/content/nginxaas/aws/known-issues.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: "Known issues"
-description: "List of known issues in the latest release of F5 NGINXaaS for AWS."
-weight: 1100
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/known-issues/
-f5-content-type: reference
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, known issues, limitations, release notes"
-f5-summary: >
- This page lists known issues in the latest release of F5 NGINXaaS for AWS.
- Check here before you report a problem, since a fix or workaround may already be documented.
-f5-audience: any
----
-
-List of known issues in the latest release of F5 NGINXaaS for AWS.
-
-_There are currently no known issues._
-
-{{< call-out class="note" >}} You may also want to be familiar with the documented [NGINXaaS for AWS limitations]({{< ref "/nginxaas/aws/overview.md#current-limitations" >}}). {{< /call-out >}}
diff --git a/content/nginxaas/aws/monitoring/_index.md b/content/nginxaas/aws/monitoring/_index.md
deleted file mode 100644
index 3bba9010b7..0000000000
--- a/content/nginxaas/aws/monitoring/_index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Logging and monitoring
-weight: 300
-url: /nginxaas/aws/monitoring/
-f5-product: NGINXaaS for AWS
----
-
diff --git a/content/nginxaas/aws/monitoring/enable-monitoring.md b/content/nginxaas/aws/monitoring/enable-monitoring.md
deleted file mode 100644
index 59e8c41a90..0000000000
--- a/content/nginxaas/aws/monitoring/enable-monitoring.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-title: Enable monitoring
-description: "Learn how to enable, view, and disable Amazon CloudWatch metric export for F5 NGINXaaS for AWS deployments."
-weight: 200
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/monitoring/enable-monitoring/
-f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, CloudWatch, metrics, monitoring, Embedded Metric Format, EMF, CloudWatch Logs, status_zone"
-f5-summary: >
- Learn how to export performance metrics from F5 NGINXaaS for AWS deployments to Amazon CloudWatch.
- This guide covers configuring IAM role permissions, enabling metric export in the NGINXaaS console, and viewing metrics in CloudWatch Metrics Explorer.
-f5-audience: operator
----
-
-## Overview
-
-Monitoring your application's performance is crucial for maintaining its reliability and efficiency. F5 NGINXaaS for AWS integrates with Amazon CloudWatch so you can collect, correlate, and analyze metrics for a thorough understanding of your application's health and behavior.
-
-NGINXaaS for AWS exports metrics using the [Amazon CloudWatch Embedded Metric Format (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html). When you enable metric export, NGINXaaS writes EMF records to a CloudWatch Logs log group (the **Metric Group**) in a log stream named `metrics`. CloudWatch automatically extracts these records into metrics under the `NGINXaaS` namespace, where you can chart and query them like any other CloudWatch metric.
-
-## Before you begin
-
-- Configure a **Role ARN** in the **Identity** section of your deployment. NGINXaaS uses this IAM role to export metrics to CloudWatch. See [Identity and access management]({{< ref "/nginxaas/aws/deploy/access-management.md" >}}) for how to create the role and attach the [Policy for CloudWatch Logs]({{< ref "/nginxaas/aws/deploy/access-management.md#step-3-add-inline-policies-to-your-role" >}}).
-- Grant the IAM role the permissions required to export metrics:
- - `logs:CreateLogStream` and `logs:PutLogEvents`: required for NGINXaaS to write EMF records to the metric log group.
- - `logs:CreateLogGroup`: required only if you want NGINXaaS to create the log group for you. If you pre-create the log group yourself, you can omit this permission.
-
- See [AWS's documentation on controlling access to CloudWatch Logs with IAM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/auth-and-access-control-cwl.html) for more information.
-- To view metrics in the CloudWatch console, your own AWS identity needs read access such as `cloudwatch:GetMetricData` and `cloudwatch:ListMetrics`. This is separate from the deployment's IAM role. See [AWS's documentation on identity and access management for Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) for more information.
-- Configure the [`status_zone`](https://nginx.org/en/docs/http/ngx_http_status_module.html#status_zone) directive in your `server` blocks and the [`zone`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone) directive in your `upstream` blocks to collect HTTP request and response statistics, stream connection metrics, upstream statistics, and memory statistics. See the [Metrics Catalog]({{< ref "/nginxaas/aws/monitoring/metrics-catalog.md" >}}) for configuration requirements.
-
-## Export NGINXaaS metrics to CloudWatch
-
-To enable exporting metrics, turn on the **Export Metrics to CloudWatch** toggle when creating or updating a deployment. To create a deployment, see [our documentation on creating an NGINXaaS deployment]({{< ref "/nginxaas/aws/deploy/create-deployment/" >}}) for a step-by-step guide. To update an existing deployment, in the NGINXaaS console,
-
-1. On the navigation menu, select **Deployments**.
-1. Select the deployment you want to update and select **Edit**.
-1. In the **Identity** section, make sure the **Role ARN** field is populated with an IAM role that has the [required permissions](#before-you-begin). Metric export fails without it.
-1. In the **Observability** section, turn on the **Export Metrics to CloudWatch** toggle.
-1. In the **Metric Group Name** field, enter the name of the CloudWatch Logs log group you want to receive exported metrics. If you leave this field at its default, NGINXaaS uses a log group named after the deployment object ID.
-1. Select **Update**.
-
-Within the metric log group, NGINXaaS writes EMF records to a log stream named `metrics`. CloudWatch extracts these records into metrics under the `NGINXaaS` namespace.
-
-## View NGINXaaS metrics in Amazon CloudWatch
-
-See the [Metrics Catalog]({{< ref "/nginxaas/aws/monitoring/metrics-catalog.md" >}}) for a full list of metrics NGINXaaS for AWS provides.
-
-### CloudWatch Metrics Explorer
-
-Log in to the [AWS Management Console](https://console.aws.amazon.com/),
-
-1. Go to the **CloudWatch** console.
-1. Select **Classic Metrics** and then select the **NGINXaaS** tile in the **Custom Namespaces** section.
-
-Refer to the [AWS's CloudWatch Metrics Explorer](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metrics-Explorer.html) documentation to learn how you can create charts and queries.
-
-{{< call-out class="note" >}}Metrics can take a few minutes to appear after you enable export, because CloudWatch must first ingest the EMF records and extract them into the `NGINXaaS` namespace. To inspect the raw EMF records, open the `metrics` log stream in your metric log group with [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).{{< /call-out >}}
-
-## Disable NGINXaaS metric export to CloudWatch
-
-To stop exporting metrics, update your NGINXaaS deployment to turn off the metric export toggle. To update the deployment, in the NGINXaaS console,
-
-1. On the navigation menu, select **Deployments**.
-1. Select the deployment you want to update and select **Edit**.
-1. In the **Observability** section, turn off the **Export Metrics to CloudWatch** toggle.
-1. Select **Update**.
-
-## Troubleshooting
-
-If Amazon CloudWatch is not showing any metrics, check for **Failed Metric Export to CloudWatch** events from your NGINXaaS deployment.
-
-In the NGINXaaS console:
-
-1. On the navigation menu, select **Events**.
-1. Select **Add Filter**.
-1. Select **Affected Object** and the name of your NGINXaaS deployment.
-
-Events are deleted after 14 days.
-
-## What's next
-
-- [Enable NGINX logs]({{< ref "/nginxaas/aws/monitoring/enable-nginx-logs.md" >}})
-- [Metrics catalog]({{< ref "/nginxaas/aws/monitoring/metrics-catalog.md" >}})
-- [Identity and access management]({{< ref "/nginxaas/aws/deploy/access-management.md" >}})
diff --git a/content/nginxaas/aws/monitoring/metrics-catalog.md b/content/nginxaas/aws/monitoring/metrics-catalog.md
deleted file mode 100644
index 0e33838d36..0000000000
--- a/content/nginxaas/aws/monitoring/metrics-catalog.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Metrics catalog
-description: "Reference catalog of Amazon CloudWatch metrics exported by F5 NGINXaaS for AWS deployments."
-weight: 400
-toc: false
-f5-docs: DOCS-000
-url: /nginxaas/aws/monitoring/metrics-catalog/
-f5-content-type: reference
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, metrics catalog, CloudWatch, connections, requests, SSL, cache, memory, upstream, stream"
-f5-summary: >
- Reference catalog of metrics exported by F5 NGINXaaS for AWS to Amazon CloudWatch under the NGINXaaS namespace.
- Use this guide to look up metric names, labels, data types, and roll-up scopes for NGINX config, connections, requests, SSL, cache, memory, upstream, and stream statistics.
-f5-audience: operator
----
-
-## Overview
-
-F5 NGINXaaS for AWS provides a rich set of metrics that you can use to monitor the health and performance of your NGINXaaS deployment. This document provides a catalog of the metrics that are available for monitoring NGINXaaS for AWS.
-
-NGINXaaS exports these metrics to Amazon CloudWatch using the [Embedded Metric Format (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html). CloudWatch extracts them into metrics under the `NGINXaaS` namespace. See [Enable monitoring]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}}) to configure metric export.
-
-The following metrics are reported by NGINXaaS for AWS in Amazon CloudWatch under the `NGINXaaS` namespace. The labels allow you to filter or split your queries in Amazon CloudWatch providing you with a granular view over the metrics reported.
-
-{{< include "/nginxaas/metrics-catalog.md" >}}
-
-## References
-
-For more information, see:
-
-- [Enable monitoring]({{< ref "/nginxaas/aws/monitoring/enable-monitoring.md" >}})
-- [Enable NGINX logs]({{< ref "/nginxaas/aws/monitoring/enable-nginx-logs.md" >}})
-- [Identity and access management]({{< ref "/nginxaas/aws/deploy/access-management.md" >}})
diff --git a/content/nginxaas/aws/overview.md b/content/nginxaas/aws/overview.md
deleted file mode 100644
index 9af66fbc26..0000000000
--- a/content/nginxaas/aws/overview.md
+++ /dev/null
@@ -1,151 +0,0 @@
----
-title: Overview and architecture
-description: "Overview of F5 NGINXaaS for AWS architecture, capabilities, and how it integrates with your AWS environment."
-weight: 100
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/overview/
-f5-content-type: concept
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, architecture, service frontend, private endpoint, managed public endpoint, upstream network, NGINX Capacity Unit, NCU, geographical controller"
-f5-summary: >
- F5 NGINXaaS for AWS is a fully managed, AWS-native SaaS load balancer and application delivery service powered by commercial NGINX Plus.
- This overview covers its architecture, service frontend types, upstream connectivity, and capacity model, so you understand how it fits into your AWS environment before you deploy.
-f5-audience: any
----
-
-## What is NGINXaaS for AWS?
-
-F5 NGINXaaS for AWS is a SaaS offering that is tightly integrated
-into AWS and its ecosystem of services, making applications fast, efficient,
-and reliable. It brings advanced traffic management capabilities from the commercial version of NGINX, without any of the operational toil.
-
-[NGINX Plus](https://www.nginx.com/products/nginx/) powers NGINXaaS for AWS, which extends NGINX Open Source with advanced functionality and provides customers with a complete application delivery solution.
-
-NGINXaaS handles the NGINX Plus license management automatically.
-
-{{}}
- {{}}
- Follow these steps to prepare for your NGINXaaS deployment
- {{}}
- {{}}
- Step-by-step instructions to deploy NGINXaaS using the NGINXaaS Console
- {{}}
- {{}}
- Instructions to add SSL/TLS certificates to your NGINXaaS deployment using the NGINXaaS Console
- {{}}
- {{}}
- Contact F5 support for assistance with NGINXaaS for AWS
- {{}}
-{{}}
-
-## Capabilities
-
-The key capabilities of NGINXaaS for AWS are:
-
-- Simplifies onboarding and use of NGINX by providing a fully managed, ready-to-use service, eliminating the need for infrastructure setup or manual upgrades.
-- Lowers operational overhead in running and optimizing NGINX.
-- Simplifies NGINX deployments with fewer moving parts (edge routing is built into the service).
-- Supports migration of existing NGINX configurations to the cloud with minimal effort.
-- Integrates with the AWS ecosystem.
-- Adopts a consumption-based pricing to align infrastructure costs to actual usage by billing transactions using AWS.
-
-## NGINXaaS for AWS architecture
-
-{{< img src="nginxaas/aws/nginxaas-aws-cloud-architecture.svg" alt="Architecture diagram showing how NGINXaaS integrates with AWS. At the top, inside the AWS IaaS layer, NGINX Plus is managed using UI, API, and Terraform, alongside NGINXaaS. Admins connect to this layer. Below, in the Customer VPC, end users connect through Edge Routing to multiple App Servers (labeled App Server 1). NGINX Plus directs traffic to these app servers. The Customer VPC also connects with AWS services such as AWS Secrets Manager, Amazon CloudWatch, and other AWS services. Green arrows show traffic flow from end users through edge routing and NGINX Plus to app servers, while blue arrows show admin access." >}}
-
-- The NGINXaaS Console is used to create, update, and delete NGINX configurations, certificates and NGINXaaS deployments
-- NGINXaaS automatically adapts to application traffic demands through autoscaling
-- Each NGINXaaS deployment has dedicated network and compute resources. There is no possibility of noisy neighbor problems or data leakage between deployments
-- NGINXaaS acts as a load balancer, API gateway, and reverse proxy, enabling you to keep your application workloads secure within your AWS account while serving traffic reliably and efficiently
-- NGINXaaS for AWS supports the following capabilities:
- - HTTP, HTTP/2, HTTP/3, and gRPC traffic
- - Layer 4 and Layer 7 load balancing with [configurable balancing methods](https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#method)
- - IPv4 and IPv6 traffic
- - UDP, TCP, and QUIC protocols
- - Private or public internet client ingress
- - [Request tracing](https://www.f5.com/company/blog/nginx/application-tracing-nginx-plus)
- - HTTP to HTTPS, HTTPS to HTTP, and HTTP to HTTP redirects
-- NGINXaaS also provides the ability to create new rules for redirecting. See [How to Create NGINX Rewrite Rules | NGINX](https://blog.nginx.org/blog/creating-nginx-rewrite-rules) for more details
-
-### Service frontend
-
-The service frontend of an NGINXaaS deployment controls how client ingress traffic reaches your deployment. There are two frontend types: managed public endpoint and private endpoint.
-
-#### Managed public endpoint
-
-A managed public endpoint frontend allows client access over the internet through a public DNS name created by NGINXaaS in its network.
-
-**This frontend type is suitable for:**
-
-- Serving public web applications to end users over the internet
-- Proxying traffic from clients outside AWS
-- Testing NGINXaaS configurations before you set up a [Private endpoint]({{< ref "/nginxaas/aws/overview.md#private-endpoint" >}}) frontend
-
-**Access control**
-
-Access control list (ACL) rules control traffic to a managed public endpoint deployment. If you don’t provide ACL rules, no traffic is allowed. An ACL rule includes the following settings:
-
-- **Source prefixes**: A list of CIDR blocks to allow traffic from
- - Use `0.0.0.0/0`, `::0/0` to allow traffic from all source IP addresses
-- **Protocol**: The network protocol to allow
- - Valid values are **TCP** and **UDP**
- - Required when you specify a port or port range
-- **Port range**: A single port or port range to allow traffic from
- - If you don’t specify a port range, traffic is allowed from any port
- - Required when you specify a protocol
-
-#### Private endpoint
-
-A private endpoint frontend allows client access through your network by using [AWS PrivateLink](https://aws.amazon.com/privatelink/). To set up connectivity, create an [interface VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) in your own VPC that connects to the VPC endpoint service provisioned for your NGINXaaS deployment. This approach enables any applications or clients in your VPC to connect directly to the NGINXaaS deployment via private networking. For step-by-step instructions, see [Set up connectivity]({{< ref "/nginxaas/aws/deploy/create-deployment/deploy-console.md#set-up-connectivity-private-endpoint-only" >}}).
-
-**This frontend type is suitable for:**
-
-- Situations where you need greater control over traffic to the NGINXaaS deployment
-- Environments where all clients exist within your AWS network
-- Internal services that shouldn't be exposed to the internet
-
-**Access control**
-
-A PrivateLink connection allow list restricts which AWS account IDs or VPC endpoint IDs can connect to the deployment. If you don't specify any entries in the allow list, no PrivateLink connections will be accepted. The allow list can be modified at any time to add or remove access permission for any AWS accounts or VPC endpoints.
-
-### Upstream network
-
-NGINXaaS uses [AWS VPC Peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) to connect privately to your upstream applications.
-
-A VPC peering connection brings the deployment into your application network and supports secure, private connectivity to your upstream services. By managing your own VPC routing and security group rules, you control traffic flow and can apply your preferred security controls.
-
-To connect NGINXaaS to your upstream VPC, you must [create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) from your AWS account targeting the NGINXaaS deployment's AWS Account ID and VPC ID, then add the peering connection ID to your deployment.
-
-{{< call-out class="caution" title="CIDR overlap" >}}
-Upstream VPC CIDRs must not overlap with the NGINXaaS deployment
-VPC CIDRs, or the CIDRs of other peered upstream VPCs. If CIDRs overlap, VPC peering will fail.
-{{< /call-out >}}
-
-### NGINX Capacity Unit (NCU)
-
-An NGINX Capacity Unit (NCU) quantifies the capacity of an NGINX deployment based on its underlying compute resources. This abstraction lets you specify capacity in NCUs without considering hardware differences between regions.
-You can reserve a minimum capacity for your deployment. The deployment automatically scales up or down based on traffic demand and makes sure it never drops below the reserved minimum.
-
-### Geographical controllers
-
-NGINXaaS for AWS has a global presence, with management requests served by regional controllers. A geographical controller (GC) is a control plane that serves users within a defined geographic boundary while addressing data residency and localization requirements. For example, a US geographical controller serves customers in the United States. NGINXaaS currently operates in three geographies: US, EU, and Asia Pacific (APAC).
-
-### Supported regions
-
-{{< include "/nginxaas/aws/supported-regions.md" >}}
-
-## Current limitations
-
-We are committed to enhancing NGINXaaS for AWS and welcome your feedback to help shape the future of our service. If there are features you'd like to see prioritized, we encourage you to submit a [support ticket]({{< ref "/nginxaas/aws/support.md" >}}) to share your suggestions.
-
-Here are the current constraints you should be aware of while using NGINXaaS for AWS:
-
-- User Role-Based Access Control (RBAC) is not yet supported, but this enhancement is on our roadmap as we improve access control for multi-user environments.
-- PrivateLink and upstream VPC peering connections must remain within the same AWS region as your deployment. Cross-region connections are not currently supported.
-- NGINXaaS deployments on AWS can only support up to 50 unique listen ports.
-- While NGINXaaS deployments on AWS can be configured for UDP and QUIC traffic, it requires that the deployment is listening for that traffic on IPv6. Note: this does not require the incoming client traffic, or upstream traffic to be IPv6.
-
-## What's next
-
-To get started, check the [NGINXaaS for AWS prerequisites]({{< ref "/nginxaas/aws/deploy/prerequisites.md" >}})
diff --git a/content/nginxaas/aws/support.md b/content/nginxaas/aws/support.md
deleted file mode 100644
index 0ca4cae3a0..0000000000
--- a/content/nginxaas/aws/support.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Support
-description: "How to contact F5 support for help with NGINXaaS for AWS."
-weight: 9999
-toc: true
-f5-docs: DOCS-000
-url: /nginxaas/aws/support/
-f5-content-type: how-to
-f5-product: NGINXaaS for AWS
-f5-keywords: "NGINXaaS for AWS, support, MyF5, help, contact support, create a case"
-f5-summary: >
- Learn how to open a support case for F5 NGINXaaS for AWS through the MyF5 portal.
- This guide covers what information to include so F5 support can resolve your issue quickly.
-f5-audience: any
-contentSource: nginxaas/support/
----
diff --git a/content/nginxaas/changelog.md b/content/nginxaas/changelog.md
index 5f5f068492..af56462eef 100644
--- a/content/nginxaas/changelog.md
+++ b/content/nginxaas/changelog.md
@@ -5,10 +5,14 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/changelog/
f5-content-type: reference
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/changelog/
nollms: true
---
+{{< renamed-notice >}}
+
Learn about the latest updates, new features, and resolved bugs in F5 NGINXaaS.
To see a list of currently active issues, visit the [Known issues]({{< ref "/nginxaas/google/known-issues.md" >}}) page.
@@ -37,44 +41,47 @@ You can now manage NGINXaaS for Google Cloud deployments with the first release
NGINXaaS for Google is now available in the following additional regions per geography:
{{< table "table" >}}
+
| NGINXaaS Geography | Google Cloud Regions |
| ------------------ | ------------------------------------------------- |
| APAC | asia-northeast1, asia-northeast2, asia-northeast3 |
| CA | northamerica-northeast1, northamerica-northeast2 |
+
{{< /table >}}
See the [Supported Regions]({{< ref "/nginxaas/google/overview.md#supported-regions" >}}) documentation for the full list of regions where NGINXaaS for Google is available.
-- {{% icon-feature %}} **NGINXaaS for AWS is now generally available in more regions**
+- {{% icon-feature %}} **F5 Application Delivery Service for AWS is now generally available in more regions**
- NGINXaaS for AWS is now available in the following additional regions per geography:
+ F5 ADS for AWS is now available in the following additional regions per geography:
{{< table "table" >}}
- | NGINXaaS Geography | AWS Regions |
- | ------------------ | -------------------------- |
- | CA | ca-central-1, ca-west-1 |
+
+ | F5 ADS Geography | AWS Regions |
+ | --------------- | ----------------------- |
+ | CA | ca-central-1, ca-west-1 |
+
{{< /table >}}
-See the [Supported Regions]({{< ref "/nginxaas/aws/overview.md#supported-regions" >}}) documentation for the full list of regions where NGINXaaS for AWS is available.
+See the [Supported Regions]({{< ref "/f5ads/aws/overview.md#supported-regions" >}}) documentation for the full list of regions where F5 ADS for AWS is available.
## September 1, 2026
-- {{% icon-feature %}} **NGINXaaS for AWS now supports F5 WAF for NGINX (Preview)**
+- {{% icon-feature %}} **F5 ADS for AWS now supports F5 WAF for NGINX (Preview)**
-You can now deploy NGINXaaS with [F5 WAF for NGINX]({{< ref "/waf" >}}); an advanced high-performance web application firewall (WAF) to provide protection from OWASP Top 10 web application security risks.
+You can now deploy F5 ADS with [F5 WAF for NGINX]({{< ref "/waf" >}}); an advanced high-performance web application firewall (WAF) to provide protection from OWASP Top 10 web application security risks.
**Note:** This feature is currently in Preview and free to use during the preview period. Custom security policies and custom logging profiles are not yet supported.
## July 31, 2026
-- {{% icon-feature %}} **NGINXaaS for AWS is now available (Early Access)**
-
-You can now use F5 NGINXaaS to integrate with your applications in AWS. This is a major new release allowing you to work in multi-cloud setups or simplify your current AWS presence with a fully-managed, secure NGINX offering.
+- {{% icon-feature %}} **F5 ADS for AWS is now available (Early Access)**
-See the documentation for [NGINXaaS for AWS]({{< ref "/nginxaas/aws/overview.md" >}}) for more info.
+You can now use F5 Application Delivery Service to integrate with your applications in AWS. This is a major new release allowing you to work in multi-cloud setups or simplify your current AWS presence with a fully-managed, secure NGINX offering.
+See the documentation for [F5 ADS for AWS]({{< ref "/f5ads/aws/overview.md" >}}) for more info.
-**Note:** This feature is currently in Early Access. Please contact us if you are interested in participating in our Early Access offering by sending an email to nginxaas-early-access@f5.com.
+**Note:** This feature is currently in Early Access. Please contact us if you are interested in participating in our Early Access offering by sending an email to nginxaas-early-access@f5.com.
## July 30, 2026
@@ -127,9 +134,11 @@ See the [Service Frontend]({{< ref "/nginxaas/google/overview.md#service-fronten
NGINXaaS for Google is now available in the following additional regions per geography:
{{< table "table" >}}
+
|NGINXaaS Geography | Google Cloud Regions |
|-----------|---------|
| APAC | asia-south1, asia-south2 |
+
{{< /table >}}
See the [Supported Regions]({{< ref "/nginxaas/google/overview.md#supported-regions" >}}) documentation for the full list of regions where NGINXaaS for Google is available.
diff --git a/content/nginxaas/google/_index.md b/content/nginxaas/google/_index.md
index a145ec675a..c0d9a109e6 100644
--- a/content/nginxaas/google/_index.md
+++ b/content/nginxaas/google/_index.md
@@ -6,7 +6,10 @@ cascade:
logo: F5-NGINXaaS-icon.svg
contentVars:
product: NGINXaaS for Google Cloud
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/
weight: 500
---
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/billing/_index.md b/content/nginxaas/google/billing/_index.md
index c73b87f042..0ca9f32e4f 100644
--- a/content/nginxaas/google/billing/_index.md
+++ b/content/nginxaas/google/billing/_index.md
@@ -2,4 +2,9 @@
title: Marketplace billing
weight: 400
url: /nginxaas/google/billing/
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/billing/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/billing/overview.md b/content/nginxaas/google/billing/overview.md
index 4478897fbd..88b26f9415 100644
--- a/content/nginxaas/google/billing/overview.md
+++ b/content/nginxaas/google/billing/overview.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/billing/overview/
f5-content-type: concept
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/billing/overview/
---
+{{< renamed-notice >}}
+
F5 NGINXaaS for Google Cloud is deployed into your Google Cloud subscription, where your deployment resource is visible and integrated with Google Cloud’s ecosystem. The underlying infrastructure, software maintenance, availability, and scaling are fully managed by F5, abstracting operational complexities. Billing occurs hourly and is tracked in the Google Cloud Cost Management Dashboard.
## Pricing plans
diff --git a/content/nginxaas/google/billing/usage-and-cost-estimator.md b/content/nginxaas/google/billing/usage-and-cost-estimator.md
index 7f969d6dec..d58a8893aa 100644
--- a/content/nginxaas/google/billing/usage-and-cost-estimator.md
+++ b/content/nginxaas/google/billing/usage-and-cost-estimator.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/billing/usage-and-cost-estimator/
f5-content-type: concept
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/billing/usage-and-cost-estimator/
---
+{{< renamed-notice >}}
+
{{< raw-html >}}
diff --git a/content/nginxaas/google/billing/usage-dashboard.md b/content/nginxaas/google/billing/usage-dashboard.md
index 9d8d6bba6e..a9d5b69224 100644
--- a/content/nginxaas/google/billing/usage-dashboard.md
+++ b/content/nginxaas/google/billing/usage-dashboard.md
@@ -4,9 +4,13 @@ weight: 300
toc: true
url: /nginxaas/google/billing/usage-dashboard/
f5-content-type: concept
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/billing/usage-dashboard/
---
+{{< renamed-notice >}}
+
# Usage dashboard
The Usage dashboard provides detailed insights into your NGINX as a Service resource consumption for the entire customer organization, encompassing deployments across all geographies and regions. View hourly usage metrics to track costs, analyze patterns, and optimize your deployments. Use the dashboard to analyze daily traffic patterns, plan capacity requirements, and optimize geographic distribution across regions.
@@ -70,4 +74,4 @@ For more information about NCU, see the [overview](overview.md).
## Data retention
-Historical usage data is available for **up to one year**, allowing for comprehensive analysis and trend identification.
\ No newline at end of file
+Historical usage data is available for **up to one year**, allowing for comprehensive analysis and trend identification.
diff --git a/content/nginxaas/google/deploy/_index.md b/content/nginxaas/google/deploy/_index.md
index 6162b0a2eb..b85fd03b47 100644
--- a/content/nginxaas/google/deploy/_index.md
+++ b/content/nginxaas/google/deploy/_index.md
@@ -2,4 +2,9 @@
title: Deploy on Google Cloud
weight: 200
url: /nginxaas/google/deploy/
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/deploy/access-management.md b/content/nginxaas/google/deploy/access-management.md
index 060a15b970..f7e0564d48 100644
--- a/content/nginxaas/google/deploy/access-management.md
+++ b/content/nginxaas/google/deploy/access-management.md
@@ -5,10 +5,12 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/deploy/access-management/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/access-management/
---
-
+{{< renamed-notice >}}
F5 NGINXaaS for Google Cloud (NGINXaaS) uses Workload Identity Federation (WIF) to integrate with Google Cloud services. For example, with WIF configured, your NGINXaaS deployment can perform the following integrations:
diff --git a/content/nginxaas/google/deploy/create-deployment/_index.md b/content/nginxaas/google/deploy/create-deployment/_index.md
index af7b17c031..fe1e7cdbf6 100644
--- a/content/nginxaas/google/deploy/create-deployment/_index.md
+++ b/content/nginxaas/google/deploy/create-deployment/_index.md
@@ -2,4 +2,9 @@
title: Create a deployment
weight: 200
url: /nginxaas/google/deploy/create-deployment/
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/create-deployment/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/deploy/create-deployment/deploy-console.md b/content/nginxaas/google/deploy/create-deployment/deploy-console.md
index f705a4692e..89c0ad33de 100644
--- a/content/nginxaas/google/deploy/create-deployment/deploy-console.md
+++ b/content/nginxaas/google/deploy/create-deployment/deploy-console.md
@@ -6,7 +6,9 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/deploy/create-deployment/deploy-console/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/create-deployment/deploy-console/
f5-keywords: "NGINXaaS for Google Cloud, create deployment, NGINXaaS Console, NCU, service frontend, Network attachment, Service Attachment, PSC"
f5-summary: >
Learn how to create an F5 NGINXaaS for Google Cloud deployment using the NGINXaaS Console.
@@ -14,6 +16,8 @@ f5-summary: >
f5-audience: operator
---
+{{< renamed-notice >}}
+
## Overview
This guide explains how to deploy F5 NGINXaaS for Google Cloud (NGINXaaS) using [Google Cloud Console](https://console.cloud.google.com) and the NGINXaaS Console. The deployment process involves creating a new deployment, configuring the deployment, and testing the deployment.
diff --git a/content/nginxaas/google/deploy/create-deployment/deploy-terraform.md b/content/nginxaas/google/deploy/create-deployment/deploy-terraform.md
index 80fba1171a..06fac9d636 100644
--- a/content/nginxaas/google/deploy/create-deployment/deploy-terraform.md
+++ b/content/nginxaas/google/deploy/create-deployment/deploy-terraform.md
@@ -6,7 +6,9 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/deploy/create-deployment/deploy-terraform/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/create-deployment/deploy-terraform/
f5-keywords: "NGINXaaS for Google Cloud, Terraform,create deployment, NGINXaaS Console, NCU, service frontend, Network attachment, Service Attachment, PSC"
f5-summary: >
Learn how to manage an F5 NGINXaaS for Google Cloud deployment using the Terraform provider.
@@ -14,6 +16,8 @@ f5-summary: >
f5-audience: operator
---
+{{< renamed-notice >}}
+
## Overview
This guide explains how to create an F5 NGINXaaS for Google Cloud (NGINXaaS) deployment using the [`F5Networks/f5ads` Terraform provider](https://registry.terraform.io/providers/F5Networks/f5ads/latest/docs). This guide only covers creating a deployment.
diff --git a/content/nginxaas/google/deploy/nginx-configuration/_index.md b/content/nginxaas/google/deploy/nginx-configuration/_index.md
index f847a2fb21..5a36c694d6 100644
--- a/content/nginxaas/google/deploy/nginx-configuration/_index.md
+++ b/content/nginxaas/google/deploy/nginx-configuration/_index.md
@@ -2,4 +2,9 @@
title: Upload an NGINX configuration
weight: 500
url: /nginxaas/google/deploy/nginx-configuration/
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/nginx-configuration/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/deploy/nginx-configuration/configuration-rules.md b/content/nginxaas/google/deploy/nginx-configuration/configuration-rules.md
index 374890498f..cf8b6d54fb 100644
--- a/content/nginxaas/google/deploy/nginx-configuration/configuration-rules.md
+++ b/content/nginxaas/google/deploy/nginx-configuration/configuration-rules.md
@@ -4,10 +4,14 @@ weight: 50
toc: true
url: /nginxaas/google/deploy/nginx-configuration/configuration-rules/
f5-content-type: reference
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/nginx-configuration/configuration-rules/
contentSource: nginxaas/overview/nginx-configuration/configuration-rules.md
---
+{{< renamed-notice >}}
+
This document provides details about using NGINX configuration files with your
F5 NGINXaaS for Google Cloud deployment, restrictions, and available directives.
diff --git a/content/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md b/content/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md
index 408eb8e11e..732afb5e3d 100644
--- a/content/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md
+++ b/content/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/deploy/nginx-configuration/nginx-configuration-console/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/nginx-configuration/nginx-configuration-console/
contentSource: nginxaas/overview/nginx-configuration/nginx-configuration-console.md
---
+{{< renamed-notice >}}
+
## What's next
-[Monitor your deployment]({{< ref "/nginxaas/google/monitoring/enable-monitoring.md" >}})
\ No newline at end of file
+[Monitor your deployment]({{< ref "/nginxaas/google/monitoring/enable-monitoring.md" >}})
diff --git a/content/nginxaas/google/deploy/prerequisites.md b/content/nginxaas/google/deploy/prerequisites.md
index 280463923d..d95151eb8c 100644
--- a/content/nginxaas/google/deploy/prerequisites.md
+++ b/content/nginxaas/google/deploy/prerequisites.md
@@ -5,9 +5,13 @@ toc: false
f5-docs: DOCS-000
url: /nginxaas/google/deploy/prerequisites/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/prerequisites/
---
+{{< renamed-notice >}}
+
Before you can deploy F5 NGINXaaS for Google Cloud (NGINXaaS), you need to complete some prerequisites.
## Subscribe to the NGINXaaS for Google Cloud offering
diff --git a/content/nginxaas/google/deploy/ssl-tls-certificates/_index.md b/content/nginxaas/google/deploy/ssl-tls-certificates/_index.md
index ce7d714443..096d87af35 100644
--- a/content/nginxaas/google/deploy/ssl-tls-certificates/_index.md
+++ b/content/nginxaas/google/deploy/ssl-tls-certificates/_index.md
@@ -2,4 +2,9 @@
title: Add SSL-TLS certificates
weight: 400
url: /nginxaas/google/deploy/ssl-tls-certificates/
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/ssl-tls-certificates/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/deploy/ssl-tls-certificates/overview.md b/content/nginxaas/google/deploy/ssl-tls-certificates/overview.md
index 93cbcab02b..6721e487de 100644
--- a/content/nginxaas/google/deploy/ssl-tls-certificates/overview.md
+++ b/content/nginxaas/google/deploy/ssl-tls-certificates/overview.md
@@ -4,9 +4,13 @@ weight: 50
toc: true
url: /nginxaas/google/deploy/ssl-tls-certificates/overview/
f5-content-type: reference
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/ssl-tls-certificates/overview/
---
+{{< renamed-notice >}}
+
Use F5 NGINXaaS for Google Cloud (NGINXaaS) to secure traffic by adding SSL/TLS certificates to a deployment.
## Supported certificate types and formats
diff --git a/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md b/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
index 0ea3f5406d..044fabba88 100644
--- a/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
+++ b/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console.md
@@ -5,10 +5,14 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-console/
contentSource: nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
---
+{{< renamed-notice >}}
+
## What's next
[Upload an NGINX Configuration]({{< ref "/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md b/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md
index 6fa18f08a9..6916d1cc43 100644
--- a/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md
+++ b/content/nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/deploy/ssl-tls-certificates/ssl-tls-certificates-secret-manager/
---
+{{< renamed-notice >}}
+
F5 NGINXaaS for Google Cloud (NGINXaaS) can fetch secrets directly from [Secret Manager](https://docs.cloud.google.com/secret-manager/docs/overview) to use as certificates and keys in your NGINX configuration, ensuring your credentials remain securely within Google Cloud.
## Prerequisites
@@ -125,4 +129,4 @@ NGINXaaS generates an event each time it fetches or fails to fetch a secret from
## What's next
-[Upload an NGINX Configuration]({{< ref "/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md" >}})
\ No newline at end of file
+[Upload an NGINX Configuration]({{< ref "/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/nginxaas/google/glossary.md b/content/nginxaas/google/glossary.md
index 53c34be4f7..12b6573d05 100644
--- a/content/nginxaas/google/glossary.md
+++ b/content/nginxaas/google/glossary.md
@@ -5,6 +5,10 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/glossary/
f5-content-type: reference
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/glossary/
contentSource: nginxaas/overview/glossary.md
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/known-issues.md b/content/nginxaas/google/known-issues.md
index d3198e602e..09f4c01493 100644
--- a/content/nginxaas/google/known-issues.md
+++ b/content/nginxaas/google/known-issues.md
@@ -5,11 +5,15 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/known-issues/
f5-content-type: reference
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/known-issues/
---
+{{< renamed-notice >}}
+
List of known issues in the latest release of F5 NGINXaaS for Google Cloud (NGINXaaS).
_There are currently no known issues._
-{{< call-out class="note" >}} You may also want to be familiar with the documented [NGINXaaS limitations]({{< ref "nginxaas/google/overview.md#current-limitations" >}}). {{< /call-out >}}
\ No newline at end of file
+{{< call-out class="note" >}} You may also want to be familiar with the documented [NGINXaaS limitations]({{< ref "nginxaas/google/overview.md#current-limitations" >}}). {{< /call-out >}}
diff --git a/content/nginxaas/google/monitoring/_index.md b/content/nginxaas/google/monitoring/_index.md
index b42e915b49..2dec44ccce 100644
--- a/content/nginxaas/google/monitoring/_index.md
+++ b/content/nginxaas/google/monitoring/_index.md
@@ -2,4 +2,9 @@
title: Logging and monitoring
weight: 300
url: /nginxaas/google/monitoring/
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/monitoring/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/monitoring/enable-monitoring.md b/content/nginxaas/google/monitoring/enable-monitoring.md
index d087ba981e..ec6abd3b27 100644
--- a/content/nginxaas/google/monitoring/enable-monitoring.md
+++ b/content/nginxaas/google/monitoring/enable-monitoring.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/monitoring/enable-monitoring/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/monitoring/enable-monitoring/
---
+{{< renamed-notice >}}
+
Monitoring your application's performance is crucial for maintaining its reliability and efficiency. F5 NGINXaaS for Google Cloud (NGINXaaS) seamlessly integrates with Google Cloud services, allowing you to collect, correlate, and analyze metrics for a thorough understanding of your application's health and behavior.
## Prerequisites
diff --git a/content/nginxaas/google/monitoring/enable-nginx-logs.md b/content/nginxaas/google/monitoring/enable-nginx-logs.md
index ecf19712e1..8066622818 100644
--- a/content/nginxaas/google/monitoring/enable-nginx-logs.md
+++ b/content/nginxaas/google/monitoring/enable-nginx-logs.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/monitoring/enable-nginx-logs/
f5-content-type: how-to
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/monitoring/enable-nginx-logs/
---
+{{< renamed-notice >}}
+
F5 NGINXaaS for Google (NGINXaaS) supports integrating with Google Cloud services to collect NGINX error and access logs, and F5 WAF for NGINX security logs.
## Prerequisites
diff --git a/content/nginxaas/google/monitoring/metrics-catalog.md b/content/nginxaas/google/monitoring/metrics-catalog.md
index d500e06396..30622f4cdf 100644
--- a/content/nginxaas/google/monitoring/metrics-catalog.md
+++ b/content/nginxaas/google/monitoring/metrics-catalog.md
@@ -6,7 +6,9 @@ toc: false
f5-docs: DOCS-000
url: /nginxaas/google/monitoring/metrics-catalog/
f5-content-type: reference
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/monitoring/metrics-catalog/
f5-keywords: "NGINXaaS for Google, metrics catalog, Google Cloud monitoring, connections, requests, SSL, cache, memory, upstream, stream"
f5-summary: >
Reference catalog of metrics exported by F5 NGINXaaS for Google Cloud.
@@ -14,6 +16,8 @@ f5-summary: >
f5-audience: operator
---
+{{< renamed-notice >}}
+
## Overview
F5 NGINXaaS for Google Cloud (NGINXaaS) provides a rich set of metrics that you can use to monitor the health and performance of your NGINXaaS deployment. This document provides a catalog of the metrics that are available for monitoring NGINXaaS for Google Cloud.
diff --git a/content/nginxaas/google/overview.md b/content/nginxaas/google/overview.md
index 319c97a8d7..24e1281979 100644
--- a/content/nginxaas/google/overview.md
+++ b/content/nginxaas/google/overview.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/overview/
f5-content-type: concept
-f5-product: NGINXaaS for Google Cloud
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/overview/
---
+{{< renamed-notice >}}
+
## What is NGINXaaS for Google Cloud?
F5 NGINXaaS for Google Cloud is a SaaS offering that is tightly integrated
diff --git a/content/nginxaas/google/quickstart/security-controls/_index.md b/content/nginxaas/google/quickstart/security-controls/_index.md
index b6e777bd2b..72e11f50c5 100644
--- a/content/nginxaas/google/quickstart/security-controls/_index.md
+++ b/content/nginxaas/google/quickstart/security-controls/_index.md
@@ -2,5 +2,11 @@
title: Security controls
weight: 200
url: /nginxaas/google/quickstart/security-controls/
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/quickstart/security-controls/
toc: true
----
\ No newline at end of file
+draft: true
+---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/google/support.md b/content/nginxaas/google/support.md
index b279bc5575..91a67840b7 100644
--- a/content/nginxaas/google/support.md
+++ b/content/nginxaas/google/support.md
@@ -5,6 +5,10 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/google/support/
f5-content-type: how-to
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service for Google Cloud
+f5-product-former: NGINXaaS for Google Cloud
+canonical: /f5ads/google/support/
contentSource: nginxaas/support/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/overview/_index.md b/content/nginxaas/overview/_index.md
index 971a9a4640..7c7c8ef3cb 100644
--- a/content/nginxaas/overview/_index.md
+++ b/content/nginxaas/overview/_index.md
@@ -3,7 +3,12 @@ title: Overview
description:
weight: 100
url: /nginxaas/overview
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview
cascade:
contentVars:
product: NGINXaaS
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/overview/about.md b/content/nginxaas/overview/about.md
index a24f9fe107..fc7b1b93d5 100644
--- a/content/nginxaas/overview/about.md
+++ b/content/nginxaas/overview/about.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/about/
f5-content-type: concept
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/about/
---
+{{< renamed-notice >}}
+
## What is F5 ${product}?
${product} is a service offering that is tightly integrated into your cloud platform and its ecosystem, making applications fast, efficient, and reliable with full lifecycle management of advanced NGINX traffic services.
@@ -36,5 +40,5 @@ The key capabilities of ${product} are:
${product} is available for use with multiple public cloud providers. See specific documentation for more details:
-- [NGINXaaS for AWS]({{< ref "/nginxaas/aws/overview.md" >}})
+- [F5 Application Delivery Service for AWS]({{< ref "/f5ads/aws/overview.md" >}})
- [NGINXaaS for Google Cloud]({{< ref "/nginxaas/google/overview.md" >}})
diff --git a/content/nginxaas/overview/app-protect/_index.md b/content/nginxaas/overview/app-protect/_index.md
index f681d92feb..962b4f9fad 100644
--- a/content/nginxaas/overview/app-protect/_index.md
+++ b/content/nginxaas/overview/app-protect/_index.md
@@ -2,4 +2,9 @@
title: F5 WAF for NGINX
weight: 500
url: /nginxaas/overview/app-protect/
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/app-protect/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/overview/app-protect/configure-waf.md b/content/nginxaas/overview/app-protect/configure-waf.md
index 52d0ee83a9..f6ffdc8d47 100644
--- a/content/nginxaas/overview/app-protect/configure-waf.md
+++ b/content/nginxaas/overview/app-protect/configure-waf.md
@@ -6,7 +6,9 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/app-protect/configure-waf/
f5-content-type: how-to
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/app-protect/configure-waf/
f5-keywords: "F5 WAF, app protect, security policy, NGINX configuration"
f5-summary: >
This page explains how to configure F5 WAF for NGINX by loading the module and setting the enforcer address, then enabling a security policy.
@@ -16,6 +18,8 @@ contentVars:
product: NGINXaaS
---
+{{< renamed-notice >}}
+
## Overview
This guide explains how to configure the F5 WAF for NGINX security features.
diff --git a/content/nginxaas/overview/app-protect/disable-waf.md b/content/nginxaas/overview/app-protect/disable-waf.md
index 09ec4b0e8e..98d408cc62 100644
--- a/content/nginxaas/overview/app-protect/disable-waf.md
+++ b/content/nginxaas/overview/app-protect/disable-waf.md
@@ -6,7 +6,9 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/app-protect/disable-waf/
f5-content-type: how-to
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/app-protect/disable-waf/
f5-keywords: "F5 WAF, app protect, disable, NGINXaaS Console"
f5-summary: >
This page explains how to disable F5 WAF for NGINX on an NGINXaaS deployment through the NGINXaaS Console.
@@ -16,6 +18,8 @@ contentVars:
product: NGINXaaS
---
+{{< renamed-notice >}}
+
## Overview
This guide explains how to disable F5 WAF for NGINX on an NGINX as a Service (NGINXaaS) deployment.
diff --git a/content/nginxaas/overview/app-protect/enable-waf.md b/content/nginxaas/overview/app-protect/enable-waf.md
index ccf4980cdd..e3a59ba189 100644
--- a/content/nginxaas/overview/app-protect/enable-waf.md
+++ b/content/nginxaas/overview/app-protect/enable-waf.md
@@ -6,7 +6,9 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/app-protect/enable-waf/
f5-content-type: how-to
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/app-protect/enable-waf/
f5-keywords: "F5 WAF, app protect, enable, NGINXaaS Console"
f5-summary: >
This page explains how to enable F5 WAF for NGINX on an NGINXaaS deployment through the NGINXaaS Console.
@@ -16,6 +18,8 @@ contentVars:
product: NGINXaaS
---
+{{< renamed-notice >}}
+
## Overview
This guide explains how to enable F5 WAF for NGINX on a F5 NGINX as a Service (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.
diff --git a/content/nginxaas/overview/client-credentials.md b/content/nginxaas/overview/client-credentials.md
index b61173cbc2..280009a80a 100644
--- a/content/nginxaas/overview/client-credentials.md
+++ b/content/nginxaas/overview/client-credentials.md
@@ -4,7 +4,9 @@ description: "Learn how to set up OAuth2 client credentials for programmatic acc
weight: 400
toc: true
url: /nginxaas/overview/client-credentials/
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/client-credentials/
f5-content-type: how-to
f5-keywords: "client credentials, OAuth2, programmatic authentication, API"
f5-summary: >
@@ -16,6 +18,8 @@ f5-summary: >
f5-audience: operator
---
+{{< renamed-notice >}}
+
## Overview
This guide explains how to create and use client credentials for automating access to NGINXaaS APIs. Client credentials enable automation tools such as CI/CD pipelines to manage certain NGINXaaS resources without requiring user login.
diff --git a/content/nginxaas/overview/glossary.md b/content/nginxaas/overview/glossary.md
index 5a10de2c8e..6f7dc360db 100644
--- a/content/nginxaas/overview/glossary.md
+++ b/content/nginxaas/overview/glossary.md
@@ -5,11 +5,15 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/glossary/
f5-content-type: reference
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/f5ads-glossary/
contentVars:
product: NGINXaaS
---
+{{< renamed-notice >}}
+
This document provides definitions for terms and acronyms commonly used in F5 ${product} documentation.
{{
}}
@@ -22,8 +26,8 @@ This document provides definitions for terms and acronyms commonly used in F5 ${
| NGINXaaS Deployment | An instance of the highly available NGINX Plus managed service. A deployment can be created in any supported cloud provider where your organization holds an active NGINXaaS marketplace subscription.
| NGINXaaS Organization | The account that hosts your NGINXaaS configurations and deployments. An Organization can be linked to marketplace subscriptions for each cloud provider you want to deploy into, and can have unlimited users added for collaboration on your NGINXaaS resources. |
| NGINXaaS User | NGINXaaS Users are granted access to all resources in the NGINXaaS Organization. User authentication is performed securely via Google Cloud, requiring a matching identity. Individuals can be added as users to multiple NGINXaaS Organizations, and can switch between them. |
-| Service Frontend | Each NGINXaaS deployment uses one of two service frontend types: **Managed public endpoint**, which makes the deployment available for client access over the public internet, or **Private endpoint**, which enables client access from trusted private network connections. For details, see the docs for each cloud provider: - [AWS]({{< ref "/nginxaas/aws/overview.md#service-frontend" >}}) - [Google Cloud]({{< ref "/nginxaas/google/overview.md#service-frontend" >}}) |
+| Service Frontend | Each NGINXaaS deployment uses one of two service frontend types: **Managed public endpoint**, which makes the deployment available for client access over the public internet, or **Private endpoint**, which enables client access from trusted private network connections. For details, see the docs for each cloud provider: - [AWS]({{< ref "/f5ads/aws/overview.md#service-frontend" >}}) - [Google Cloud]({{< ref "/nginxaas/google/overview.md#service-frontend" >}}) |
| Upstream Network | The network that hosts your applications and workloads NGINXaaS proxies traffic to. These backend services or origin servers, are typically defined in an NGINX `upstream` block. For instructions on connecting your NGINXaaS deployment to an upstream network, see the docs for each supported cloud provider. |
-| VPC Endpoint | An AWS resource that establishes a PrivateLink connection from your AWS VPC to the NGINXaaS deployment. When you configure an NGINXaaS for AWS deployment's service frontend as **Private endpoint**, you can create an interface VPC endpoint that target's the deployment's VPC endpoint service. For details, see the [AWS PrivateLink documentation](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html). |
+| VPC Endpoint | An AWS resource that establishes a PrivateLink connection from your AWS VPC to the NGINXaaS deployment. When you configure an F5 Application Delivery Service for AWS deployment's service frontend as **Private endpoint**, you can create an interface VPC endpoint that target's the deployment's VPC endpoint service. For details, see the [AWS PrivateLink documentation](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html). |
| VPC Peering | A method for connecting an NGINXaaS deployment's network to an upstream network so traffic to your backend services routes directly over a private network. |
{{
}}
diff --git a/content/nginxaas/overview/manage-users-organizations.md b/content/nginxaas/overview/manage-users-organizations.md
index e4252e6a28..9478cbf32e 100644
--- a/content/nginxaas/overview/manage-users-organizations.md
+++ b/content/nginxaas/overview/manage-users-organizations.md
@@ -5,9 +5,13 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/manage-users-organizations/
f5-content-type: how-to
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/manage-users-organizations/
---
+{{< renamed-notice >}}
+
## Overview
This document explains how to manage users and organizations in F5 NGINXaaS using the NGINXaaS console.
@@ -39,7 +43,7 @@ Before you start, ensure you understand the following concepts:
Once logged in, you can create and manage [NGINX configurations]({{< ref "/nginxaas/overview/nginx-configuration/nginx-configuration-console.md" >}}) and [SSL/TLS certificates]({{< ref "/nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md" >}}).
-If you want to create an NGINXaaS deployment, subscribe to your preferred cloud provider(s) (such as [AWS]({{< ref "/nginxaas/aws/deploy/prerequisites.md#subscribe-to-the-nginxaas-for-aws-offering" >}}) or [Google Cloud]({{< ref "/nginxaas/google/deploy/prerequisites.md#subscribe-to-the-nginxaas-for-google-cloud-offering" >}})).
+If you want to create an NGINXaaS deployment, subscribe to your preferred cloud provider(s) (such as [AWS]({{< ref "/f5ads/aws/deploy/prerequisites.md" >}}) or [Google Cloud]({{< ref "/nginxaas/google/deploy/prerequisites.md#subscribe-to-the-nginxaas-for-google-cloud-offering" >}})).
## Create an organization
diff --git a/content/nginxaas/overview/nginx-configuration/_index.md b/content/nginxaas/overview/nginx-configuration/_index.md
index dbaba0d1f5..a75f86c609 100644
--- a/content/nginxaas/overview/nginx-configuration/_index.md
+++ b/content/nginxaas/overview/nginx-configuration/_index.md
@@ -2,4 +2,9 @@
title: NGINX configurations
weight: 500
url: /nginxaas/overview/nginx-configuration/
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/nginx-configuration/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/overview/nginx-configuration/configuration-rules.md b/content/nginxaas/overview/nginx-configuration/configuration-rules.md
index 8859fe2df3..4bce53f812 100644
--- a/content/nginxaas/overview/nginx-configuration/configuration-rules.md
+++ b/content/nginxaas/overview/nginx-configuration/configuration-rules.md
@@ -4,11 +4,15 @@ weight: 50
toc: true
url: /nginxaas/overview/nginx-configuration/configuration-rules/
f5-content-type: reference
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/nginx-configuration/configuration-rules/
contentVars:
product: NGINXaaS
---
+{{< renamed-notice >}}
+
This document provides details about using NGINX configuration files with your
F5 ${product} deployment, restrictions, and available directives.
diff --git a/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md b/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md
index e698bb08c8..8cffe4d4cd 100644
--- a/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md
+++ b/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md
@@ -5,11 +5,15 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/nginx-configuration/nginx-configuration-console/
f5-content-type: how-to
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/nginx-configuration/nginx-configuration-console/
contentVars:
product: NGINXaaS
---
+{{< renamed-notice >}}
+
You can apply an NGINX configuration to your F5 ${product} deployment using the NGINXaaS Console.
## Access the NGINXaaS Console
diff --git a/content/nginxaas/overview/ssl-tls-certificates/_index.md b/content/nginxaas/overview/ssl-tls-certificates/_index.md
index 1c1da9fe52..d2ec9172ee 100644
--- a/content/nginxaas/overview/ssl-tls-certificates/_index.md
+++ b/content/nginxaas/overview/ssl-tls-certificates/_index.md
@@ -2,4 +2,9 @@
title: Manage SSL/TLS certificates
weight: 400
url: /nginxaas/overview/ssl-tls-certificates/
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/ssl-tls-certificates/
---
+
+{{< renamed-notice >}}
diff --git a/content/nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md b/content/nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
index 6e0b85d34c..fe110ef167 100644
--- a/content/nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
+++ b/content/nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console.md
@@ -5,11 +5,15 @@ toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/ssl-tls-certificates/ssl-tls-certificates-console/
f5-content-type: how-to
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/ssl-tls-certificates/ssl-tls-certificates-console/
contentVars:
product: NGINXaaS
---
+{{< renamed-notice >}}
+
You can manage SSL/TLS certificates for F5 ${product} using the NGINXaaS console.
## Add an SSL/TLS certificate to NGINXaaS
diff --git a/content/nginxaas/overview/user-login.md b/content/nginxaas/overview/user-login.md
index b534ed2899..5d0e7363a7 100644
--- a/content/nginxaas/overview/user-login.md
+++ b/content/nginxaas/overview/user-login.md
@@ -4,7 +4,9 @@ weight: 350
toc: true
f5-docs: DOCS-000
url: /nginxaas/overview/user-login/
-f5-product: F5 NGINXaaS
+f5-product: F5 Application Delivery Service
+f5-product-former: F5 NGINXaaS
+canonical: /f5ads/overview/user-login/
f5-content-type: how-to
f5-keywords: "login,authentication"
f5-summary: >
@@ -12,6 +14,8 @@ f5-summary: >
f5-audience: operator
---
+{{< renamed-notice >}}
+
## Overview
NGINXaaS authenticates users through three login methods:
@@ -73,4 +77,4 @@ See [Entra guidance on granting admin consent](https://learn.microsoft.com/en-us
- The app ID (client ID) of the **F5 Inc - Social Login** Entra app is `4aef7a9d-810c-4746-8a6a-6c5d43e4e5f2`.
- The tenant ID is `dd3dfd2f-6a3b-40d1-9be0-bf8327d81c50`.
-- The app requires the following Microsoft Graph API permissions: `email`, `openid`, `profile` and `User.Read`.
\ No newline at end of file
+- The app requires the following Microsoft Graph API permissions: `email`, `openid`, `profile` and `User.Read`.
diff --git a/data/product-selector.yaml b/data/product-selector.yaml
index 83e95bfe7a..64cad65534 100644
--- a/data/product-selector.yaml
+++ b/data/product-selector.yaml
@@ -23,16 +23,16 @@
- title: "F5 DoS for NGINX"
url: "nginx-app-protect-dos"
-- productGroup: NGINXaaS
+- productGroup: F5 NGINX cloud services
products:
- - title: "NGINXaaS for AWS"
- url: "nginxaas/aws/overview/"
- - title: "NGINXaaS for Google Cloud"
- url: "nginxaas/google/overview/"
+ - title: "F5 Application Delivery Service"
+ url: "f5ads"
+ - title: "F5 ADS for AWS"
+ url: "f5ads/aws/overview/"
+ - title: "F5 ADS for Google Cloud"
+ url: "f5ads/google/overview/"
- title: "NGINXaaS for Azure"
url: "nginxaas-azure/"
- - title: "NGINXaaS"
- url: "nginxaas"
- productGroup: Glossary
products:
diff --git a/layouts/_default/list.html b/layouts/_default/list.html
new file mode 100644
index 0000000000..83398c360b
--- /dev/null
+++ b/layouts/_default/list.html
@@ -0,0 +1,75 @@
+{{ define "main" }}
+
+
+
+
+ {{ if not .IsHome }}
+ {{ if not (in .Params.display_breadcrumb "false" ) }}
+ {{ partial "breadcrumb" .}}
+ {{ end }}
+ {{ end }}
+