Skip to main content
Home
GrN.dk

Main navigation

  • Articles
  • Cases
  • Services
  • Your Digital Project Manager
  • About Greg Nowak
  • Image Gallery
  • Contact
User account menu
  • Log in

Join my community / free newsletter — sign up here

Breadcrumb

  1. Home

NGINX 1.30 changed upstream connection reuse: what to check before you upgrade

Illustrated infographic summarizing: NGINX 1.30 changed upstream connection reuse: what to check before you upgrade

By Greg Nowak. Updated 21 July 2026.

NGINX 1.30 changes an assumption that has sat quietly inside many reverse-proxy configurations for years. HTTP proxying now uses HTTP/1.1 and keeps upstream connections alive by default, instead of normally opening a fresh connection for each request.

For a modern application, connection reuse is usually a welcome improvement: fewer connection handshakes and less avoidable work between NGINX and the backend. But an apparently routine package update can expose old applications, connection-dependent authentication or configuration copied from an earlier NGINX era. That makes this a small compatibility project, not merely a package-manager task.

As of 21 July 2026, NGINX 1.30.4 is the current stable release. It also includes security fixes published on 15 July, so teams already running an earlier 1.30.x release should plan to move to the patched version rather than stopping at 1.30.0.

What changed in NGINX 1.30?

The change first appeared in mainline version 1.29.7 and reached the stable branch with 1.30.0. The default proxy protocol is now proxy_http_version 1.1. NGINX also enables an upstream keep-alive cache equivalent to keepalive 32 local: up to 32 idle connections per worker, kept local to the location using the upstream.

The number 32 is not a limit on total backend connections. It only controls how many idle connections each worker may retain. Active traffic can still create more. This distinction matters when estimating backend capacity or investigating a rise in open sockets.

Situation Recommended starting point Verify before rollout
Modern HTTP application Use the new defaults Error rate, response time and backend connection counts
Old or vendor-managed application Test connection reuse in staging Sessions, intermittent failures and stale responses
NTLM or Negotiate authentication Review the upstream authentication configuration Login, re-authentication and concurrent user journeys
Explicit keepalive 32; in a shared upstream Decide whether sharing is intentional Whether connections may be reused across locations
Backend requires a fresh connection Downgrade only the affected location That the exception does not spread to healthy routes
A practical decision matrix for an NGINX 1.30 upgrade review.

Audit the configuration NGINX actually loads

Do not begin with the one configuration file someone remembers editing. Includes, deployment templates and hosting control panels often make the effective configuration quite different. The -T option checks the configuration and prints all loaded files:

sudo nginx -T 2>/dev/null | grep -nE \
'proxy_http_version|proxy_set_header[[:space:]]+Connection|keepalive|ntlm'

sudo nginx -V
sudo nginx -t

The first command finds the directives most likely to affect this change. nginx -V records the installed version, build options and modules; nginx -t should be run again immediately before reloading.

Pay particular attention to proxy_set_header. These directives inherit from the parent context only when none are defined at the current level. Adding one header inside a location can therefore stop the complete parent set from being inherited. Review each block as a group rather than deleting a single line in isolation.

Challenge old keep-alive snippets

Before 1.29.7, administrators commonly enabled upstream reuse with:

proxy_http_version 1.1;
proxy_set_header Connection "";

Those lines are no longer required merely to obtain standard HTTP/1.1 keep-alive behaviour. They are not automatically harmful, but redundant configuration creates doubt about what is deliberate. Remove it through a tested change, especially if the same include serves several client sites.

An explicit keepalive 32; deserves closer attention. Under current NGINX behaviour, omitting the directive uses local connection caches. Writing it without the local parameter permits matching cached connections to be reused across locations that reach the same upstream address. If isolation is the intention, make it explicit:

upstream application_backend {
    server 127.0.0.1:8080;
    keepalive 32 local;
}

Do not tune keepalive_requests, keepalive_time or keepalive_timeout simply because they exist. Change them only in response to a documented backend constraint, measured socket pressure or a reproducible failure.

Give awkward backends a narrow exception

Legacy applications can make connection-scoped assumptions that ordinary browser testing misses. Exercise login and logout, parallel requests, file uploads, administrative actions, timeout recovery and requests made after an idle period. For NTLM or Negotiate authentication, confirm that the upstream uses NGINX's ntlm handling and test with realistic concurrent sessions.

If a backend genuinely requires HTTP/1.0 and closed connections, contain the exception to its location:

location /legacy-app/ {
    proxy_pass http://legacy_backend;
    proxy_http_version 1.0;
    proxy_set_header Connection "Close";
}

This sacrifices reuse only where necessary. A server-wide downgrade would hide the compatibility issue while discarding the benefit for every healthy application.

Make the rollout observable and reversible

Capture a baseline before upgrading: upstream response and connection times, 502 and 504 rates, authentication failures, backend connection counts and application logs. Then canary the routes most likely to expose trouble—authentication, administration and older line-of-business applications—rather than assuming the busiest public page is the best test.

Keep the previous package and configuration deployment path available, but prefer a narrow configuration exception when one backend fails. Record why that exception exists and who owns its removal. Otherwise, today's emergency line becomes tomorrow's unexplained infrastructure folklore.

For business owners and agency teams, the useful deliverable is not simply “NGINX upgraded.” It is an inventory of affected applications, a tested configuration, agreed monitoring and a rollback decision that somebody can execute. If your estate mixes inherited client configurations with older vendor systems, Greg can help turn that review into a controlled upgrade plan.

Related on GrN.dk

  • MariaDB 10.6 EOL: quiet CMS hosting debt needs a real upgrade plan before July 2026
  • AI automations need a spend dashboard before the first runaway bill
  • Apache 2.4.68 Is a Reminder That Old Proxy Rules Need a Real Audit

Need help with this kind of work?

Discuss your NGINX upgrade with Greg Get in touch with Greg.

Sources

  • nginx news: 2026
  • Keep-alive to upstreams is now default in NGINX 1.29.7
  • Module ngx_http_upstream_module
  • Module ngx_http_proxy_module
  • NGINX command-line parameters
Last modified
2026-07-27

Tags

  • Nginx
  • backend compatibility
  • Performance
  • Server Operations

Review Greg on Google

Greg Nowak Google Reviews

 

Written recommendations from Trafik og Veje, Aarhus Municipality (2011) and AgroTech (2010) — read them on LinkedIn.

Illustrated infographic summarizing: Your AI workflow has logs. Can they explain one bad decision?
Your AI workflow has logs. Can they explain one bad decision?
2026-08-22

Logs can show that every service worked while leaving a bad AI decision unexplained. See how connected traces and careful redaction close the gap.

Illustrated infographic summarizing: Security Questionnaires Eat Into Selling Time—Let AI Find the Evidence
Security Questionnaires Eat Into Selling Time—Let AI Find the Evidence
2026-08-21

NIS 2 is generating more supplier questionnaires. A controlled AI assistant can find approved answers and sources—and route uncertain cases for review.

Illustrated infographic summarizing: Locked out of your Apple developer account? Fix it before October 1
Locked out of your Apple developer account? Fix it before October 1
2026-08-20

Apple's updated developer agreement must be accepted by October 1, 2026, and many small app owners cannot even log in. Here is where Apple's two-factor codes really go, and how to fix your access before the deadline.

Illustrated infographic summarizing: Cloudflare Workflows Now Charges by the Step—Price the Outcome
Cloudflare Workflows Now Charges by the Step—Price the Outcome
2026-08-20

Cloudflare Workflows now bills paid plans for steps and stored state. Here is how to track cost per completed outcome without weakening reliability.

Illustrated infographic summarizing: Google’s AI Search Toggle Is a Publishing Decision, Not an SEO Setting
Google’s AI Search Toggle Is a Publishing Decision, Not an SEO Setting
2026-08-19

Google’s AI Search toggle forces a commercial choice about visibility, attribution and content use. Here’s how to make that choice responsibly.

Illustrated infographic summarizing: From Supplier Invoice to Bookkeeping: AI with a Control Checkpoint
From Supplier Invoice to Bookkeeping: AI with a Control Checkpoint
2026-08-18

AI can reduce the work involved in processing supplier invoices, but reliable bookkeeping requires validation, duplicate checks, approval and a clear audit trail.

Illustrated infographic summarizing: Nginx 1.30 Changed the Upstream Defaults—Test Before You Upgrade
Nginx 1.30 Changed the Upstream Defaults—Test Before You Upgrade
2026-08-17

Nginx 1.30 defaults upstream proxying to HTTP/1.1 with keepalive enabled. Here is what to inspect, model and test before upgrading.

Illustrated infographic summarizing: OpenAI’s Assistants API Shuts Down in Ten Days. Is Your App Ready?
OpenAI’s Assistants API Shuts Down in Ten Days. Is Your App Ready?
2026-08-16

OpenAI’s Assistants API shuts down on August 26, 2026. Learn what to inventory, how to preserve state and how to cut over without breaking the product.

Illustrated infographic summarizing: WordPress 7.1 Forces the Editor Into an iframe—Test Your Custom Blocks
WordPress 7.1 Forces the Editor Into an iframe—Test Your Custom Blocks
2026-08-15

WordPress 7.1 removes the non-iframe editor fallback. Learn how to audit custom blocks, test real workflows and fix compatibility issues before launch.

Illustrated infographic summarizing: GitHub will stop sending jobs to stale self-hosted runners
GitHub will stop sending jobs to stale self-hosted runners
2026-08-14

GitHub starts enforcing runner versions on August 24, 2026. Audit and upgrade self-hosted runners before builds and deployments start stalling.

More articles

Built by AI — available for your business. The daily articles on this site are researched, written and illustrated by an autonomous AI pipeline. At nowa.dk I install the same kind of AI automation in businesses at fixed prices — site in Danish, English version here, and web/marketing agencies have a dedicated page.

RSS feed

Footer

  • All articles
  • Contact

GrN.dk — AI automation, web platforms, web optimization, data handling and logistics.

© 2026 GrN.dk · LinkedIn · Contact · AI automation in Danish: nowa.dk

Behind GrN.dk: Individual Entrepreneur Codecrafter · Tax ID 305669096 · Bakhtrioni St. 22, 0194 Tbilisi, Georgia · official business register