diff --git a/content/_index.md b/content/_index.md
index 515bcd330..395b52e26 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -43,7 +43,7 @@ Learn how to deliver, manage, and protect your applications using F5 NGINX produ
{{}}
{{}}
- {{}}
+ {{}}
Infrastructure-as-a-Service (IaaS) version of NGINX Plus for your Microsoft Azure application stack.
{{}}
{{}}
diff --git a/content/includes/nginxaas-google/access-console.md b/content/includes/nginxaas-google/access-console.md
new file mode 100644
index 000000000..eeb92c3b6
--- /dev/null
+++ b/content/includes/nginxaas-google/access-console.md
@@ -0,0 +1,6 @@
+---
+nd-docs: DOCS-000
+---
+
+- Visit [https://console.nginxaas.net/](https://console.nginxaas.net/) to access the NGINXaaS Console.
+- Log in to the console with your Google credentials.
\ No newline at end of file
diff --git a/content/includes/nginxaas-google/create-or-import-nginx-config.md b/content/includes/nginxaas-google/create-or-import-nginx-config.md
new file mode 100644
index 000000000..88f0949fc
--- /dev/null
+++ b/content/includes/nginxaas-google/create-or-import-nginx-config.md
@@ -0,0 +1,24 @@
+---
+nd-docs: DOCS-000
+---
+
+In the NGINXaaS 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.
+ - Change the configuration path if needed.
+ - Select to start with the "NGINXaaS 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.
+ - Change the configuration path if needed.
+ - 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 and select **Save**.
+ - You can import certificates using the **Add file** option.
diff --git a/content/includes/nginxaas-google/logging-config-access-logs.md b/content/includes/nginxaas-google/logging-config-access-logs.md
new file mode 100644
index 000000000..32540c234
--- /dev/null
+++ b/content/includes/nginxaas-google/logging-config-access-logs.md
@@ -0,0 +1,39 @@
+---
+nd-docs: DOCS-000
+---
+
+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 "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 "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/nginxaas-google/logging-config-error-logs.md b/content/includes/nginxaas-google/logging-config-error-logs.md
new file mode 100644
index 000000000..05308b7bb
--- /dev/null
+++ b/content/includes/nginxaas-google/logging-config-error-logs.md
@@ -0,0 +1,19 @@
+---
+nd-docs: DOCS-000
+---
+
+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/nginxaas-google/ncu-description.md b/content/includes/nginxaas-google/ncu-description.md
new file mode 100644
index 000000000..17c015e54
--- /dev/null
+++ b/content/includes/nginxaas-google/ncu-description.md
@@ -0,0 +1,11 @@
+---
+nd-docs: "DOCS-1476"
+---
+
+An NGINX Capacity Unit (NCU) quantifies the capacity of an NGINX instance based on the underlying compute resources. This abstraction allows you to specify the desired capacity in NCUs without having to consider the regional hardware differences.
+
+An NGINX Capacity Unit consists of the following parameters:
+
+* CPU: an NCU provides 20 [Azure Compute Units](https://learn.microsoft.com/en-us/azure/virtual-machines/acu) (ACUs)
+* Bandwidth: an NCU provides 60 Mbps of network throughput
+* Concurrent connections: an NCU provides 400 concurrent connections. This performance is not guaranteed when NGINX App Protect WAF is used with NGINXaaS
diff --git a/content/includes/nginxaas-google/ssl-tls-prerequisites.md b/content/includes/nginxaas-google/ssl-tls-prerequisites.md
new file mode 100644
index 000000000..9c21cbbcb
--- /dev/null
+++ b/content/includes/nginxaas-google/ssl-tls-prerequisites.md
@@ -0,0 +1,5 @@
+---
+nd-docs: DOCS-000
+---
+
+TBD SSL Prerequisites for NGINXaaS for Google Cloud
\ No newline at end of file
diff --git a/content/includes/nginxaas-google/terraform-prerequisites.md b/content/includes/nginxaas-google/terraform-prerequisites.md
new file mode 100644
index 000000000..b7cb42295
--- /dev/null
+++ b/content/includes/nginxaas-google/terraform-prerequisites.md
@@ -0,0 +1,6 @@
+---
+nd-docs: DOCS-000
+---
+
+- Confirm that you meet the [NGINXaaS Prerequisites]({{< ref "/nginxaas-google/getting-started/prerequisites.md" >}}).
+
diff --git a/content/includes/nginxaas-google/terraform-resources.md b/content/includes/nginxaas-google/terraform-resources.md
new file mode 100644
index 000000000..a4b991362
--- /dev/null
+++ b/content/includes/nginxaas-google/terraform-resources.md
@@ -0,0 +1,5 @@
+---
+nd-docs: DOCS-000
+---
+
+TBD NGINXaaS for Google Cloud Terraform resources
\ No newline at end of file
diff --git a/content/includes/nginxaas-google/update-nginx-config.md b/content/includes/nginxaas-google/update-nginx-config.md
new file mode 100644
index 000000000..155e4c263
--- /dev/null
+++ b/content/includes/nginxaas-google/update-nginx-config.md
@@ -0,0 +1,14 @@
+---
+nd-docs: DOCS-000
+---
+
+1. On the left menu, select **Configurations**.
+1. On the list of configurations, select the ellipses (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. Select the file you want to update in the file tree.
+ - Certificates can only be copied, moved, or renamed.
+1. Modify the configuration file(s) as needed and select **Next**.
+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.
\ No newline at end of file
diff --git a/content/nginxaas-azure/_index.md b/content/nginxaas-azure/_index.md
index 56a138de0..321f60a5e 100644
--- a/content/nginxaas-azure/_index.md
+++ b/content/nginxaas-azure/_index.md
@@ -4,7 +4,7 @@ nd-subtitle: Infrastructure-as-a-Service (IaaS) version of NGINX Plus for your M
url: /nginxaas/azure/
nd-landing-page: true
cascade:
- logo: NGINX-for-Azure-icon.svg
+ logo: F5-NGINXaaS-icon.svg
nd-content-type: landing-page
nd-product: N4Azure
---
diff --git a/content/nginxaas-azure/get-help/support.md b/content/nginxaas-azure/get-help/support.md
index e4536c81d..8ed5acf03 100644
--- a/content/nginxaas-azure/get-help/support.md
+++ b/content/nginxaas-azure/get-help/support.md
@@ -14,25 +14,23 @@ To contact support about F5 NGINXaaS for Azure (NGINXaaS):
1. Go to your NGINXaaS deployment.
-2. Select **New Support request** in the left menu.
+1. Select **New Support request** in the left menu.
-3. Select **Raise a Support ticket**.
+1. Select **Raise a Support ticket**.
{{< img src="nginxaas-azure/raise-ticket.png" alt="Screenshot of the Azure portal showing the Raise support ticket button" >}}
-4. You will be redirected to **MyF5** to create a new case. Log in to MyF5 with your F5 account.
+1. You will be redirected to **MyF5** to create a new case. Log in to MyF5 with your F5 account.
{{< call-out "note" >}}If you can't complete a deployment successfully, the "New support request" option won't be available on the left-hand navigation menu. To raise a support ticket, go to the [MyF5 portal](https://my.f5.com). {{< /call-out >}}
-5. Go to the **Case Management** section and select **Create new case**.
-
- {{< img src="nginxaas-azure/new-case.png" alt="Screenshot of the MyF5 portal showing the Create new case button" >}}
+1. Go to the **Support** section and select **Create a Case**.
-6. Select **NGINXaaS** in the Product dropdown.
+1. Select **NGINX Products** as the product family.
- {{< img src="nginxaas-azure/create-case.png" alt="MyF5 Case form" >}}
+1. Select **NGINXaaS for Azure** in the Product dropdown.
-7. Complete the request with the relevant information about your issue, bug report, or feedback. If you are contacting us to report an issue, please include the following information, available in the **Properties** section of your deployment, for the support team to begin their investigation:
+1. Complete the request with the relevant information about your issue, bug report, or feedback. If you are contacting us to report an issue, please include the following information, available in the **Properties** section of your deployment, for the support team to begin their investigation:
- Location
- Date and time of the issue
@@ -45,7 +43,7 @@ If your deployment is configured to use F5 WAF for NGINX, please collect the fol
{{< img src="nginxaas-azure/properties.png" alt="Screenshot of the Azure portal showing the Properties section" >}}
-8. Complete the **Additional information** and **Contact details** sections of your case and select **Submit**.
+1. Complete the **Additional information** and **Contact details** sections of your case and select **Submit**.
## Update support contact information
diff --git a/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md b/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md
index 6593413c0..a18e13ad4 100644
--- a/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md
+++ b/content/nginxaas-azure/getting-started/create-deployment/deploy-azure-portal.md
@@ -109,7 +109,7 @@ You can start the NGINXaaS deployment process by visiting the [Create NGINXaaS](
1. To test your deployment, you can go to the IP address noted on the overview page. The default NGINX welcome screen should load.
- {{< call-out "note" >}}You will not see the default NGINX welcome screen if you unchecked "Apply default NGINX configuration" in the [Networking Tab screen]({{< ref "create-deployment.md#networking-tab" >}}) above. You can proceed with providing your own NGINX configuration as outlined in the [NGINX configuration]({{< ref "nginx-configuration.md#networking-tab" >}}) section.{{< /call-out >}}
+ {{< call-out "note" >}}You will not see the default NGINX welcome screen if you unchecked "Apply default NGINX configuration" in the [Networking Tab screen]({{< ref "/nginxaas-azure/getting-started/create-deployment.md#networking-tab" >}}) above. You can proceed with providing your own NGINX configuration as outlined in the [NGINX configuration]({{< ref "/nginxaas-azure/getting-started/nginx-configuration.md#networking-tab" >}}) section.{{< /call-out >}}
{{< img src="nginxaas-azure/test-deployment.png" alt="NGINXaaS Overview page showing the IP address of the deployment in the Essentials section." >}}
diff --git a/content/nginxaas-azure/quickstart/njs-support.md b/content/nginxaas-azure/quickstart/njs-support.md
index 6dff418a1..6532943e5 100644
--- a/content/nginxaas-azure/quickstart/njs-support.md
+++ b/content/nginxaas-azure/quickstart/njs-support.md
@@ -40,4 +40,4 @@ NGINXaaS will not parse, evaluate, or run any provided njs scripts when validati
## "fs" module
-The njs [File System module](http://nginx.org/en/docs/njs/reference.html#njs_api_fs) provides operations with files. NGINXaaS only allows reading and writing from [specified directories]({{< ref "nginx-configuration.md#nginx-process-restrictions" >}}).
+The njs [File System module](http://nginx.org/en/docs/njs/reference.html#njs_api_fs) provides operations with files. NGINXaaS only allows reading and writing from [specified directories]({{< ref "/nginxaas-azure/getting-started/nginx-configuration.md#nginx-process-restrictions" >}}).
diff --git a/content/nginxaas-azure/quickstart/security-controls/oidc.md b/content/nginxaas-azure/quickstart/security-controls/oidc.md
index f67343281..92fd47306 100644
--- a/content/nginxaas-azure/quickstart/security-controls/oidc.md
+++ b/content/nginxaas-azure/quickstart/security-controls/oidc.md
@@ -260,7 +260,7 @@ Configuring NGINXaaS for Azure with OIDC is similar as [Configuring NGINX Plus](
}
```
- b. Set a proper path for `proxy_cache_path`, see [Enable content caching]({{< ref "basic-caching.md" >}}).
+ b. Set a proper path for `proxy_cache_path`, see [Enable content caching]({{< ref "/nginxaas-azure/quickstart/basic-caching.md" >}}).
```nginx
proxy_cache_path /var/cache/nginx/jwt levels=1 keys_zone=jwk:64k max_size=1m;
diff --git a/content/nginxaas-google/_index.md b/content/nginxaas-google/_index.md
new file mode 100644
index 000000000..9d7893f74
--- /dev/null
+++ b/content/nginxaas-google/_index.md
@@ -0,0 +1,39 @@
+---
+title: F5 NGINXaaS for Google Cloud
+nd-subtitle: Managed NGINX service for your Google Cloud application stack
+url: /nginxaas/google/
+nd-landing-page: true
+cascade:
+ logo: F5-NGINXaaS-icon.svg
+nd-content-type: landing-page
+nd-product: N4GC
+---
+
+## About
+
+F5 NGINXaaS for Google Cloud is an IaaS offering that is tightly integrated
+into Google Cloud platform and its ecosystem, making applications fast, efficient,
+and reliable with full lifecycle management of advanced NGINX traffic services.
+
+## Featured content
+
+{{}}
+ {{}}
+ 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
+ {{}}
+{{}}
+
+### Get help
+
+
+{{}}
+ {{}}
+ Get in touch with the NGINX support team for assistance
+ {{}}
+{{}}
diff --git a/content/nginxaas-google/billing/_index.md b/content/nginxaas-google/billing/_index.md
new file mode 100644
index 000000000..88561fe1f
--- /dev/null
+++ b/content/nginxaas-google/billing/_index.md
@@ -0,0 +1,6 @@
+---
+title: Marketplace billing
+weight: 400
+url: /nginxaas/google/billing/
+draft: false
+---
diff --git a/content/nginxaas-google/billing/overview.md b/content/nginxaas-google/billing/overview.md
new file mode 100644
index 000000000..5e60e3c5f
--- /dev/null
+++ b/content/nginxaas-google/billing/overview.md
@@ -0,0 +1,55 @@
+---
+title: Billing overview
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/billing/overview/
+type:
+- concept
+---
+
+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
+
+F5 NGINXaaS 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 >}}
+
+| Component | Cost |
+|---------------------------- | ----------------------------- |
+| Fixed price | $0.10 per hour |
+| NGINX Capacity Units (NCU) | $0.008 per NCU per hour |
+| Data processing | $0.0096 per GB processed |
+
+{{< /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 NGINXaaS 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.
\ No newline at end of file
diff --git a/content/nginxaas-google/billing/usage-and-cost-estimator.md b/content/nginxaas-google/billing/usage-and-cost-estimator.md
new file mode 100644
index 000000000..905c20347
--- /dev/null
+++ b/content/nginxaas-google/billing/usage-and-cost-estimator.md
@@ -0,0 +1,70 @@
+---
+title: Usage and cost estimator
+weight: 200
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/billing/usage-and-cost-estimator/
+type:
+- concept
+---
+
+{{< raw-html >}}
+
+
+
+ Cost Estimation for Enterprise Plan
+
+
+
+
+
+
+
Estimate Monthly Cost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Total Monthly Payment
+ --
+
+
+ Show calculations
+
+
+
+
+{{< /raw-html >}}
diff --git a/content/nginxaas-google/changelog.md b/content/nginxaas-google/changelog.md
new file mode 100644
index 000000000..b8e44805a
--- /dev/null
+++ b/content/nginxaas-google/changelog.md
@@ -0,0 +1,47 @@
+---
+title: "Changelog"
+weight: 900
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/changelog/
+
+---
+
+Learn about the latest updates, new features, and resolved bugs in F5 NGINXaaS for Google Cloud.
+
+To see a list of currently active issues, visit the [Known issues]({{< ref "/nginxaas-google/known-issues.md" >}}) page.
+
+## October 13, 2025
+
+- {{% icon-feature %}} **NGINXaaS for Google Cloud is generally available**
+
+We are pleased to announce the general availability of F5 NGINXaaS for Google Cloud.
+
+F5 NGINXaaS for Google Cloud is a fully managed load balancer and application delivery service that streamlines cloud-native application delivery without the operational complexity of managing infrastructure. This service simplifies the deployment of APIs, microservices, and web applications while enhancing performance, visibility, security, and scalability in Google Cloud.
+
+Key features include adaptive load balancing, advanced connectivity patterns for deployment strategies like blue-green and canary, detailed visibility with over 200 real-time metrics, and strong security controls such as role-based access control and end-to-end encryption. The service also consolidates technology with unified L4/L7 load balancing combined with advanced security and programmability into a single platform for enhanced operational efficiency.
+
+This announcement marks a significant step in application delivery modernization, empowering organizations to improve user experiences and achieve seamless integration with Google Cloud Monitoring.
+
+To learn more, refer to the following resources:
+
+- **Product Information:**
+
+ - [F5 NGINXaaS for Google Cloud](https://www.f5.com/products/nginx/f5-nginxaas-for-google-cloud)
+ - [Overview and architecture]({{< ref "/nginxaas-google/overview/overview.md" >}})
+ - [Getting Started]({{< ref "/nginxaas-google/getting-started/prerequisites/" >}})
+
+- **Blogs:** [F5 NGINXaaS for Google Cloud: Delivering resilient, scalable applications ](https://f5.com/company/blog/delivering-resilient-scalable-applications.html)
+- **Webinars:** [Why F5 NGINXaaS for Google Cloud is a game changer](https://events.actualtechmedia.com/on-demand/1603/why-f5-nginxaas-for-google-cloud-is-a-game-changer/)
+
+Visit the Google Cloud Marketplace and start leveraging NGINXaaS for Google Cloud today!
+
+
+## September 18, 2025
+
+- {{% icon-feature %}} **NGINXaaS for Google Cloud Early Access**
+
+ NGINXaaS for Google Cloud is now available in Early Access. This offering provides a fully managed, scalable, and secure solution for deploying and managing NGINX instances on Google Cloud.
+
+ - To learn more about NGINXaaS for Google Cloud, see the [Overview and architecture]({{< ref "/nginxaas-google/overview/overview.md" >}}) topic.
+ - To deploy NGINXaaS, see the [Getting Started]({{< ref "/nginxaas-google/getting-started/prerequisites/" >}}) guide.
diff --git a/content/nginxaas-google/disaster-recovery.md b/content/nginxaas-google/disaster-recovery.md
new file mode 100644
index 000000000..698879d2b
--- /dev/null
+++ b/content/nginxaas-google/disaster-recovery.md
@@ -0,0 +1,45 @@
+---
+title: Disaster recovery
+weight: 750
+toc: true
+url: /nginxaas/google/disaster-recovery/
+type:
+- how-to
+draft: true
+---
+
+
+This guide describes how to configure disaster recovery (DR) for F5 NGINXaaS for Google Cloud deployments. The deployment architecture ensures users can access backend application servers (upstreams) continuously from an alternative region if the primary NGINXaaS deployment becomes unavailable.
+
+
+### Architecture Overview
+
+
+
+## Prerequisites
+
+
+## Configure disaster recovery
+
+
+### Step 1: Terrraform setup
+
+
+### Step 2: Deploy prerequisite infrastructure
+
+
+### Step 3: Configure app servers (upstreams)
+
+
+### Step 4: Peer the VNets
+
+
+
+### Step 5: Deploy NGINXaaS for Google Cloud in each region
+
+
+### Step 6: DNS and failover
+
+
+## Failover process
+
diff --git a/content/nginxaas-google/get-help/_index.md b/content/nginxaas-google/get-help/_index.md
new file mode 100644
index 000000000..b88413f1a
--- /dev/null
+++ b/content/nginxaas-google/get-help/_index.md
@@ -0,0 +1,5 @@
+---
+title: Get help
+weight: 700
+url: /nginxaas/google/get-help/
+---
diff --git a/content/nginxaas-google/get-help/support.md b/content/nginxaas-google/get-help/support.md
new file mode 100644
index 000000000..542dcba28
--- /dev/null
+++ b/content/nginxaas-google/get-help/support.md
@@ -0,0 +1,41 @@
+---
+title: Support
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/get-help/support
+type:
+- how-to
+---
+
+## Contact F5 support
+
+To contact support about F5 NGINXaaS for Google Cloud (NGINXaaS):
+
+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. Select **NGINX Products** as the product family.
+
+1. Select **NGINXaaS for Google Cloud** in the Product dropdown.
+
+1. Fill out the **Subject** and **Description** sections, and include the following details about the specific issue:
+
+ 1. Identifying Information:
+ - Deployment identifier (Object ID and name)
+ - Account identifier/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: creating a deployment, uploading a configuration, adding a certificate, and so on)
+ - Any error messages displayed
+ - The time when the issue occurred
+
+1. Fill out the fields in the **Additional information** section including:
+
+ - **Subscription ID**: select your F5 or NGINX subscription ID (use `No subscription available` if you don't have one)
+ - **Assign a priority**
+ - **Reason for contact**
+
+1. Complete the **Contact details** section of your case and select **Submit**.
diff --git a/content/nginxaas-google/get-help/troubleshooting.md b/content/nginxaas-google/get-help/troubleshooting.md
new file mode 100644
index 000000000..f71139af2
--- /dev/null
+++ b/content/nginxaas-google/get-help/troubleshooting.md
@@ -0,0 +1,9 @@
+---
+title: Troubleshooting guide
+toc: false
+url: /nginxaas/google/get-help/troubleshooting
+weight: 300
+draft: true
+---
+
+
diff --git a/content/nginxaas-google/getting-started/_index.md b/content/nginxaas-google/getting-started/_index.md
new file mode 100644
index 000000000..b94e09050
--- /dev/null
+++ b/content/nginxaas-google/getting-started/_index.md
@@ -0,0 +1,6 @@
+---
+title: Getting started
+weight: 200
+draft: false
+url: /nginxaas/google/getting-started/
+---
diff --git a/content/nginxaas-google/getting-started/create-deployment/_index.md b/content/nginxaas-google/getting-started/create-deployment/_index.md
new file mode 100644
index 000000000..242d27e0a
--- /dev/null
+++ b/content/nginxaas-google/getting-started/create-deployment/_index.md
@@ -0,0 +1,5 @@
+---
+title: Create a deployment
+weight: 200
+url: /nginxaas/google/getting-started/create-deployment/
+---
diff --git a/content/nginxaas-google/getting-started/create-deployment/deploy-console.md b/content/nginxaas-google/getting-started/create-deployment/deploy-console.md
new file mode 100644
index 000000000..ceac90a9a
--- /dev/null
+++ b/content/nginxaas-google/getting-started/create-deployment/deploy-console.md
@@ -0,0 +1,109 @@
+---
+title: Deploy using the NGINXaaS Console
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/getting-started/create-deployment/deploy-console/
+type:
+- how-to
+---
+
+## 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.
+
+## Before you begin
+
+Before you can deploy NGINXaaS, follow the steps in the [Prerequisites]({{< ref "/nginxaas-google/getting-started/prerequisites/" >}}) topic to subscribe to the NGINXaaS for Google Cloud offering in the Google Cloud Marketplace.
+
+### Create a network attachment
+
+NGINXaaS requires a [network attachment](https://cloud.google.com/vpc/docs/about-network-attachments) to connect your consumer Virtual Private Cloud (VPC) network and your NGINXaaS deployment's VPC network.
+
+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.
+ - The region you choose in this step must match the region where your NGINXaaS deployment will be created.
+1. Create a network attachment in your new subnet that automatically accepts connections. See [Google's documentation on creating a network attachment](https://cloud.google.com/vpc/docs/create-manage-network-attachments#console_1) for a step-by-step guide.
+1. Make a note of the network attachment ID. You will need it in the next steps to create your NGINXaaS deployment.
+
+ {{< call-out "caution" >}}NGINXaaS for Google Cloud currently supports the following regions:
+
+ {{< table "table" >}}
+ |NGINXaaS Geography | Google Cloud Regions |
+ |-----------|---------|
+ | US | us-west1, us-east1, us-central1 |
+ | EU | europe-west2, europe-west1 |
+ {{< /table >}}
+
+ {{< /call-out >}}
+
+## Access the NGINXaaS Console
+
+Once you have completed the subscription process and created a network attachment, you can access the NGINXaaS Console.
+
+- Visit [https://console.nginxaas.net/](https://console.nginxaas.net/) to access the NGINXaaS Console.
+- Log in to the console with your Google credentials.
+- Select the appropriate Geography to work in, based on the region your network attachment was created in.
+
+## Create or import an NGINX configuration
+
+{{< include "/nginxaas-google/create-or-import-nginx-config.md" >}}
+
+## Create a new deployment
+
+Next, create a new NGINXaaS deployment using the NGINXaaS 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.
+ - This value must be a multiple of `10`.
+ - In the Cloud Details section, enter the network attachment ID that [you created earlier](#create-a-network-attachment) or select it in the **Network attachment** list.
+ - The network attachment ID is formatted like the following example: `projects/my-google-project/regions/us-east1/networkAttachments/my-network-attachment`.
+ - 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.
+ - 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".
+
+## Configure your deployment
+
+In the NGINXaaS 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, and NCU Capacity.
+ - You can also configure monitoring from here. Detailed instructions can be found in [Enable Monitoring]({{< ref "/nginxaas-google/monitoring/enable-monitoring.md" >}})
+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 "/nginxaas-google/getting-started/nginx-configuration/nginx-configuration-console.md#update-an-nginx-configuration" >}}).
+
+## Set up connectivity to your deployment
+
+To set up connectivity to your NGINXaaS deployment, you will need to configure a [Private Service Connect backend](https://cloud.google.com/vpc/docs/private-service-connect-backends).
+
+1. Access the [Google Cloud Console](https://console.cloud.google.com/).
+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 Network Endpoint Group (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.
+ - For **Target service**, enter your NGINXaaS 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 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 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`.
+
+## Test your deployment
+
+1. To test your deployment, go to the IP address created in [Set up connectivity to your deployment]({{< ref "/nginxaas-google/getting-started/create-deployment/deploy-console.md#set-up-connectivity-to-your-deployment" >}}) using your favorite web browser.
+
+## What's next
+
+[Manage your NGINXaaS users]({{< ref "/nginxaas-google/getting-started/manage-users-accounts.md" >}})
\ No newline at end of file
diff --git a/content/nginxaas-google/getting-started/create-deployment/deploy-terraform.md b/content/nginxaas-google/getting-started/create-deployment/deploy-terraform.md
new file mode 100644
index 000000000..81d2e27b0
--- /dev/null
+++ b/content/nginxaas-google/getting-started/create-deployment/deploy-terraform.md
@@ -0,0 +1,29 @@
+---
+title: Deploy using Terraform
+weight: 300
+toc: true
+url: /nginxaas/google/getting-started/create-deployment/deploy-terraform/
+type:
+- how-to
+draft: true
+---
+
+## Overview
+
+F5 NGINXaaS for Google Cloud (NGINXaaS) deployments can be managed using Terraform. This document outlines common Terraform workflows for NGINXaaS.
+
+## Prerequisites
+
+{{< include "/nginxaas-google/terraform-prerequisites.md" >}}
+
+## Create a deployment
+
+
+## Delete a deployment
+
+
+## Additional resources
+
+- If you're just starting with Terraform, you can learn more on their [official website](https://www.terraform.io/).
+
+{{< include "/nginxaas-google/terraform-resources.md" >}}
\ No newline at end of file
diff --git a/content/nginxaas-google/getting-started/manage-users-accounts.md b/content/nginxaas-google/getting-started/manage-users-accounts.md
new file mode 100644
index 000000000..5655a632d
--- /dev/null
+++ b/content/nginxaas-google/getting-started/manage-users-accounts.md
@@ -0,0 +1,71 @@
+---
+title: Manage users and accounts
+weight: 300
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/getting-started/manage-users-accounts/
+type:
+- how-to
+---
+
+## Overview
+
+This document explains how to manage users and accounts in F5 NGINXaaS for Google Cloud using the NGINXaaS console.
+
+Before you start, ensure you understand the following concepts:
+
+- **NGINXaaS Account**: An NGINXaaS Account is created when you subscribe to *F5 NGINXaaS for Google Cloud* via the Google Cloud Marketplace, as described in [prerequisites]({{< ref "/nginxaas-google/getting-started/prerequisites.md" >}}). You may create multiple NGINXaaS Accounts by signing up with different GCP billing accounts.
+- **User**: NGINXaaS Users are granted access to all resources in the NGINXaaS Account. User authentication is performed securely via Google Cloud, requiring a matching identity. Individuals can be added as users to multiple NGINXaaS Accounts, and can switch between them using the steps documented below.
+- **Authorized Domains**: The list of domains allowed to authenticate into the NGINXaaS Account using Google authentication.
+ - 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 NGINXaaS Account 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 NGINXaaS Account has an empty authorized domains list, which accepts matching users from any Google Workspace.
+
+## Add or edit a user
+
+An existing NGINXaaS Account user can add additional users following these steps:
+
+1. Access the [NGINXaaS Console](https://console.nginxaas.net/).
+1. Log in to the console with your Google credentials.
+1. Navigate to **Users** page on the left menu, then select **Add User**.
+1. Enter the **Email** address for the user to be added. The email must match the individual's Google User to be able to authenticate successfully.
+1. Select **Create User** to save the changes.
+
+The new user will appear in the list of users on the **Users** page. Their **Google Identity Domain** will remain empty until they log in for the first time.
+
+## Modify account settings
+
+As an authenticated user, you may modify the authorized domains and name of an NGINXaaS Account.
+
+
+### Modify Authorized Domains
+
+1. Select **Account Details** under the **Settings** section on the left menu.
+1. Select **Edit** in the **Authorized Domains** section.
+1. To add a new authorized domain, select **Add Domain** and enter the new domain.
+1. To remove an existing authorized domain, select the Recycle Bin button next to it.
+1. Select **Update** to save changes.
+
+{{< call-out "note" >}}You cannot remove an authorized domain from the list if it matches an existing user's Google Identity Domain. To remove access from that domain you must first delete every NGINXaaS user that is associated with the domain.{{< /call-out >}}
+
+### Modify the name of an account
+
+1. Select **Account Details** under the **Settings** section on the left menu.
+2. Select **Edit** in the **Account Info** section.
+3. Enter new name in **Account Name** field, then select **Update** to save changes.
+
+## Switch accounts
+
+To switch to a different NGINXaaS Account, select the profile symbol in the top right corner and choose **Switch Account**. This opens a page showing the list of all the NGINXaaS Accounts that your Google Identity is linked to; select the account you want to switch to.
+
+## Delete a user
+
+An authenticated user can delete other users (other than their own user account). Deletion is irreversible; the deleted user will no longer be able to access the NGINXaaS Account.
+
+To delete a user in an NGINXaaS Account:
+
+1. Select **Account 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 certificates using the NGINXaaS Console]({{< ref "/nginxaas-google/getting-started/ssl-tls-certificates/ssl-tls-certificates-console.md" >}})
\ No newline at end of file
diff --git a/content/nginxaas-google/getting-started/manual-scaling.md b/content/nginxaas-google/getting-started/manual-scaling.md
new file mode 100644
index 000000000..8e9c2859d
--- /dev/null
+++ b/content/nginxaas-google/getting-started/manual-scaling.md
@@ -0,0 +1,55 @@
+---
+title: Scale your deployment
+weight: 400
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/getting-started/manual-scaling/
+type:
+- how-to
+---
+
+F5 NGINXaaS for Google Cloud (NGINXaaS) supports manual scaling of your deployment, allowing you to adapt to application traffic demands while controlling cost.
+
+An NGINXaaS deployment can be scaled out to increase the capacity or scaled in to decrease the capacity. Capacity is measured in [NGINX Capacity Units (NCU)](#nginx-capacity-unit-ncu).
+
+In this document you will learn:
+
+- What an NGINX Capacity Unit (NCU) is
+- How to manually scale your deployment
+- What capacity restrictions apply for your plan
+- How to monitor capacity usage
+- How to estimate the amount of capacity to provision
+
+## NGINX Capacity Unit (NCU)
+
+An NGINX Capacity Unit (NCU) quantifies the capacity of an NGINX instance based on the underlying compute resources. This abstraction allows you to specify the desired capacity in NCUs without having to consider the regional hardware differences.
+
+## Manual scaling
+
+To update the capacity of your deployment using the console,
+
+In the NGINXaaS Console,
+
+1. On the left menu, select **Deployments**.
+2. Select the deployment you wish to edit the NCU capacity for.
+3. On the **Details** tab, select the **Edit** button on the right to open the Edit Deployment Metadata pane
+ - Enter the desired value for the **NCU Capacity** under **Scale**.
+ - Select **Update** to begin the scaling process.
+
+The status of the deployment will be "Pending" while the deployment's capacity is being changed. Once the requested capacity provisioning is complete, the status will change to "Ready".
+
+ {{< call-out "note" >}}There's no downtime while an NGINXaaS deployment changes capacity.{{< /call-out >}}
+
+## Capacity restrictions
+
+The following table outlines constraints on the specified capacity based on the chosen Marketplace plan, including the minimum capacity required for a deployment to be highly available, the maximum capacity, and what value the capacity must be a multiple of. By default, an NGINXaaS for Google Cloud deployment will be created with a capacity of 20 NCUs.
+
+{{}}
+
+| **Marketplace Plan** | **Minimum Capacity (NCUs)** | **Maximum Capacity (NCUs)** | **Multiple of** |
+|------------------------------|-----------------------------|-----------------------------|----------------------------|
+| Enterprise plan(s) | 10 | 100 | 10 |
+
+{{}}
+
+{{< call-out "note" >}}If you have higher capacity needs than the maximum capacity, please [open a request](https://my.f5.com/manage/s/) and specify the Resource ID of your NGINXaaS deployment, the region, and the desired maximum capacity you wish to scale to.{{< /call-out >}}
diff --git a/content/nginxaas-google/getting-started/nginx-configuration/_index.md b/content/nginxaas-google/getting-started/nginx-configuration/_index.md
new file mode 100644
index 000000000..7d6942d00
--- /dev/null
+++ b/content/nginxaas-google/getting-started/nginx-configuration/_index.md
@@ -0,0 +1,5 @@
+---
+title: Upload an NGINX configuration
+weight: 500
+url: /nginxaas/google/getting-started/nginx-configuration/
+---
diff --git a/content/nginxaas-google/getting-started/nginx-configuration/nginx-configuration-console.md b/content/nginxaas-google/getting-started/nginx-configuration/nginx-configuration-console.md
new file mode 100644
index 000000000..e187b0daf
--- /dev/null
+++ b/content/nginxaas-google/getting-started/nginx-configuration/nginx-configuration-console.md
@@ -0,0 +1,37 @@
+---
+title: Create or upload using the NGINXaaS Console
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/getting-started/nginx-configuration/nginx-configuration-console/
+type:
+- how-to
+---
+
+You can apply an NGINX configuration to your F5 NGINXaaS for Google Cloud (NGINXaaS) deployment using the NGINXaaS Console.
+
+## Prerequisites
+
+- If you haven't done it yet, follow the steps in the [Prerequisites]({{< ref "/nginxaas-google/getting-started/prerequisites/" >}}) topic to subscribe to the NGINXaaS for Google Cloud offer in the Google Cloud Marketplace.
+
+## Access the NGINXaaS Console
+
+{{< include "/nginxaas-google/access-console.md" >}}
+
+## Create or import an NGINX configuration
+
+{{< include "/nginxaas-google/create-or-import-nginx-config.md" >}}
+
+## Update an NGINX configuration
+
+{{< include "/nginxaas-google/update-nginx-config.md" >}}
+
+## Delete NGINX configuration Files
+
+1. On the left menu, select **Configurations**.
+1. On the list of configurations, select the ellipses (three dots) icon next to the configuration you want to delete.
+1. Select **Delete**.
+1. Confirm that you want to delete the configuration.
+
+## What's next
+[Monitor your deployment]({{< ref "/nginxaas-google/monitoring/enable-monitoring.md" >}})
\ No newline at end of file
diff --git a/content/nginxaas-google/getting-started/nginx-configuration/nginx-configurations-terraform.md b/content/nginxaas-google/getting-started/nginx-configuration/nginx-configurations-terraform.md
new file mode 100644
index 000000000..1e380af86
--- /dev/null
+++ b/content/nginxaas-google/getting-started/nginx-configuration/nginx-configurations-terraform.md
@@ -0,0 +1,31 @@
+---
+title: Upload using Terraform
+weight: 300
+toc: true
+url: /nginxaas/google/getting-started/nginx-configuration/nginx-configurations-terraform/
+type:
+- how-to
+draft: true
+---
+
+
+## Overview
+
+F5 NGINXaaS for Google Cloud (NGINXaaS) configurations can be managed using Terraform. This document outlines common Terraform workflows for NGINXaaS.
+
+## Prerequisites
+
+{{< include "/nginxaas-google/terraform-prerequisites.md" >}}
+
+## Upload an NGINX configuration
+
+
+## Manage an NGINX configuration
+
+
+## Delete a deployment
+
+
+## Additional resources
+
+{{< include "/nginxaas-google/terraform-resources.md" >}}
diff --git a/content/nginxaas-google/getting-started/nginx-configuration/overview.md b/content/nginxaas-google/getting-started/nginx-configuration/overview.md
new file mode 100644
index 000000000..fbaedb1d2
--- /dev/null
+++ b/content/nginxaas-google/getting-started/nginx-configuration/overview.md
@@ -0,0 +1,884 @@
+---
+title: Overview
+weight: 50
+toc: true
+url: /nginxaas/google/getting-started/nginx-configuration/overview/
+type:
+- how-to
+---
+
+
+This document provides details about using NGINX configuration files with your
+F5 NGINXaaS for Google Cloud deployment, restrictions, and available directives.
+
+## NGINX configuration common user workflows
+
+NGINX configurations can be uploaded to your NGINXaaS for Google Cloud deployment using the console. The following documents provide detailed steps on how to upload NGINX configurations:
+
+- [Upload using the console]({{< ref "/nginxaas-google/getting-started/nginx-configuration/nginx-configuration-console.md" >}})
+
+The topics below provide information on NGINX configuration restrictions and directives that are supported by NGINXaaS for Google Cloud when using any of the above workflows.
+
+
+## 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 principal 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" >}} |
+ | /var/cache/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} | {{< icon "check" >}} |
+ | /var/log/nginx | | {{< icon "check" >}} | {{< icon "check" >}} | | |
+ | /var/spool/nginx | | {{< 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 "/nginxaas-google/get-help.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 | NGINXaaS 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. |
+ | `pid` | `/run/nginx/nginx.pid` | Set to this value to allow NGINXaaS to automatically manage the NGINX master process. |
+ | `daemon` | `on` | Automatically set to `on` to allow NGINXaaS to manage the NGINX master process. |
+ | `master_process` | `on` | This directive is intended for NGINX developers. |
+ | `worker_cpu_affinity` | `auto` | The value `auto` allows binding worker processes automatically to available CPUs based on the current capacity of the deployment. |
+
+{{< /table >}}
+
+## Configuration directives list
+
+
+Alphabetical index of directives
+
+NGINXaaS supports a limited set of NGINX 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)\
+[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)\
+
diff --git a/content/nginxaas-google/getting-started/prerequisites.md b/content/nginxaas-google/getting-started/prerequisites.md
new file mode 100644
index 000000000..0ab634788
--- /dev/null
+++ b/content/nginxaas-google/getting-started/prerequisites.md
@@ -0,0 +1,32 @@
+---
+title: Prerequisites
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/getting-started/prerequisites/
+type:
+- how-to
+---
+
+Before you can deploy F5 NGINXaaS for Google Cloud (NGINXaaS), you need to complete some prerequisites.
+
+## Subscribe to the NGINXaaS for Google Cloud offering
+
+If it's your first time using NGINXaaS 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. Use the link provided by the F5 sales team to access the NGINXaaS for Google Cloud offering in the [Google Cloud Marketplace](https://console.cloud.google.com/marketplace).
+1. Login with your Google Cloud account.
+1. Select **Subscribe** to subscribe to the NGINXaaS for Google Cloud offering.
+1. Select the **Enterprise** plan using the dropdown menu.
+ - You can use the pricing calculator to estimate 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**. You will be presented with a NGINXaaS welcome page upon success.
+1. You can now log into the NGINXaaS for Google Cloud console by selecting **Manage on provider** from the Google Cloud Marketplace.
+
+## What's next
+
+[Create a Deployment]({{< ref "/nginxaas-google/getting-started/create-deployment/deploy-console.md" >}})
diff --git a/content/nginxaas-google/getting-started/ssl-tls-certificates/_index.md b/content/nginxaas-google/getting-started/ssl-tls-certificates/_index.md
new file mode 100644
index 000000000..78bcc324b
--- /dev/null
+++ b/content/nginxaas-google/getting-started/ssl-tls-certificates/_index.md
@@ -0,0 +1,5 @@
+---
+title: Add SSL-TLS certificates
+weight: 400
+url: /nginxaas/google/getting-started/ssl-tls-certificates/
+---
diff --git a/content/nginxaas-google/getting-started/ssl-tls-certificates/overview.md b/content/nginxaas-google/getting-started/ssl-tls-certificates/overview.md
new file mode 100644
index 000000000..14f13ca9d
--- /dev/null
+++ b/content/nginxaas-google/getting-started/ssl-tls-certificates/overview.md
@@ -0,0 +1,41 @@
+---
+title: Overview
+weight: 50
+toc: true
+url: /nginxaas/google/getting-started/ssl-tls-certificates/overview/
+type:
+- how-to
+---
+
+
+F5 NGINXaaS for Google Cloud (NGINXaaS) enables customers to secure traffic by adding SSL/TLS certificates to a deployment. NGINXaaS can fetch certificates directly from Google Cloud Secret Manager, rotate certificates, and provide observability on the status of your certificates.
+
+This document provides details about using SSL/TLS certificates with your F5 NGINXaaS for Google Cloud deployment.
+
+## Supported certificate types and formats
+
+NGINXaaS supports certificates of the following types:
+
+- Self-signed
+- Domain Validated (DV)
+- Organization Validated (OV)
+- Extended Validation (EV)
+
+NGINX supports the following certificate formats:
+
+- PEM format certificates.
+
+NGINXaaS allows you to upload these certificates as text and as files.
+
+Encrypt your certificates, keys, and PEM files using one of these standards:
+
+- RSA
+- ECC/ECDSA
+
+
+## Add SSL/TLS certificates
+
+Add a certificate to your NGINXaaS deployment using your preferred client tool:
+
+- [Add certificates using the NGINXaaS Console]({{< ref "/nginxaas-google/getting-started/ssl-tls-certificates/ssl-tls-certificates-console.md" >}})
+
diff --git a/content/nginxaas-google/getting-started/ssl-tls-certificates/ssl-tls-certificates-console.md b/content/nginxaas-google/getting-started/ssl-tls-certificates/ssl-tls-certificates-console.md
new file mode 100644
index 000000000..38b4d2824
--- /dev/null
+++ b/content/nginxaas-google/getting-started/ssl-tls-certificates/ssl-tls-certificates-console.md
@@ -0,0 +1,77 @@
+---
+title: Add certificates using the Console
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/getting-started/ssl-tls-certificates/ssl-tls-certificates-console/
+type:
+- how-to
+---
+
+You can manage SSL/TSL certificates for F5 NGINXaaS for Google Cloud (NGINXaaS) using the NGINXaaS console.
+
+## Prerequisites
+
+If you haven't already done so, complete the following prerequisites:
+
+- Subscribe to the NGINXaaS for Google Cloud offer. See [Subscribe to the NGINXaaS for Google Cloud offer]({{< ref "/nginxaas-google/getting-started/prerequisites.md" >}}).
+- Create a deployment. See [Deploy using the console]({{< ref "/nginxaas-google/getting-started/create-deployment/deploy-console.md" >}}).
+- Access the console visiting [https://console.nginxaas.net/](https://console.nginxaas.net/).
+- Log in to the NGINXaaS console with your Google credentials.
+
+## Add an SSL/TLS certificate to NGINXaaS
+
+- 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 NGINXaaS](#add-an-ssltls-certificate-to-nginxaas).
+ - 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. |
+
+ {{< /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 "/nginxaas-google/update-nginx-config.md" >}}
+
+### Delete an SSL/TLS certificate
+
+- Select **Certificates** in the left menu.
+- On the list of certificates, select the ellipses (three dots) icon next to the certificate you want to delete.
+- Select **Delete**.
+- Confirm that you want to delete the certificate.
+
+{{< call-out "warning" >}}Deleting a TLS/SSL certificate currently in-use by the NGINXaaS for Google Cloud deployment will cause an error.{{< /call-out >}}
+
+
+## What's next
+
+[Upload an NGINX Configuration]({{< ref "/nginxaas-google/getting-started/nginx-configuration/nginx-configuration-console.md" >}})
diff --git a/content/nginxaas-google/glossary.md b/content/nginxaas-google/glossary.md
new file mode 100644
index 000000000..3dc00c2f5
--- /dev/null
+++ b/content/nginxaas-google/glossary.md
@@ -0,0 +1,26 @@
+---
+title: Glossary
+weight: 900
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/glossary/
+type:
+- reference
+---
+
+This document provides definitions for terms and acronyms commonly used in F5 NGINXaaS for Google Cloud (NGINXaaS) documentation.
+
+{{
}}
+
+| Term | Description |
+| ------------------------ | -------------------------------------------------------------------------------------|
+| Authorized Domains | The list of domains allowed to authenticate into the NGINXaaS Account using Google authentication. - 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 NGINXaaS Account to only allow `example.com`, users attempting to log in with the same email associated with `alternative.net` Google Workspace would not be authenticated. |
+| GC (Geographical Controller)| 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. We currently have presence in two Geographies: **US** and **EU**. |
+| NGINXaas Account | Represents a Google Cloud procurement with an active Marketplace NGINXaaS subscription, linked to a billing account. To create an account, see the signup documentation in [prerequisites]({{< ref "/nginxaas-google/getting-started/prerequisites.md" >}}). |
+| NGINXaaS User | NGINXaaS Users are granted access to all resources in the NGINXaaS Account. User authentication is performed securely via Google Cloud, requiring a matching identity. Individuals can be added as users to multiple NGINXaaS Accounts, and can switch between them using the steps documented below. |
+| Network attachment | A Google Cloud resource that enables a VM instance to connect to a VPC network. [More information](https://cloud.google.com/vpc/docs/about-network-attachments). |
+| VPC network | A Virtual Private Cloud (VPC) network is a virtual version of a physical network, implemented within Google Cloud. It provides networking functionality for your Google Cloud resources. [More information](https://cloud.google.com/vpc/docs/vpc). |
+
+
+
+{{
}}
\ No newline at end of file
diff --git a/content/nginxaas-google/known-issues.md b/content/nginxaas-google/known-issues.md
new file mode 100644
index 000000000..031f682d1
--- /dev/null
+++ b/content/nginxaas-google/known-issues.md
@@ -0,0 +1,12 @@
+---
+title: "Known issues"
+weight: 1000
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/known-issues/
+
+---
+
+List of known issues in the latest release of F5 NGINXaaS for Google Cloud (NGINXaaS).
+
+_There are currently no known issues._
diff --git a/content/nginxaas-google/monitoring/_index.md b/content/nginxaas-google/monitoring/_index.md
new file mode 100644
index 000000000..b42e915b4
--- /dev/null
+++ b/content/nginxaas-google/monitoring/_index.md
@@ -0,0 +1,5 @@
+---
+title: Logging and monitoring
+weight: 300
+url: /nginxaas/google/monitoring/
+---
diff --git a/content/nginxaas-google/monitoring/access-management.md b/content/nginxaas-google/monitoring/access-management.md
new file mode 100644
index 000000000..b7e4cac47
--- /dev/null
+++ b/content/nginxaas-google/monitoring/access-management.md
@@ -0,0 +1,70 @@
+---
+title: Identity and access management
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/getting-started/access-management/
+type:
+- how-to
+---
+
+
+
+F5 NGINXaaS for Google Cloud (NGINXaaS) leverages Workload Identity Federation (WIF) to integrate with Google Cloud services. For example, when WIF is configured, NGINXaaS can export logs and metrics from your deployment to Cloud Monitoring in your chosen Google project. To learn more about WIF on Google Cloud, 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 NGINXaaS deployment. See [our documentation on creating an NGINXaaS deployment]({{< ref "/nginxaas-google/getting-started/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=='$NGINXAAS_SERVICE_ACCOUNT_UNIQUE_ID'` where `$NGINXAAS_SERVICE_ACCOUNT_UNIQUE_ID` is your NGINXaaS deployment's service account's unique ID.
+
+### Grant access to the WIF principal with your desired roles
+
+In the [Google Cloud Console](https://console.cloud.google.com/),
+1. Select your google project you want to grant access on. For example, to grant access to export logs to a Google project, `$LOG_PROJECT_ID`, or to export metrics to a Google project, `$METRIC_PROJECT_ID`, go to that 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/$NGINXAAS_SERVICE_ACCOUNT_UNIQUE_ID`.
+1. Assign roles. For example,
+ - To grant access to export logs, add the **Logs Writer** role.
+ - To grant access to export metrics, add the **Monitoring Metric Writer** role.
+
+Alternatively, to use the Google Cloud CLI, you can run the following `gcloud` commands.
+- To grant access to export logs to a Google project, `$LOG_PROJECT_ID`,
+ ```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/$NGINXAAS_SERVICE_ACCOUNT_UNIQUE_ID" \
+ --role='roles/logging.logWriter'
+ ```
+- To grant access to export metrics to a Google project, `$METRIC_PROJECT_ID`,
+ ```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/$NGINXAAS_SERVICE_ACCOUNT_UNIQUE_ID" \
+ --role='roles/monitoring.metricWriter'
+ ```
+
+See [Google's documentation on granting access](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#access) for more information.
+
+### Update your NGINXaaS deployment with the name of your workload identity pool provider
+
+In the NGINXaaS 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
+
+[Add SSL/TLS Certificates]({{< ref "/nginxaas-google/getting-started/ssl-tls-certificates/ssl-tls-certificates-console.md" >}})
diff --git a/content/nginxaas-google/monitoring/configure-alerts.md b/content/nginxaas-google/monitoring/configure-alerts.md
new file mode 100644
index 000000000..eb3a96098
--- /dev/null
+++ b/content/nginxaas-google/monitoring/configure-alerts.md
@@ -0,0 +1,21 @@
+---
+title: Configure alerts
+weight: 300
+toc: true
+draft: true
+nd-docs: DOCS-000
+url: /nginxaas/google/monitoring/configure-alerts/
+type:
+- how-to
+---
+
+This guide explains how to create and configure metrics-based alerts for your F5 NGINXaaS for Google Cloud
+deployment.
+
+
+## Prerequisites
+
+
+
+## Create metrics-based alerts for proactive monitoring.
+
diff --git a/content/nginxaas-google/monitoring/enable-monitoring.md b/content/nginxaas-google/monitoring/enable-monitoring.md
new file mode 100644
index 000000000..7dc2c29f3
--- /dev/null
+++ b/content/nginxaas-google/monitoring/enable-monitoring.md
@@ -0,0 +1,113 @@
+---
+title: Enable monitoring
+weight: 200
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/monitoring/enable-monitoring/
+type:
+- how-to
+---
+
+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
+
+- 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 "/nginxaas-google/monitoring/access-management.md#configure-wif" >}}) for exact steps.
+- Grant a project-level role or grant your principal access to the `roles/monitoring.viewer` role. See [Google's documentation on controlling access to Cloud Monitoring with IAM](https://cloud.google.com/monitoring/access-control).
+
+## Export NGINXaaS 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 NGINXaaS deployment]({{< ref "/nginxaas-google/getting-started/create-deployment/" >}}) for a step-by-step guide. 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. Enter the project you want metrics to be send to under **Metric Project ID**.
+1. Select **Update**.
+
+## View NGINXaaS metrics in Google Cloud Monitoring
+
+See the [Metrics Catalog]({{< ref "/nginxaas-google/monitoring/metrics-catalog.md" >}}) for a full list of metrics NGINXaaS 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.
+
+### Google Cloud Monitoring API
+
+You can retrieve raw time series metrics from the [Cloud Monitoring API](https://cloud.google.com/monitoring/api/v3).
+
+For example, you can use [`projects.timeSeries.list`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) to list metrics matching filters from a specified time interval. The following `curl` command lists `nginx.http.requests` metrics from the time interval `start_time` to `end_time` in the given `project_id`.
+
+```bash
+curl \
+ "https://monitoring.googleapis.com/v3/projects/{project_id}/timeSeries?filter=metric.type%3D%22workload.googleapis.com%2Fnginx.http.requests%22&interval.endTime={end_time}&interval.startTime={start_time}" \
+ --header "Authorization: Bearer $(gcloud auth print-access-token)" \
+ --header "Accept: application/json" \
+ --compressed
+```
+
+See [Google's documentation to authenticate for using REST](https://cloud.google.com/docs/authentication/rest) for more information.
+
+The following JSON shows an example response body:
+
+```json
+{
+ "timeSeries": [
+ {
+ "metric": {
+ "labels": {
+ "nginxaas_deployment_location": "us-east1",
+ "nginxaas_deployment_object_id": "depl_AZjtL2OUdCeh-DROeCLp1w",
+ "nginxaas_account_id": "account-id",
+ "service_name": "unknown_service:naasagent",
+ "instrumentation_source": "naasagent",
+ "nginxaas_deployment_name": "test-deployment",
+ "nginxaas_namespace": "default"
+ },
+ "type": "workload.googleapis.com/nginx.http.requests"
+ },
+ "resource": {
+ "type": "generic_node",
+ "labels": {
+ "node_id": "",
+ "location": "global",
+ "namespace": "",
+ "project_id": "{project_id}"
+ }
+ },
+ "metricKind": "CUMULATIVE",
+ "valueType": "INT64",
+ "points": [
+ {
+ "interval": {
+ "startTime": "{start_time}",
+ "endTime": "{end_time}"
+ },
+ "value": {
+ "int64Value": "1405"
+ }
+ }
+ ]
+ }
+ ],
+}
+```
+
+{{< call-out "note" >}}Many of NGINX Plus's advanced statistics need to be enabled in the "nginx.conf" file before they will appear in the Metrics Explorer, for example "plus.http.request.bytes_*". Refer to [Gathering Data to Appear in Statistics]({{< ref "/nginx/admin-guide/monitoring/live-activity-monitoring.md#gathering-data-to-appear-in-statistics" >}}) to learn more.{{< /call-out >}}
+
+## Disable exporting NGINXaaS metrics to a Google Cloud project
+
+To disable sending metrics to your Google Cloud project, update your NGINXaaS deployment to remove the reference to your project ID. 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. Remove the project ID under **Metric Project ID**.
+1. Select **Update**.
+
diff --git a/content/nginxaas-google/monitoring/enable-nginx-logs.md b/content/nginxaas-google/monitoring/enable-nginx-logs.md
new file mode 100644
index 000000000..6c58ffa7c
--- /dev/null
+++ b/content/nginxaas-google/monitoring/enable-nginx-logs.md
@@ -0,0 +1,64 @@
+---
+title: Enable NGINX logs
+weight: 350
+toc: true
+draft: false
+nd-docs: DOCS-000
+url: /nginxaas/google/monitoring/enable-nginx-logs/
+type:
+- how-to
+---
+
+F5 NGINXaaS for Google (NGINXaaS) supports integrating with Google Cloud services to collect NGINX error and access logs.
+
+## Prerequisites
+
+- Configure Workload Identity Federation (WIF). See [our documentation on setting up WIF]({{< ref "/nginxaas-google/monitoring/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-google/logging-config-error-logs.md" >}}
+
+## Setting up access logs
+
+{{< include "/nginxaas-google/logging-config-access-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 NGINXaaS deployment]({{< ref "/nginxaas-google/getting-started/create-deployment/" >}}) for a step-by-step guide. To update the deployment, in the NGINXaaS 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 send 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`
+* `nginxaas_account_id`
+* `nginxaas_deployment_location`
+* `nginxaas_deployment_name`
+* `nginxaas_deployment_object_id`
+* `nginxaas_namespace`
+
+## Disable Exporting NGINX logs to a Google Cloud Project
+
+To disable sending logs to your Google Cloud project, update your NGINXaaS deployment to remove the reference to your project ID. 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. Remove the project ID under **Log Project ID**.
+1. Select **Update**.
+
diff --git a/content/nginxaas-google/monitoring/metrics-catalog.md b/content/nginxaas-google/monitoring/metrics-catalog.md
new file mode 100644
index 000000000..ce6f54197
--- /dev/null
+++ b/content/nginxaas-google/monitoring/metrics-catalog.md
@@ -0,0 +1,160 @@
+---
+title: Metrics catalog
+weight: 400
+toc: false
+nd-docs: DOCS-000
+url: /nginxaas/google/monitoring/metrics-catalog/
+type:
+- concept
+---
+
+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.
+
+## Available metrics
+
+- [Available metrics](#available-metrics)
+- [Metrics](#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 worker statistics](#nginx-worker-statistics)
+ - [NGINX upstream statistics](#nginx-upstream-statistics)
+ - [NGINX stream statistics](#nginx-stream-statistics)
+
+## Metrics
+
+The following metrics are reported by NGINXaaS 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.
+
+### NGINX config statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+| --------------------- | -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
+| nginx.config.reloads | nginxaas_account_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 |
+
+{{< /table >}}
+
+### NGINX connections statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+|------------------------------|----------------|----------|---------------------------------------------------------------------------------------------------------------|-----------------|
+| nginx.http.connections | nginxaas_account_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_account_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 |
+
+{{< /table >}}
+
+### NGINX requests and response statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+|----------------------------------------|-----------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------|---------------|
+| nginx.http.request.count | nginxaas_account_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location | gauge | The total number of client requests received since the last collection interval. | deployment |
+| nginx.http.requests | nginxaas_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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 |
+
+{{< /table >}}
+
+### NGINX SSL statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+|----------------------------------------|-----------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------|---------------|
+| nginx.ssl.handshakes | nginxaas_account_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_account_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 |
+
+{{< /table >}}
+
+### NGINX cache statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+|----------------------------------------|-----------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------|---------------|
+| nginx.cache.bytes_read | nginxaas_account_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_account_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_account_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_account_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_cache_name | gauge | The current size of the cache. | cache |
+
+{{< /table >}}
+
+### NGINX memory statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+|----------------------------------------|-----------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------|---------------|
+| nginx.slab.page.free | nginxaas_account_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_account_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_account_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_account_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_account_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_account_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_account_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 |
+
+{{< /table >}}
+
+### NGINX upstream statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+|-----------------------------------|-----------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------|---------------|
+| nginx.http.upstream.keepalive.count | nginxaas_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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 | Number of times the server became unavailable for client requests. | peer |
+| nginx.http.upstream.peer.state | nginxaas_account_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_account_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_account_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_account_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_account_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 |
+
+{{< /table >}}
+
+### NGINX stream statistics
+
+{{< table >}}
+
+| **Metric** | **Labels** | **Type** | **Description** | **Roll-up per** |
+|----------------------------------------|-----------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------|---------------|
+| nginx.stream.io | nginxaas_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_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_account_id, nginxaas_namespace, nginxaas_deployment_object_id, nginxaas_deployment_name, nginxaas_deployment_location, nginx_peer_state, nginx_zone_name, nginx_upstream_name | count | The current number of stream upstream peers grouped by state. | upstream |
+| nginx.stream.upstream.peer.fails | nginxaas_account_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_account_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_account_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_account_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_account_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 max_fails threshold. | peer |
+| nginx.stream.upstream.peer.state | nginxaas_account_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_account_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 |
+
+{{< /table >}}
diff --git a/content/nginxaas-google/overview/_index.md b/content/nginxaas-google/overview/_index.md
new file mode 100644
index 000000000..182766222
--- /dev/null
+++ b/content/nginxaas-google/overview/_index.md
@@ -0,0 +1,5 @@
+---
+title: Overview
+weight: 100
+url: /nginxaas/google/overview/
+---
diff --git a/content/nginxaas-google/overview/feature-comparison.md b/content/nginxaas-google/overview/feature-comparison.md
new file mode 100644
index 000000000..e7350d957
--- /dev/null
+++ b/content/nginxaas-google/overview/feature-comparison.md
@@ -0,0 +1,72 @@
+---
+title: Feature comparison
+weight: 300
+description: Compare NGINXaaS for Google Cloud with other NGINX offerings.
+toc: false
+draft: true
+nd-docs: DOCS-000
+url: /nginxaas/google/overview/feature-comparison/
+type:
+- concept
+---
+
+{{}}
+
+|**Load Balancer** |**NGINX Open Source** |**NGINX Plus ** |**F5 NGINXaaS for Google Cloud** |
+|----------------------------------------|---------------------|---------------------|--------------------------|
+| [HTTP](https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/) and [TCP/UDP](https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/) support |{{}} |{{}} | |
+| [Layer 7 request routing](https://www.nginx.org/en/docs/http/ngx_http_core_module.html#location) |{{}} |{{}} | |
+| [Session persistence](https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#enabling-session-persistence) |{{}} |{{}} | |
+| [Active health checks](https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/) | |{{}} | |
+| [DNS service-discovery integration](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#service) | |{{}} | |
+|**Content Cache** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| [Static and dynamic content caching](https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/)|{{}} |{{}} | |
+| [Cache-purging API](https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/#purging-content-from-the-cache) | |{{}} | |
+| MQTT protocol support for IOT devices | |{{}} | |
+|**Web Server and Reverse Proxy** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| Origin server for static content |{{}} |{{}} | |
+| Reverse proxy: [HTTP](https://nginx.org/en/docs/http/ngx_http_proxy_module.html), [FastCGl](https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html), [memcached](https://nginx.org/en/docs/http/ngx_http_memcached_module.html), [SCGI](https://nginx.org/en/docs/http/ngx_http_scgi_module.html), [uwsgi](https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html) |{{}} | {{}} | |
+| [HTTP/2 gateway](https://www.nginx.org/en/docs/http/ngx_http_v2_module.html) |{{}} |{{}} | |
+| [gRPC proxy](https://nginx.org/en/docs/http/ngx_http_grpc_module.html) |{{}} |{{}} | |
+| [HTTP/2 server push](https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_push) |{{}} |{{}} | |
+| [HTTP/3 over QUIC](https://nginx.org/en/docs/http/ngx_http_v3_module.html) |{{}} |{{}} | |
+|**Security Controls** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| [HTTP basic authentication](https://www.nginx.org/en/docs/http/ngx_http_auth_basic_module.html) |{{}} |{{}} | |
+| [HTTP authentication subrequests](https://nginx.org/en/docs/http/ngx_http_auth_request_module.html) |{{}} |{{}} | |
+| [IP address-based access control lists](https://nginx.org/en/docs/http/ngx_http_access_module.html) |{{}}|{{}} | |
+| [Rate limiting](https://blog.nginx.org/blog/rate-limiting-nginx) |{{}} |{{}} | |
+| Dual-stack RSA/ECC SSL/TLS offload |{{}} |{{}} | |
+| TLS 1.3 support |{{}} |{{}} | |
+| [JWT authentication](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html) | |{{}} | |
+| OpenID Connect single sign-on (SSO) | |{{}} | |
+| Internal redirect | |{{}} | |
+| NGINX as a SAML Service Provider | |{{}} | |
+| [NGINX App Protect WAF](https://www.f5.com/products/nginx/nginx-app-protect) (additional cost) | |{{}} | |
+| [NGINX App Protect DoS](https://www.f5.com/products/nginx/nginx-app-protect) (additional cost) | |{{}} | |
+|**Monitoring** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| Export to [external monitoring tools](https://docs.nginx.com/nginx/admin-guide/monitoring/live-activity-monitoring/) |{{}} |{{}} | |
+| Built-in dashboard | |{{}} | |
+| [Extended status with 100+ additional metrics](https://docs.nginx.com/nginx/admin-guide/monitoring/live-activity-monitoring/) | |{{}} | |
+| Native Open Telemetry Tracing | |{{}} | |
+|**High Availability (HA)** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| [Active-active](https://docs.nginx.com/nginx/admin-guide/high-availability/) | |{{}} | |
+| [Active-passive](https://docs.nginx.com/nginx/admin-guide/high-availability/) | |{{}} | |
+| [Configuration synchronization across cluster](https://docs.nginx.com/nginx/admin-guide/high-availability/configuration-sharing/) | |{{}} | |
+| [State sharing](https://docs.nginx.com/nginx/admin-guide/high-availability/zone_sync/): sticky-learn session persistence, rate limiting, key-value stores | |{{}} | |
+|**Programmability** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| [NGINX JavaScript module](https://www.f5.com/company/blog/nginx/harnessing-power-convenience-of-javascript-for-each-request-with-nginx-javascript-module) |{{}} |{{}} | |
+| [NGINX Plus API for dynamic reconfiguration](https://docs.nginx.com/nginx/admin-guide/load-balancer/dynamic-configuration-api/) | |{{}} | |
+| [Key-value store](https://nginx.org/en/docs/http/ngx_http_keyval_module.html) | |{{}} | |
+| Dynamic reconfiguration without process reloads | |{{}} | |
+|**Streaming Media** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| Live streaming: RTMP, HLS, DASH |{{}} |{{}} | |
+| VOD: Flash (FLV), MP4 |{{}} |{{}} | |
+| Adaptive bitrate VOD: [HLS](https://nginx.org/en/docs/http/ngx_http_hls_module.html), [HDS](https://nginx.org/en/docs/http/ngx_http_f4f_module.html) | |{{}} | |
+| [MP4 bandwidth controls](https://nginx.org/en/docs/http/ngx_http_mp4_module.html) | |{{}} | |
+|**Third-party ecosystem** |**NGINX Open Source** |**NGINX Plus ** |**NGINXaaS for Google Cloud** |
+| [Ingress controller](https://www.f5.com/products/nginx/nginx-ingress-controller) |{{}} |{{}} | |
+| OpenShift Router |{{}} |{{}} | |
+| [Dynamic modules repository](https://www.f5.com/go/product/nginx-modules) | |{{}} | |
+| Deployable as a service | | |Google Cloud |
+| [Commercial support](https://my.f5.com/manage/s/article/K000140156/) | |{{}} | |
+{{}}
diff --git a/content/nginxaas-google/overview/overview.md b/content/nginxaas-google/overview/overview.md
new file mode 100644
index 000000000..938aefb68
--- /dev/null
+++ b/content/nginxaas-google/overview/overview.md
@@ -0,0 +1,70 @@
+---
+title: Overview and architecture
+weight: 100
+toc: true
+nd-docs: DOCS-000
+url: /nginxaas/google/overview/overview/
+type:
+- concept
+---
+
+## What Is F5 NGINXaaS for Google Cloud?
+
+NGINXaaS for Google Cloud is a service offering that is tightly integrated into Google Cloud platform and its ecosystem, making applications fast, efficient, and reliable with full lifecycle management of advanced NGINX traffic services.
+
+[NGINX Plus](https://www.nginx.com/products/nginx/) powers NGINXaaS for Google Cloud, 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.
+
+## Capabilities
+
+The key capabilities of NGINXaaS for Google Cloud 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 the Google Cloud ecosystem.
+- Adopts a consumption-based pricing to align infrastructure costs to actual usage by billing transactions using Google.
+
+## NGINXaaS for Google Cloud architecture
+
+{{< img src="nginxaas-google/nginxaas-google-cloud-architecture.svg" alt="Architecture diagram showing how NGINXaaS integrates with Google Cloud. At the top, inside the Google Cloud 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 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." >}}
+
+- The NGINXaaS Console is used to create, update, and delete NGINX configurations, certificates and NGINXaaS deployments
+- Each NGINXaaS deployment has dedicated network and compute resources. There is no possibility of noisy neighbor problems or data leakage between deployments
+- NGINXaaS can route traffic to upstreams even if the upstream servers are located in different geographies. See [Known Issues]({{< ref "/nginxaas-google/known-issues.md" >}}) for any networking restrictions.
+- NGINXaaS 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. 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.
+- Google Cloud's Private Service Connect (PSC) enables clients within your Virtual Private Cloud (VPC) to access your NGINXaaS deployments. PSC also provides NGINXaaS a secure and private way to connect to your upstream applications. Known networking limitations can be found in the [Known Issues]({{< ref "/nginxaas-google/known-issues.md" >}}).
+
+### Geographical Controllers
+
+NGINXaaS for Google has a global presence with management requests being served from various geographical controllers. A 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. We currently have presence in two Geographies: **US** and **EU**.
+
+### Networking
+
+We use Google [Private Service Connect]((https://cloud.google.com/vpc/docs/private-service-connect)) (PSC) to securely connect NGINXaaS to your applications and enable client access to your deployments. A [PSC backend](https://cloud.google.com/vpc/docs/private-service-connect#backends) brings the NGINXaaS deployment into your client network, allowing your application clients to connect seamlessly. A [PSC Interface](https://cloud.google.com/vpc/docs/private-service-connect#interfaces) brings the deployment into your application network, enabling secure connectivity to your applications. This approach gives you full control over traffic flow by leveraging your own networking resources, so you can apply your preferred security controls and ensure a secure deployment environment.
+
+
+## Supported regions
+
+NGINXaaS for Google Cloud is supported in the following regions per geography:
+
+ {{< table "table" >}}
+ |NGINXaaS Geography | Google Cloud Regions |
+ |-----------|---------|
+ | US | us-west1, us-east1, us-central1 |
+ | EU | europe-west2, europe-west1 |
+ {{< /table >}}
+
+## Limitations
+
+- We currently support two geographies with limited regions only.
+- We only support authentication via Google acting as an identity provider.
+- User Role Based Access Control (RBAC) is not supported.
+- NGINX Configuration needs a specific snippet for an NGINXaaS deployment to work.
+
+## What's next
+
+To get started, check the [NGINXaaS for Google Cloud prerequisites]({{< ref "/nginxaas-google/getting-started/prerequisites.md" >}})
diff --git a/content/nginxaas-google/quickstart/_index.md b/content/nginxaas-google/quickstart/_index.md
new file mode 100644
index 000000000..54331487f
--- /dev/null
+++ b/content/nginxaas-google/quickstart/_index.md
@@ -0,0 +1,6 @@
+---
+title: Quickstart guides
+weight: 600
+url: /nginxaas/google/quickstart/
+draft: true
+---
diff --git a/content/nginxaas-google/quickstart/security-controls/_index.md b/content/nginxaas-google/quickstart/security-controls/_index.md
new file mode 100644
index 000000000..8353987b5
--- /dev/null
+++ b/content/nginxaas-google/quickstart/security-controls/_index.md
@@ -0,0 +1,6 @@
+---
+title: Security controls
+weight: 500
+url: /nginxaas/google/quicksart/security-controls/
+toc: true
+---
diff --git a/content/nginxaas-google/quickstart/security-controls/certificates.md b/content/nginxaas-google/quickstart/security-controls/certificates.md
new file mode 100644
index 000000000..dfb724335
--- /dev/null
+++ b/content/nginxaas-google/quickstart/security-controls/certificates.md
@@ -0,0 +1,25 @@
+---
+title: Use a certificate from Google Cloud Secret Manager
+weight: 50
+toc: true
+url: /nginxaas/google/quickstart/security-controls/certificates/
+type:
+- how-to
+---
+
+
+## Overview
+
+This guide describes how to use a TLS/SSL certificate stored in Google Cloud Secret Manager with NGINXaaS for Google Cloud.
+
+## Before you begin
+
+- [Create a secret in Google Cloud Secret Manager](https://cloud.google.com/secret-manager/docs/creating-and-accessing-secrets)
+that contains your TLS/SSL certificate and private key.
+- Ensure that the NGINXaaS for Google Cloud service account has permission to access the secret. For more information, see
+[Granting, changing, and revoking access to secrets] (https://cloud.google.com/iam/docs/granting-changing-revoking-access).
+
+
+## Configure NGINXaaS to use the certificate
+
+TBD
\ No newline at end of file
diff --git a/data/product-selector.yaml b/data/product-selector.yaml
index 60dd17bd9..64089bc1d 100644
--- a/data/product-selector.yaml
+++ b/data/product-selector.yaml
@@ -27,3 +27,5 @@
products:
- title: "NGINXaaS for Azure"
url: "nginxaas/azure/"
+ - title: "NGINXaaS for Google Cloud"
+ url: "nginxaas/google/"
diff --git a/go.mod b/go.mod
index 3ed7507cf..ce2d2e14a 100644
--- a/go.mod
+++ b/go.mod
@@ -2,4 +2,4 @@ module github.com/nginxinc/docs
go 1.19
-require github.com/nginxinc/nginx-hugo-theme v1.0.11 // indirect
\ No newline at end of file
+require github.com/nginxinc/nginx-hugo-theme v1.0.11 // indirect
diff --git a/static/nginxaas-google/css/cost-calculator_v2.css b/static/nginxaas-google/css/cost-calculator_v2.css
new file mode 100644
index 000000000..3dd603746
--- /dev/null
+++ b/static/nginxaas-google/css/cost-calculator_v2.css
@@ -0,0 +1,239 @@
+#calculator .form-field {
+ margin: 8px 0 20px 0;
+}
+#calculator .form-field label {
+ display: block;
+ font-size: 14px;
+ font-weight: 300;
+ color: #000000;
+
+ line-height: 20px;
+}
+#calculator .form-field label span.label-details, .subtitle {
+ font-size: 12px;
+ color: #6C778C;
+}
+
+#calculator input, select {
+ width: 300px;
+ height: 24px;
+
+ margin-top: 4px;
+ color: #000000;
+
+}
+
+#calculator input[type=radio], #calculator input[type=checkbox] {
+ width: 24px;
+}
+
+#calculator .section {
+ margin: 1rem auto 1rem auto;
+}
+
+#calculator #totals-section {
+ padding: 20px 0;
+
+}
+#calculator #totals-section .total-text {
+ font-weight: 700;
+ margin-right: 50px;
+}
+
+#calculator details {
+ position: relative;
+}
+
+#calculator details > summary {
+ list-style: none;
+ padding-left: 20px;
+ margin: 20px 2px;
+ text-decoration: underline;
+ color: #515357;
+}
+#calculator details > summary::before {
+ content: "\FF0B";
+ border: 2px solid gray;
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ position: absolute;
+ top: 2px;
+ left: 0;
+ height: 11px;
+ width: 11px;
+ font-size: 10px;
+ font-weight: 600;
+ border-radius: 50%;
+ text-decoration: none;
+}
+#calculator details[open] > summary::before {
+ content: "\FF0D";
+}
+
+#calculator .details-content {
+ padding: 10px;
+ display: flex;
+
+ width: 100%;
+}
+
+#calculator .details-section {
+ padding: 10px;
+ margin-right: 10px;
+ flex: 1;
+}
+#calculator .details-section:first-child {
+ flex: 2;
+}
+
+#calculator .bandwidth-input-container::after {
+ content: "Mbps";
+ color: #6C778C;
+ font-size: 12px;
+ margin-left: -60px;
+}
+#calculator .avg-conn-duration-container::after {
+ content: "seconds";
+ color: #6C778C;
+ font-size: 12px;
+ margin-left: -70px;
+}
+
+#calculator #ncuEstimateValue {
+ /* display: flex; */
+ /* align-items: center; */
+ /* justify-content: center; */
+ font-weight: 700;
+}
+
+#calculator input:invalid + #ncuValidation::after {
+ content: "Must be a multiple of 10, with a minimum of 10";
+ color: #aa0000;
+ padding-left: 5px;
+ font-size: 12px;
+}
+
+#calculator .totals {
+ display: flex;
+ justify-content: left;
+}
+#calculator .totals > span {
+ margin-right: 20px;
+}
+
+
+#calculator table {
+ margin: 0 auto;
+ border-collapse: collapse;
+}
+
+#calculator th {
+ padding-bottom: 16px;
+}
+
+#calculator tr.selected {
+ background-color: #e9f3ea;
+}
+
+
+#calculator .math {
+ font-weight: 300;
+ font-size: 12px;
+ background-color: #f7f7f7;
+
+ margin: 8px 0 4px 0;
+ padding: 8px;
+}
+
+#calculator pre {
+ font-family: inherit;
+}
+
+#calculator var {
+ font-family: inherit;
+ font-weight: bolder;
+}
+
+#calculator .titleCol {
+ font-weight: 400;
+ vertical-align: bottom;
+}
+
+#calculator dt {
+ margin: 24px 0 8px 0;
+}
+#calculator dd {
+ margin-bottom: 8px;
+}
+
+#calculator h3 {
+ display: flex;
+ justify-content: space-between;
+}
+
+#calculator h3 label {
+ font-size: 14px;
+ width: 40%;
+ text-align: right;
+}
+#calculator h3 label input {
+ width: 20px;
+ vertical-align: middle;
+}
+
+/* added for iteration 3 */
+
+#calculator .form-section {
+ border: 1px solid #B7B7B7;
+ border-radius: 4px;
+ margin-bottom: 20px;
+}
+#calculator .form-section h4 {
+ font-weight: 600;
+}
+#calculator .form-section-content {
+ padding: 20px 18px;
+}
+#calculator .form-section-content:last-child {
+ padding-bottom: 18px;
+ border-top: 1px solid #B7B7B7;
+}
+
+@media print {
+ body {
+ visibility: hidden !important;
+ height: 0 !important;
+ }
+
+ footer {
+ display: none;
+ }
+
+ #calculator {
+ visibility: visible;
+ position: absolute;
+ top: 20px;
+
+ margin: 0 auto;
+
+ width: fit-content;
+ left: 0;
+ }
+
+ #calculator .section {
+ margin: 0;
+ }
+
+ #calculator h3#calculator-section-heading {
+ justify-content: left;
+ }
+
+ #calculator h3#calculator-section-heading button {
+ visibility: hidden;
+ }
+
+ #calculator-section-heading::before {
+ content: "NGINX as a Service for Azure\00a0"
+ }
+}
diff --git a/static/nginxaas-google/js/cost-calculator_gc.js b/static/nginxaas-google/js/cost-calculator_gc.js
new file mode 100644
index 000000000..7047079c7
--- /dev/null
+++ b/static/nginxaas-google/js/cost-calculator_gc.js
@@ -0,0 +1,108 @@
+// /nginxaas-google/js/cost-calculator_v2.js
+(() => {
+ // ---- Single-tier pricing ----
+ const costs = {
+ fixedHourly: 0.10, // $/hour
+ ncuHourly: 0.008, // $/NCU/hour
+ dataPerGb: 0.0096 // $/GB (monthly)
+ };
+
+ const utils = {
+ calculateCost: (costs, values) => {
+ const hoursPortion = values.numHours * (costs.fixedHourly + (values.numNcus * costs.ncuHourly));
+ const dataPortion = values.dataProcessedGb * costs.dataPerGb;
+ return hoursPortion + dataPortion;
+ },
+ currencyFormatter: (n, significantDigits) => {
+ return new Intl.NumberFormat("en-US", {
+ style: "currency",
+ currency: "USD",
+ maximumSignificantDigits: significantDigits
+ }).format(n);
+ },
+ };
+
+ // ---- Form state (defaults: 10 NCUs on load) ----
+ const calculatorValuesState = {
+ numNcus: 10,
+ numHours: 730,
+ dataProcessedGb: 0
+ };
+
+ // ---- Element refs ----
+ const costFormElements = {
+ numNcus: document.getElementById("numNcus"),
+ numHours: document.getElementById("numHours"),
+ dataProcessedGb: document.getElementById("dataProcessedGb"),
+ };
+
+ const totalCostDetailElements = {
+ ncus: document.getElementById("cost-detail-ncus"),
+ hours: document.getElementById("cost-detail-hours"),
+ fixedHourly: document.getElementById("cost-detail-fixed-hourly"),
+ ncuHourly: document.getElementById("cost-detail-ncu-hourly"),
+ dataGb: document.getElementById("cost-detail-data-gb"),
+ dataPerGb: document.getElementById("cost-detail-data-pergb"),
+ total: document.getElementById("cost-detail-total"),
+ };
+
+ // ---- Listeners ----
+ const setupChangeListeners = (costs, values = calculatorValuesState) => {
+ Object.keys(costFormElements).forEach((elName) => {
+ costFormElements[elName].addEventListener("change", (evt) => {
+ values[elName] = Number(evt.target.value);
+ updateCost(costs);
+ });
+ });
+
+ document.getElementById("printButton").addEventListener("click", () => {
+ printCostEstimate();
+ });
+ };
+
+ // ---- Init values ----
+ const initializeValues = (values = calculatorValuesState) => {
+ Object.keys(costFormElements).forEach((elName) => {
+ const el = costFormElements[elName];
+ if (el && (el.tagName.toLowerCase() === "input" || el.tagName.toLowerCase() === "select")) {
+ el.value = values[elName];
+ }
+ });
+ };
+
+ // ---- Updates ----
+ const updateCost = (costs, values = calculatorValuesState) => {
+ const updatedTotalCost = utils.calculateCost(costs, values);
+ document.getElementById("total-value").textContent = utils.currencyFormatter(updatedTotalCost);
+ updateTotalCostDetails(values, updatedTotalCost);
+ };
+
+ const updateTotalCostDetails = (formValues, totalCost) => {
+ totalCostDetailElements.hours.textContent = formValues.numHours;
+ totalCostDetailElements.ncus.textContent = formValues.numNcus;
+ totalCostDetailElements.fixedHourly.textContent = utils.currencyFormatter(costs.fixedHourly, 3);
+ totalCostDetailElements.ncuHourly.textContent = utils.currencyFormatter(costs.ncuHourly, 3);
+ totalCostDetailElements.dataGb.textContent = formValues.dataProcessedGb;
+ totalCostDetailElements.dataPerGb.textContent = utils.currencyFormatter(costs.dataPerGb, 3);
+ totalCostDetailElements.total.textContent = utils.currencyFormatter(totalCost);
+ };
+
+ function printCostEstimate() {
+ const totalDetails = document.getElementById("total-cost-details");
+ const detailsOpen = totalDetails.hasAttribute("open");
+ if (!detailsOpen) totalDetails.setAttribute("open", "true");
+
+ window.print();
+
+ if (!detailsOpen) totalDetails.removeAttribute("open");
+ }
+
+ // ---- Boot ----
+ const start = async () => {
+ const loaded = costs;
+ setupChangeListeners(loaded);
+ initializeValues(calculatorValuesState);
+ updateCost(loaded); // immediately show total on load
+ };
+ start();
+})();
diff --git a/static/nginxaas-google/nginxaas-google-cloud-architecture.svg b/static/nginxaas-google/nginxaas-google-cloud-architecture.svg
new file mode 100644
index 000000000..1897bce99
--- /dev/null
+++ b/static/nginxaas-google/nginxaas-google-cloud-architecture.svg
@@ -0,0 +1 @@
+
\ No newline at end of file