Trawling

Actix Web 4.19, http2 기능을 켠 빌드에서 평문 HTTP/2 자동 판별 기본화

Actix Web 4.19.0은 `http2` 기능을 켠 빌드에서 평문 TCP 연결의 HTTP/2(h2c) 자동 판별을 기본 활성화하고, 받아들인 TCP 연결의 TCP_NODELAY도 기본값으로 켭니다. HTTP/1.x만 받도록 자동 판별을 끌 수 있으며, TCP_NODELAY는 작은 쓰기를 TCP 확인 응답 대기 없이 보내도록 합니다.

Actix Web 4.19.0은 http2 기능을 활성화한 빌드에서 평문 TCP 연결의 HTTP/2(h2c)를 기본으로 자동 판별합니다. 받아들인 TCP 연결에서는 TCP_NODELAY도 기본 활성화합니다.

HttpServer::bind()는 주소에 리스너를 만들고, listen()은 기존 TcpListener를 넘겨받습니다. http2 기능이 켜져 있으면 이 메서드들로 설정한 평문 리스너가 TCP 스트림의 처음 몇 바이트를 읽어 HTTP/1.x와 HTTP/2를 판별합니다. TLS 연결은 ALPN 정보를 이용해 HTTP 버전을 선택합니다.

기존에는 평문 HTTP/2 자동 판별에 bind_auto_h2c()나 listen_auto_h2c()를 사용할 수 있었습니다. v4.19.0부터 두 메서드는 사용 중단 예정으로 표시됐으며, 일반 bind()와 listen()을 사용하도록 안내합니다.

평문 연결에서 HTTP/1.x만 받으려면 bind()나 listen()을 호출하기 전에 auto_h2c(false)를 설정하면 됩니다. 이 설정은 TLS 리스너와 bind_auto_h2c() 또는 listen_auto_h2c()를 명시적으로 호출한 경우에는 적용되지 않습니다. listen()은 넘겨받은 TcpListener의 기존 설정을 바꾸지 않습니다.

TCP_NODELAY는 받아들인 TCP 연결에서 기본 활성화됩니다. TCP 확인 응답을 기다리지 않고 작은 쓰기를 보낼 수 있게 하는 설정이며, tcp_nodelay(bool)로 값을 지정할 수 있습니다.

참고 자료

오류 제보