Latest in branch 1.6 (Stable)
1.6.3
Released 07 Apr 2015
(11 years ago)
SoftwareNGINX OSS
Version1.6 (Stable)
Status
End of life
Initial release1.6.0
24 Apr 2014
(12 years ago)
Latest release1.6.3
07 Apr 2015
(11 years ago)
End of security fixes21 Apr 2015
(Ended 11 years, 1 month ago)
Release noteshttps://nginx.org/en/CHANGES
Source codehttps://github.com/nginx/nginx/tree/release-1.6.0
Documentationhttps://nginx.org/en/docs/
NGINX OSS 1.6 (Stable) ReleasesView full list

What Is New in NGINX 1.6

Category Key Changes
New Features Dynamic module support, SPDY module replaced by HTTP/2, PROXY protocol support for mail and stream modules
Improvements SSL performance enhancements, backend SSL certificate verification, hash bucket size optimization
Bug Fixes Memory leak fixes, resolver behavior corrections, various core and module-specific issues resolved

How did dynamic modules change the game in 1.6?

NGINX 1.6 introduced dynamic module loading, a fundamental shift in how extensions are handled. This meant you could compile modules separately and load them via the load_module directive without recompiling the entire NGINX binary. In practice, this dramatically simplified module management and deployment workflows for ops teams.

What's the deal with HTTP/2 replacing SPDY?

The SPDY module was officially replaced with a full HTTP/2 implementation. This wasn't just a rename; it was a move to the standardized protocol. If you were using the spdy parameter in your listen directives, you needed to update them to http2 to maintain the functionality.

How did SSL handling get better?

SSL performance saw notable gains, which was critical for high-traffic sites. The release added support for verifying backend SSL certificates using the proxy_ssl_verify and proxy_ssl_trusted_certificate directives. This provided a stronger security guarantee for upstream connections.

What other core improvements landed?

Support for the PROXY protocol was extended to the mail and stream modules, allowing those connections to pass along original client information. The hash table implementation was also optimized to automatically adjust sizes, reducing the need for manual tuning of the server_names_hash_bucket_size directive.

Other notable fixes:

  • Fixed a memory leak that occurred when using the aio directive with sendfile.
  • Corrected issues with the resolver to prevent hangs during certain failure conditions.
  • Resolved a bug where the limit_conn module might not work correctly.

FAQ

Do I need to recompile all my modules for dynamic loading?
Yes. To use the new dynamic loading feature, your third-party modules must be compiled as shared objects (.so files) using the new --add-dynamic-module configure option instead of --add-module.

My config uses 'listen ... spdy'. What happens when I upgrade?
The spdy parameter will be ignored, and the connection will fall back to HTTP/1.1. You must replace it with http2 in your listen directives to enable HTTP/2 support.

Why should I care about backend SSL certificate verification?
This closes a security gap. Before 1.6, NGINX would happily proxy to an upstream server with an invalid or self-signed certificate. Now you can enforce validation, ensuring you're talking to the legitimate backend service.

Was there a specific performance win for SSL?
Yes, the internal SSL handling was optimized. You should see reduced CPU overhead for SSL termination, which matters most for deployments serving a massive number of secure connections.

What's the main benefit of the hash bucket size change?
It removes a common source of configuration errors. NGINX now automatically adjusts the size for large server names, so you're less likely to see the "could not build the server_names_hash" error on startup.

Releases In Branch 1.6 (Stable)

VersionRelease date
1.6.307 Apr 2015
(11 years ago)
1.6.224 Apr 2014
(12 years ago)
1.6.124 Apr 2014
(12 years ago)
1.6.024 Apr 2014
(12 years ago)