클라이언트-서버 통신에서 "HTTP 101 프로토콜 전환"은 어떻게 작동합니까?

클라이언트-서버 통신에서 "HTTP 101 프로토콜 전환"은 어떻게 작동합니까?

NGINX저는 Linux 플랫폼에 설치된 웹 서버에서 제공되는 웹 사이트를 개발 중입니다. 본 웹사이트에서 제공하는 서비스 중 하나는 다음을 기반으로 합니다.웹소켓백엔드 서버.

보다 구체적으로 NGINX 구성은 NGINX가 클라이언트로부터 다음 유형의 요청을 수신할 때를 명시합니다.

GET /websockify HTTP/1.1

요청이 다음으로 리디렉션(프록시)됩니다.WebSocket 백엔드 서버. 이러한 구성은 다음 설정 블록을 통해 수행됩니다.

location /websockify {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

맡다와이어샤크클라이언트가 HTTP 요청을 보내고 HTTP 요청에 다음 2개의 헤더가 포함되어 있는 것을 확인했습니다.

Connection: Upgrade
Upgrade: websocket

NGINX는 다음 유형의 HTTP 응답을 보냅니다.

101 Swiching Protocols

그 후(Wireshark 정보에 따르면) 통신은 HTTP에서 다음과 같은 것으로 전환됩니다.웹소켓나는 모른다.

때때로 내 Firefox 브라우저(이 경우 클라이언트로 작동하고 있음)가 작동을 멈추고 WebSocket 백엔드 서버와 연결을 설정할 수 없습니다.

웹사이트 구성에 오류가 없는지 확인하기 위해 다음과 같은 질문을 드리고 싶습니다. 프로토콜 전환이 브라우저에서 구현됩니까? 전환 후 브라우저는 전환 전과 다르게 데이터를 보내기 시작합니까?

이 주제에 대한 추가 정보를 제공해 주셔서 감사합니다.

감사해요

답변1

이것WebSocket 위키피디아 페이지좋은 개요가 있는 것 같고, 페이지 아래에 프로토콜을 HTTP에서 WebSocket으로 전환하기 위해 클라이언트와 서버 코드에서 사용하는 핸드셰이크가 설명되어 있습니다.

관련 정보