The ultimate decision to use HTTP/1 or HTTP/2 is negotiated between the client and the server via the Application-Layer Protocol Negotiation, or ALPN. In principal, the highest possible protocol is used where possible (i.e. HTTP/2 is favored over HTTP/1 when conditions are met).
Setting up your Load Balancer for HTTP/2 or HTTP/3
HTTP overview
The Hypertext Transfer Protocol (HTTP) is an application layer protocol, providing the foundations of data exchange and transfer on the web. As a request-response protocol, the client (usually a web browser) requests certain data (e.g. the files needed to display a webpage) from a server, which transfers the requested data in response.
HTTP/1
Development of the first version of the HTTP protocol, HTTP/1, began in 1989. The first standardized version, HTTP1.1 was released in 1997, bringing together many of the features that would characterize HTTP/1 for the next 15 years. These include text-based request/response protocol, use of headers, requests/responses over a TCP connection, and cache control.
HTTP/2
HTTP/2 was released in 2015. It represents a more efficient version of HTTP, moving from a text based protocol to a binary protocol. This is easier to parse for clients and servers, helps avoid errors and allows for multiplexing. Over 40% of websites now use HTTP/2/, and it is supported by 97% of web browsers.
HTTP/2 improves upon HTTP/1’s performance in many ways, including but not limited to:
- Increased efficiency via use of binary framing. HTTP/1 uses text-based data transfer, which can be long, bandwidth-heavy and error-prone. HTTP/2 uses binary message framing, which is more compact and efficient so easier to parse, and provokes fewer errors.
- Solves blocking problem via multiplexing: HTTP/1 has a Head Of Line (HOL) blocking problem, where over a single TCP connection the browser must wait for its existing requests to be completely answered before it can make a new request. HTTP/2 solves this with multiplexing: the ability to make multiple parallel requests over a single TCP connection.
- Reduced overhead with header compression: HTTP/2 uses header compression to reduce the overhead caused by TCP’s slow-start mechanism.
HTTP/3
HTTP/3 was published in 2022. It uses QUIC as its underlying transport protocol, in contrast with HTTP/1 and HTTP/2 which use TCP. QUIC helps to solve issues including the potential interruption in service when a user switches from a WiFi network to a mobile network. HTTP/3’s other advantages include faster establishment of a connection and more thorough encryption. 25% of websites use HTTP/3 and is supported by most major web browsers, representing over 75% of users.
HTTP version support with Scaleway Load Balancers
Backends and frontends of Scaleway Load Balancers support HTTP/1, HTTP/2 and HTTP/3 differently, depending on their TLS configuration:
Frontend with TLS | Frontend without TLS | Backend with TLS | Backend without TLS | |
---|---|---|---|---|
HTTP/1 | «Validate Icon» | «Validate Icon» | «Validate Icon» | «Validate Icon» |
HTTP/2 | «Validate Icon» | ❌ | «Validate Icon» | ❌ |
HTTP/3 | «Validate Icon» | ❌ | ❌ | ❌ |
In brief:
- Scaleway Load Balancers support HTTP/2 connections to frontends with TLS, and HTTP/2 connections from backends with TLS to backend servers.
- Scaleway Load Balancers support HTTP/3 connections to frontends with TLS, but do not support HTTP/3 connections from backends to backend servers.
Configuring your Load Balancer for HTTP/2
HTTP/2 is supported by default on frontends meeting the following conditions:
- The frontend is attached to an HTTP backend
- The frontend has an SSL/TLS certificate.
HTTP/2 is supported by default on backends meeting the following conditions:
- The backend has TLS activated.
- The backend server is configured to support HTTP/2.
Configuring your Load Balancer for HTTP/3
HTTP/3 is supported on frontends meeting the following conditions:
- The frontend is attached to an HTTP backend
- The frontend has an SSL/TLS certificate.
- HTTP/3 has been activated on the frontend (see below).
HTTP/3 is not supported on backends in any case.
To create a frontend that allows HTTP/3 connections, follow the instructions for adding a frontend to your Load Balancer or editing an existing frontend
- Under Configure backend, ensure that you choose a backend using HTTP protocol.
- Under Advanced Settings, select Enable HTTP/3.