What Is New in NGINX 1.19
NGINX 1.19 introduces several key updates focused on HTTP/2 performance, enhanced logging, and core improvements. The main additions include a new directive for HTTP/2 max concurrent streams and more detailed SSL handshake logging.
| Category | Changes |
|---|---|
| New Features | HTTP/2 max concurrent streams setting, detailed SSL handshake logging |
| Improvements | HTTP/2 performance, SSL session handling, proxy module reliability |
| Bug Fixes | Fixes for HTTP/2, memory management, and the stream module |
How did HTTP/2 performance get better?
The standout feature is the new http2_max_concurrent_streams directive. This gives you direct control over how many concurrent streams are allowed within a single HTTP/2 connection, which is crucial for tuning how you handle multiplexing.
In practice, this lets you prevent a single client from monopolizing connection resources. You can now fine-tune the balance between connection efficiency and fairness for all users, which matters a lot for serving many concurrent requests.
What's new for troubleshooting SSL?
Debugging tricky SSL handshake failures got easier. The SSL module now provides more detailed logging for handshake errors, moving beyond just a generic "SSL_do_handshake() failed" message.
You'll get more context directly in your error logs, which cuts down the time needed to pinpoint issues like incompatible ciphers or certificate problems. This is a straightforward but highly practical change for anyone managing TLS termination.
Were there any important bug fixes?
Yes, several fixes address stability. A fix was made for a bug where a worker process might terminate prematurely due to a timing issue when using the aio_write directive with certain thread pools.
Another fix resolved an issue in the stream module where a peer connection might not be closed properly under some conditions. These are the kinds of deep, systemic fixes that improve overall reliability in long-running, high-load environments.
FAQ
What does the http2_max_concurrent_streams directive actually do?
It sets the maximum number of concurrent HTTP/2 streams allowed per connection. This allows you to control the level of multiplexing and prevent a single client from opening an excessive number of streams, which helps with resource allocation and fairness.
How does the new SSL logging help me?
It provides more specific error messages when an SSL handshake fails. Instead of a generic failure log, you get more details about the cause, which significantly speeds up debugging certificate or cipher suite issues.
Is there a performance impact from the AIO write fix?
The fix itself prevents a potential crash; it doesn't directly change performance characteristics. It ensures stability when using asynchronous I/O with thread pools, preventing worker processes from exiting unexpectedly.
Should I be concerned about the stream module fix?
If you use the stream module for TCP/UDP proxying, this fix ensures connections to upstream peers are closed correctly. It resolves a leak that could occur under specific conditions, making your proxy more robust.
Are there any new features for load balancing?
This particular release (1.19) does not introduce new load-balancing algorithms or directives. The core changes are focused on HTTP/2, SSL, and underlying stability fixes.