Plan your migration to the global external HTTP(S) load balancer

Stay organized with collections Save and categorize content based on your preferences.

If you are an existing user of the global external HTTP(S) load balancer (classic), make sure you review this page if you are planning to migrate to the global external HTTP(S) load balancer or if you are planning a new deployment with the global external HTTP(S) load balancer.

Feature differences

The following features are not supported with the global external HTTP(S) load balancer. They are only available with the global external HTTP(S) load balancer (classic):

Data plane differences

The following table highlights differences in the data plane between the global external HTTP(S) load balancer (classic) and the global external HTTP(S) load balancer. These differences affect how the load balancers respond to some common events.

Event Global external HTTP(S) load balancer (classic) response Global external HTTP(S) load balancer response
Status/error codes
All backends are unhealthy Returns HTTP 502 Returns HTTP 503
Request uses a banned SSL cipher Returns HTTP 502 Returns HTTP 503
Early upstream connection reset by the backend Returns HTTP 502 Returns HTTP 503
Failed connection upgrade (for example, while upgrading to Websockets) Returns HTTP 400 Returns HTTP 403
Header is too large Returns HTTP 413 Returns HTTP 431
Header handling
Request uses a custom HTTP method with no body Adds the Transfer Encoding: Chunked header to request sent to backend Adds the Content-Length: 0 header to request sent to backend
Format of the X-Forwarded-For header added to requests sent to backend Uses ', ' delimiter between IPs Uses ',' delimiter between IPs (no space after the comma)
Header case preservation Header case is preserved All header keys are transformed to lowercase
(HTTP/1.1 only) Invalid header name (for example, unsupported characters in header) Allowed (for HTTP/1.1) Returns HTTP 502 (for HTTP/1.1)
(HTTP/1.1 only) Repeated (but same) Content-Length header in request Allowed (for HTTP/1.1) Returns HTTP 502 (for HTTP/1.1)
(HTTP/1.1 only) Multiple hosts in header When 2 or more hosts are added, and the first one is valid, the header is accepted When 2 or more hosts are added, and any are invalid, the load balancer returns HTTP 502
(HTTP/1.1 only) Connection: Keep-Alive header Adds the Keep-Alive header in requests sent to backend by default Does not add this header by default
Custom header handling
Header value is empty Adds empty header Skips empty headers
Request handling
Backwards slashes in request URL left unchanged Converts to forward slash
Merge duplicate slashes in request Leaves slashes unmerged Merges slashes
`#` in request path Allowed Returns HTTP 400
(HTTP/1.1 only) Illegal characters in request path (for example, `\\x7f\\x7f`) Allowed (for HTTP/1.1) Returns HTTP 502 (for HTTP/1.1)
Traffic distribution (URL map configuration)
Client request includes a port number The port number is ignored even if you have configured hosts with ports in the URL map. Only the host name is considered.
For example, requests for example.com:5000 are matched to the backend service for example.com.
Both the host name and the port number are considered.
For example, requests for example.com:5000 are matched to the backend service for example.com:5000. If there isn't a match, the default backend service is used.