Using nghttp2 to work around Nginx HTTP/2 bugs
blog.crashed.org
blog.crashed.org
I hit this bug a while back. StackOverflow responders said I was crazy. I went to trac.nginx.org and while preparing a bug report, I saw that it had already been reported just a day prior. Felt good knowing I was not crazy, and there was a bug in nginx.
Is there any reason not to use mainline? This is what nginx recommend, it's not a -dev at all. I haven't been bitten yet anyway.
So I repeat my question: is this speed advantage stricto-sensu necessary? Why can't one "just" spin up a few more EC2 instances until this is fixed?
Is there a case in which HTTP2 is necessary, and HTTP1 just won't cut it? I think that's the sense of the original question, and I think it's a valid question when talking about hacking one's way around bugs that are going to get fixed anyway.
I'm open to being wrong about this, but I'm surprised at the resistance to this question.
Just adding "SPDY" to nginx on some customer sites was enough to reduce load times by double digit %. (10-30 IIRC)
I think SPDY might be a workaround for a bit; it's still supported this year right?
No, Nginx dropped it (they only offer HTTP2 since 1.9.5) and Chrome dropped it from the client too this year IIRC.
HTTP/2 is growing faster than IPv6 https://w3techs.com/technologies/comparison/ce-http2,ce-ipv6
HTTP is a layer 7 protocol, IPv6 is layer 3. Rolling out a layer 3 change is an entirely different thing and requires not just the two parties using it to be adapted, but everything and everyone in between. That plus a general lack of a positive business case for v6 has meant tremendously slow adoption.
HTTP/2 support on the other hand has been quickly added to major browsers and with a number of big players like Google and social media providers supporting it those numbers would rise much more quickly. Cloudflare and similar providers would skew those metrics too since they can accept the connection over HTTP/2 from your client but still talk 1.X to the backends.
Perhaps the more compelling reason you're looking for is that HTTP2 significantly affects best programming practice.
Well-established patterns of HTTP become antipatterns under HTTP2, e.g. image sprites, concatenating files, domain sharding. Most of those originated as messy hacks to get around limitations of HTTP and introduced unwanted complexity into both development and deployment of web services. Thanks to HTTP2, they are no longer needed and in fact can actually reduce performance now that the standard handles the simple case effectively.
Upgrading therefore makes for cleaner architecture as well as the obvious perf boost. The longer you hold off, the longer you have to hold off making those updates and pushing them into production. (And again, it's of course not a necessity in the same sense a security or compliance update would be. But it's another very good reason imo.)