What Is New in NGINX 1.11
| Category | Key Changes |
|---|---|
| New Features | Dynamic modules support, HTTP/2 server push, stream module variables |
| Improvements | SSL performance, hash tables, proxy_protocol, limit_req handling |
| Bug Fixes | Memory leaks, SSL handshake issues, proxy timeouts, various core fixes |
How does dynamic module loading change NGINX extensibility?
NGINX 1.11 introduces dynamic module loading, fundamentally changing how you extend the server. Instead of requiring a full recompile, you can now load modules at runtime using the new load_module directive. This makes module management significantly more flexible for production environments.
In practice, this means you can add features like image filtering or geoip lookup without restarting your main NGINX processes. The change reduces operational overhead when updating or testing third-party modules.
What HTTP/2 enhancements arrived in this release?
Server Push support for HTTP/2 is now available, allowing you to proactively send resources to clients before they request them. This can significantly improve page load times for modern web applications by pushing critical assets like stylesheets and scripts.
The implementation uses the http2_push directive or the Link header with rel=preload. This gives developers fine-grained control over what gets pushed to which clients.
Where did NGINX 1.11 improve SSL/TLS performance?
SSL performance saw multiple optimizations, particularly around session resumption and certificate handling. The changes reduce CPU overhead during TLS handshakes, which matters most for high-traffic sites serving HTTPS content.
Session tickets now work better across worker processes, improving resumption rates for load balanced setups. These tweaks help maintain throughput while keeping encryption overhead manageable.
How were stream and proxy capabilities enhanced?
The stream module gained support for variables similar to HTTP, enabling more sophisticated TCP/UDP proxy configurations. You can now use $remote_addr or $protocol in stream context for logging and access control.
Proxy Protocol received improvements for better handling of client information passed through load balancers. This ensures original client IP addresses are preserved correctly in complex deployment chains.
FAQ
Can I upgrade to dynamic modules without changing my config?
No, you'll need to convert static modules to dynamic format and add load_module directives to your nginx.conf. The change requires planning but offers long-term flexibility.
Does HTTP/2 server push work with existing proxy setups?
Yes, but you need to ensure intermediate proxies support HTTP/2. The push occurs between NGINX and the end client, so CDNs and other proxies must not downgrade the connection.
What happens to my old third-party modules after upgrading?
They will need to be recompiled as dynamic modules. The API compatibility was maintained, but the build process changes to produce .so files instead of static objects.
Are the SSL performance improvements automatic?
Most are enabled by default, but some require tuning existing directives like ssl_session_cache and ssl_session_tickets to maximize the benefits.
How do stream variables change TCP load balancing?
They enable logging client details and making routing decisions based on connection metadata, which was previously only possible with HTTP traffic.