Latest in branch 1.8 (Stable)
1.8.1
Released 26 Jan 2016
(10 years ago)
SoftwareNGINX OSS
Version1.8 (Stable)
Status
End of life
Initial release1.8.0
21 Apr 2015
(11 years ago)
Latest release1.8.1
26 Jan 2016
(10 years ago)
End of security fixes26 Apr 2016
(Ended 10 years, 1 month ago)
Release noteshttps://nginx.org/en/CHANGES
Source codehttps://github.com/nginx/nginx/tree/release-1.8.0
Documentationhttps://nginx.org/en/docs/
NGINX OSS 1.8 (Stable) ReleasesView full list

What Is New in NGINX 1.8

NGINX 1.8 introduces a mix of new modules, core enhancements, and important bug fixes. The update focuses on expanding functionality for stream processing and improving the overall robustness of the core server.

Category Key Changes
New Features Stream module, GeoIP module with IPv6 support, Thread Pools support
Core Improvements Backend SSL certificate verification, Hash load balancing method, DNS SRV record support
Bug Fixes Memory leaks, SSL session resumption, Worker process shutdown issues

What new modules were added in 1.8?

The standout addition is the Stream module for TCP load balancing. This lets you handle protocols like database, LDAP, or custom TCP traffic with the same load-balancing features you'd use for HTTP. It's a game-changer for unifying your proxy infrastructure.

We also got the ngx_stream_geoip_module, which brings GeoIP functionality to TCP connections. This is huge for applying geographic rules to non-HTTP services, like restricting database access by country.

How did SSL handling get better?

You can now verify backend SSL certificates. The new proxy_ssl_verify and proxy_ssl_trusted_certificate directives let NGINX check the certificate of your upstream servers. This adds a critical layer of security for microservices and internal API communication.

They also fixed a bug where SSL sessions might not be properly resumed when using the ssl_session_cache directive. In practice, this means fewer full SSL handshakes and better performance for your users.

What core performance improvements were made?

Thread pools landed in this release to handle blocking operations. If you have a lot of slow disk I/O, you can offload that work to separate threads so your main event loop stays responsive. This matters for serving large files or dealing with slow storage.

The new hash load balancing method gives you consistent hashing. This means upstream server changes cause minimal cache misses, which is essential for any stateful or cache-heavy application backend.

Were there any notable bug fixes?

Yes, several memory leak issues were patched. One was in the resolver code and another was related to the auth_request module. These are the kind of fixes that prevent slow memory exhaustion over weeks of uptime.

They also fixed a problem where worker processes might not shut down gracefully under certain conditions. This makes restarts and reloads more reliable, which is something every ops engineer will appreciate.

FAQ

Does the new Stream module replace my need for a separate TCP load balancer?
In many cases, yes. The Stream module brings NGINX's powerful load balancing, logging, and access control features to TCP and UDP traffic. You can now handle database, SMTP, and custom protocol proxying in the same place as your HTTP traffic.

How do I enable SSL verification for upstream servers?
Use the new directives in your stream or http block. For example: proxy_ssl_verify on; proxy_ssl_trusted_certificate /path/to/ca.crt;. This tells NGINX to validate your backend's cert against the specified CA.

What's the main benefit of the hash load balancing method?
Consistency. When you add or remove an upstream server, only a small fraction of requests get redirected. This minimizes cache invalidation and session disruption in your application backends.

When should I use thread pools?
Use them if you're serving a lot of large static files or using modules that perform blocking disk operations. It keeps your main event loop from getting stuck waiting on slow I/O.

Does the GeoIP module in the stream block work the same as in http?
Yes, the functionality is similar. You can use the geoip_country directive in the stream context to make routing decisions for TCP connections based on the client's IP address location.

Releases In Branch 1.8 (Stable)

VersionRelease date
1.8.126 Jan 2016
(10 years ago)
1.8.021 Apr 2015
(11 years ago)