O servidor está mudando para o protocolo que o cliente pediu.
Quando usar
Atualização de uma conexão para WebSocket.
Bom saber
Você quase sempre vê o 101 durante um handshake de WebSocket: o cliente envia Upgrade: websocket e Connection: Upgrade, e o servidor responde 101 com Sec-WebSocket-Accept. Se você receber 200, 400 ou 426, algo no meio do caminho descartou os cabeçalhos Upgrade. Atrás do nginx, você precisa repassá-los explicitamente com proxy_http_version 1.1, proxy_set_header Upgrade $http_upgrade e proxy_set_header Connection upgrade.
Depois da troca, os timeouts de inatividade viram o próximo problema: o nginx fecha conexões proxy depois de proxy_read_timeout, 60 segundos por padrão, e o AWS ALB tem um timeout de inatividade de 60 segundos, então sockets ociosos precisam de pings. O HTTP/2 não usa 101; WebSockets sobre HTTP/2 usam o CONNECT estendido da RFC 8441. Um 101 não tem corpo e nunca vai para o cache.
Informativo (1xx)
Os códigos 1xx são informativos: o servidor recebeu a requisição e a troca continua. Navegadores e bibliotecas HTTP cuidam deles para você.
Como fica
HTTP/1.1 101 Switching ProtocolsComo verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/