HTTP/2 is now the official RFC 7540, and it’s about time to deploy your website on HTTP/2, to get the numerous benefits that HTTP/2 brings.
A very typical deployment is to have Apache (or Nginx) working as a reverse proxy to a Servlet Container such as Jetty or Tomcat.
This configuration cannot be used for HTTP/2, because Apache does not support yet HTTP/2 (nor does Nginx).
We want to propose an alternative deployment replacing Apache (or Nginx) with HAProxy, so that we can leverage Jetty’s 9.3.0 HTTP/2 support, and retain most if not all the features that Apache (or Nginx) were providing as reverse proxy.
For those that don’t know HAProxy, it’s a very fast load balancer and proxy that powers quite a number of the world’s most visited sites, see here.
What you will get is a very efficient TLS offloading (performed by HAProxy via OpenSSL), and Jetty HTTP/2 support, including HTTP/2 Push.
The setup to make HAProxy + Jetty + HTTP/2 work is fairly simple, and documented in detail here.
Don’t wait years to update your website to HTTP/2: whether you run a JEE web application, or a PHP application like WordPress, HAProxy and Jetty can speed up your website considerably, and many studies have shown that this results in more business.
Browsers like Firefox and Chrome already support HTTP/2, so you will get more than half of the world potentially accessing your website with HTTP/2.
Contact us if you want to know more about HTTP/2 and how we can help you to speed up your website.
2 thoughts on “HTTP/2 with HAProxy and Jetty”
This sounds like a great idea. The issue though with HAProxy is that it’s LGPL whereas NGINX is BSD and Apache HTTPD is ASL So, HAProxy can’t be distributed in an OEM sort of fashion whereas the other 2 can. This is important for ISVs that are embedding Jetty and also looking for a way to support HTTP/2 and/or do faster end-to-end SSL (which you guys also recommended HAProxy for in a recent post). Thought on the non-technical aspects of using Jetty with HAProxy from an ISV’s PoV?
LGPL does not affect OEM/ISV use of the code. If you sell a binary version of the code then you just have to make any changes you made to the code available on request. That is assuming you have made changes to the actual code. If not then it should not affect you at all.