Nginx Gearing Up for HTTP2
The open-source Nginx web server has been steadily gaining in popularity in recent years to become one of the most widely deployed web servers. To date, Nginx has delivered its traffic over HTTP 1.1, but at some point in the near future it will also enable HTTP/2.
- Navigating Your IT Career
- Exploring the Private Cloud for Your Organization
- IT Manager's Guide to Social Networking
HTTP/2 is the next generation of the HTTP protocol that dominates and continues to define the modern web. On February 18, Mark Nottingham, chair of the IETF HTTP Working Group, declared that HTTP/2 is done.
That doesn't mean that HTTP/2 is a finalized standard, but rather that the elements that make up the specification have been finalized and the proposed standard can move on to become a bona fide IETF RFC.
But declaring a protocol a standard doesn't exactly mean that it magically just starts to work. HTTP/2 will need to be supported in browsers as well as the web servers that deliver web traffic to those browsers. That's where Nginx fits into the equation.
"Nginx is aiming at supporting HTTP/2 by the end of 2015," Owen Garrett, head of product at Nginx, told ServerWatch.
SPDY Support Helping Streamline Code Rework Needed for HTTP/2
Garrett explained that HTTP/2 support will likely be in the form of another option in Nginx's "listen" directive, in a manner similar to how Nginx provides SPDY protocol support today. SPDY is the Google protocol that is the basis for much of HTTP/2's features. Nginx's SPDY module currently supports the 3.1 draft of SPDY.
"In fact, since HTTP/2 is largely based on SPDY, Nginx has a solid foundation already in the code to capitalize on, and in turn it'll make implementation of HTTP/2 easier and more streamlined," Garrett said. "The larger part of SPDY-enabled websites run on Nginx."
Garrett commented that Nginx code has already undergone a lot of the work to support HTTP/2. He noted that initially implementing and maintaining SPDY wasn't really an easy task.
"It took us a period of time to refactor large chunks of Nginx core the right way to support a newer approach to HTTP, and to achieve optimization so that our implementation is practical and useful in the real-world scenario," Garrett explained. "As a result, over 95 percent of all the sites currently using SPDY are running Nginx — which of course makes us proud of the work. We're hoping to transition smoothly to support HTTP/2 as it develops."
One of the biggest changes that HTTP/2 proposes is the recommendation to use TLS-based encrypted communications in a persistent always-on approach.
"The discussion around encryption has broader implications than security for the website and its data," Garrett said. "It also incorporates current social and political issues."
HTTP/2 also introduces some differences with prioritization, which helps to provide more control over the traffic flows. Overall, Garrett expects that the biggest challenge of deploying HTTP/2-enabled servers will be for site owners to adapt their already implemented HTTP/1.1 optimization techniques to an HTTP/2 approach.
"It could be a lot of work to re-engineer site optimizations, and maintain backward compatibility with the older clients at the same time," Garrett said. "Nginx actually provides to the underlying application the information about the protocol being used, so it's easy for the app to distinguish what version of a site to serve, and it's easy for Nginx to route to the relevant app component or site version."
As such, Garrett expect that Nginx will be able to act as an extremely efficient "protocol gateway" (or "translator," or "bridge") if needed to assist sites with the transition.
"This has been largely a common deployment scenario for SPDY: using Nginx as an extremely efficient SPDY-gateway," Garrett said. "This will likely be important for maintaining and encapsulating legacy HTTP/1.1-based configurations with the advent of HTTP/2."
While HTTP/2 is now entering the Internet landscape, HTTP 1.1 isn't about to disappear anytime soon either. Garret expects that HTTP 1.1 will be used for another five to ten years.
Read more on "Real World Open Source" »