From 3db2bdf8d3f1cc231dd5a5022eea627fcd008477 Mon Sep 17 00:00:00 2001 From: Ken Russo Date: Sun, 26 Jul 2026 22:35:01 -0600 Subject: [PATCH 1/3] NLB-7870: Provide guidance on upgrading to NGINX Plus 37.0.4 Need to inform customers that 37.0.4 is available in Preview so they can prepare and test their configurations to preserve R36P8 behavior. --- content/nginxaas-azure/changelog/changelog.md | 9 ++++- content/nginxaas-azure/known-issues.md | 33 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/content/nginxaas-azure/changelog/changelog.md b/content/nginxaas-azure/changelog/changelog.md index 9fec3f9bd..d012937a6 100644 --- a/content/nginxaas-azure/changelog/changelog.md +++ b/content/nginxaas-azure/changelog/changelog.md @@ -10,10 +10,17 @@ url: /nginxaas-azure/changelog/ Learn about the latest updates, new features, and resolved bugs in F5 NGINXaaS for Azure. -To see a list of currently active issues, visit the [Known issues]({{< ref "/nginxaas-azure/known-issues.md" >}}) page. +To see a list of currently active issues, visit the [Known issues]({{< ref "/nginxaas-azure/known-issues" >}}) page. To review older entries, visit the [Changelog archive]({{< ref "/nginxaas-azure/changelog/archive" >}}) section. +## July 29, 2026 + NGINX Plus 37.0.4 is now available on the **Preview** [upgrade channel]({{< ref "/nginxaas-azure/quickstart/upgrade-channels" >}}) and will be promoted to the **Stable** upgrade channel starting the week of August 17, 2026. + + NGINX Plus 37.0 introduced [several changes](https://docs.nginx.com/nginx/releases/#pls.37.0.4) including new default settings that can affect the behavior of your deployment and it is imperative that you take one of the following steps before your deployment is upgraded: +- Test your configuration on the Preview channel to confirm the new changes do not adversely affect the operation of your applications. +- Preserve your R36 behavior by following the recommendations in the [NGINX Plus 37.0 behavior impact]({{< ref "/nginxaas-azure/known-issues/#nginx-plus-370-behavior-impact" >}}) section of the **Known issues** page. + ## July 2, 2026 NGINX Plus 37.0 (PLS.37.0) introduced [updated defaults](https://docs.nginx.com/nginx/releases/#r37.0) that affected some users. Deployments on the **Stable** [Upgrade Channel]({{< ref "/nginxaas-azure/quickstart/upgrade-channels.md" >}}) have been reverted to NGINX Plus Release 36 (R36) while we work with affected users to resolve concerns. diff --git a/content/nginxaas-azure/known-issues.md b/content/nginxaas-azure/known-issues.md index 31b13945d..3ebd54aa0 100644 --- a/content/nginxaas-azure/known-issues.md +++ b/content/nginxaas-azure/known-issues.md @@ -11,6 +11,39 @@ url: /nginxaas-azure/known-issues/ List of known issues in the latest releases of F5 NGINXaaS for Azure. +### NGINX Plus 37.0 behavior impact + +The release of NGINX Plus [37.0]({{< ref "/nginx/releases/#pls.37.0.4" >}}) introduces the following behavioral changes that may affect upstream applications: +- HTTP/1.1 is now the default protocol for connecting to proxy or upstream servers. +- Keepalive connections between NGINX and upstream servers are enabled by default. +- Upstream shared memory zone requires an additional 1KB of memory per upstream server. + +To preserve existing behavior, make the following configuration changes to your NGINX Plus [R36-P8]({{< ref "/nginx/releases/#r36" >}}) configuration before NGINXaaS is upgraded to NGINX Plus 37.0.4 (August 17, 2026) on the stable upgrade channel: + +- Explicitly set the HTTP version to 1.0 when communicating with upstream or proxy servers: +```shell +http { + proxy_http_version 1.0; + proxy_set_header Connection "close"; + ... +} +``` +- Set the [`keepalive`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive) directive to zero for all HTTP/1.1 upstream blocks where it has not been explicitly defined: +```shell +upstream backend { + ... + keepalive 0; +} +``` +- Increase the upstream block shared memory [zone](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone) size by approximately 1KB per upstream server, rounding up to leave some headroom: +```shell +upstream backend { + ... + zone backend 64k; # Example only. New size depends on previous settings. +} +``` +For further information on the new behavior of NGINX Plus 37.0, see **NGINX Plus PLS.37.0.4.1 LTS** [Upgrade Notes]({{< ref "/nginx/releases/#pls.37.0.4" >}}). + ### {{% icon-bug %}} Terraform fails to apply due to validation errors, but creates "Failed" resources in Azure (ID-4424) Some validation errors are caught later in the creation process, and can leave behind "Failed" resources in Azure. An example initial failure might look like: From fc4ecd0f77d0fbdffc53d46c09acb7eecfee9ad4 Mon Sep 17 00:00:00 2001 From: Ken Russo Date: Wed, 29 Jul 2026 15:42:24 -0600 Subject: [PATCH 2/3] Updated instructions based on final testing of NGIXN Plus 37.0.4 --- content/nginxaas-azure/known-issues.md | 50 ++++++++++++++++---------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/content/nginxaas-azure/known-issues.md b/content/nginxaas-azure/known-issues.md index 3ebd54aa0..ef7a9ea3f 100644 --- a/content/nginxaas-azure/known-issues.md +++ b/content/nginxaas-azure/known-issues.md @@ -21,27 +21,39 @@ The release of NGINX Plus [37.0]({{< ref "/nginx/releases/#pls.37.0.4" >}}) intr To preserve existing behavior, make the following configuration changes to your NGINX Plus [R36-P8]({{< ref "/nginx/releases/#r36" >}}) configuration before NGINXaaS is upgraded to NGINX Plus 37.0.4 (August 17, 2026) on the stable upgrade channel: - Explicitly set the HTTP version to 1.0 when communicating with upstream or proxy servers: -```shell -http { - proxy_http_version 1.0; - proxy_set_header Connection "close"; - ... -} -``` + ```shell + http { + proxy_http_version 1.0; + proxy_set_header Connection "close"; + ... + } + ``` + {{< call-out class="warning" >}} The [proxy_set_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header) directive is only inherited from the previous configuration level if and only if there are no **proxy_set_header** directives defined at the current level. If you are explicitly using the HTTP/1.1 protocol and have used this directive at either the **server** or **location** block level, you should specify the Connection header at that level instead. + For example: + ```shell + location /mypath { + proxy_set_header Host $host; + proxy_set_header Connection "close"; + proxy_http_version 1.1; + ... + } + ``` + {{< /call-out >}} + - Set the [`keepalive`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive) directive to zero for all HTTP/1.1 upstream blocks where it has not been explicitly defined: -```shell -upstream backend { - ... - keepalive 0; -} -``` + ```shell + upstream backend { + ... + keepalive 0; + } + ``` - Increase the upstream block shared memory [zone](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone) size by approximately 1KB per upstream server, rounding up to leave some headroom: -```shell -upstream backend { - ... - zone backend 64k; # Example only. New size depends on previous settings. -} -``` + ```shell + upstream backend { + ... + zone backend 64k; # Example only. New size depends on previous settings. + } + ``` For further information on the new behavior of NGINX Plus 37.0, see **NGINX Plus PLS.37.0.4.1 LTS** [Upgrade Notes]({{< ref "/nginx/releases/#pls.37.0.4" >}}). ### {{% icon-bug %}} Terraform fails to apply due to validation errors, but creates "Failed" resources in Azure (ID-4424) From a4c4eda927bbd7560dbc2891e42f139c5b25e25a Mon Sep 17 00:00:00 2001 From: Ken Russo Date: Wed, 29 Jul 2026 16:25:03 -0600 Subject: [PATCH 3/3] Simplified version 2 of updated instructions --- content/nginxaas-azure/known-issues.md | 61 +++++++++++++------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/content/nginxaas-azure/known-issues.md b/content/nginxaas-azure/known-issues.md index ef7a9ea3f..80633fa3d 100644 --- a/content/nginxaas-azure/known-issues.md +++ b/content/nginxaas-azure/known-issues.md @@ -18,42 +18,41 @@ The release of NGINX Plus [37.0]({{< ref "/nginx/releases/#pls.37.0.4" >}}) intr - Keepalive connections between NGINX and upstream servers are enabled by default. - Upstream shared memory zone requires an additional 1KB of memory per upstream server. -To preserve existing behavior, make the following configuration changes to your NGINX Plus [R36-P8]({{< ref "/nginx/releases/#r36" >}}) configuration before NGINXaaS is upgraded to NGINX Plus 37.0.4 (August 17, 2026) on the stable upgrade channel: +To preserve existing behavior, make the following configuration changes to your NGINX Plus [R36-P8]({{< ref "/nginx/releases/#r36" >}}) configuration before NGINXaaS is upgraded to NGINX Plus 37.0.4 on the stable upgrade channel (August 17, 2026): -- Explicitly set the HTTP version to 1.0 when communicating with upstream or proxy servers: +- Explicitly set HTTP/1.0 as the default protocol for communicating with upstream or proxy servers: ```shell - http { - proxy_http_version 1.0; - proxy_set_header Connection "close"; - ... - } - ``` - {{< call-out class="warning" >}} The [proxy_set_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header) directive is only inherited from the previous configuration level if and only if there are no **proxy_set_header** directives defined at the current level. If you are explicitly using the HTTP/1.1 protocol and have used this directive at either the **server** or **location** block level, you should specify the Connection header at that level instead. - For example: - ```shell - location /mypath { - proxy_set_header Host $host; - proxy_set_header Connection "close"; - proxy_http_version 1.1; - ... - } - ``` - {{< /call-out >}} + http { + proxy_http_version 1.0; + ... + } + ``` + +- For all upstream or proxy servers that explicitly use the HTTP/1.1 protocol, use the [proxy_set_header](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header) directive to ensure the connection is closed after completing the request-response cycle: + ```shell + location /example { + proxy_set_header Connection "close"; + proxy_http_version 1.1; + ... + } + ``` - Set the [`keepalive`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive) directive to zero for all HTTP/1.1 upstream blocks where it has not been explicitly defined: - ```shell - upstream backend { - ... - keepalive 0; - } - ``` + ```shell + upstream backend { + ... + keepalive 0; + } + ``` + - Increase the upstream block shared memory [zone](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone) size by approximately 1KB per upstream server, rounding up to leave some headroom: - ```shell - upstream backend { - ... - zone backend 64k; # Example only. New size depends on previous settings. - } - ``` + ```shell + upstream backend { + ... + zone backend 64k; # Example only. New size depends on previous settings. + } + ``` + For further information on the new behavior of NGINX Plus 37.0, see **NGINX Plus PLS.37.0.4.1 LTS** [Upgrade Notes]({{< ref "/nginx/releases/#pls.37.0.4" >}}). ### {{% icon-bug %}} Terraform fails to apply due to validation errors, but creates "Failed" resources in Azure (ID-4424)