구독해서 새 게시물에 대한 알림을 받으세요.

NGINX와 quiche로 HTTP/3 시험해 보기

2019. 10. 17.

4분 읽기

얼마 전에 저희 엣지 네트워크에서 HTTP/3 가 이용 가능 하다고 발표한 바 있습니다. HTTP/3은 인터넷의 보안과 성능을 향상시키도록 만들어진 HTTP의 새로운 버전입니다. 이제 여러분의 클라우드플레어 존에서 HTTP/3 을 켜 두고 Chrome Canarycurl 과 같은 클라이언트를 사용하여 시험해 볼 수 있습니다.

예전부터 프로토콜을 시험하고자 하는 사람들을 위해 quiche 프로젝트의 일부로 HTTP/3 예제 서버를 제공하고 있습니다만, 기능이 제한적인 관계로 범용 웹 서버를 대체할 수 있는 정도는 아니었습니다.

이번에는 여러분의 NGINX 에 우리의 HTTP/3과 QUIC 구현을 통합할 수 있음을 발표하게 되어 기쁩니다. 이것은 NGINX의 패치 형태로 제공되며 업스트림의 NGINX 코드베이스에 적용하여 직접 빌드할 수 있습니다.

주의할 점은 이것은 NGINX 프로젝트에서 공식적으로 지원되거나 승인받은 것이 아니며, 단지 저희 클라우드플레어가 QUIC과 HTTP/3의 도입을 더 많은 커뮤니티에게 촉진하기 위한 목적으로 제공하는 것이라는 점입니다.

빌드하기

첫번째로 NGINX 소스 코드를 다운로드받아서 압축을 풀어 둡니다. HTTP/3 과 QUIC 패치는 1.16.x 릴리즈 브랜치에만 적용 가능하다는 점에 주의해 주세요 (최신 안정 버전은 1.16.1 입니다).

 % curl -O https://nginx.org/download/nginx-1.16.1.tar.gz
 % tar xvzf nginx-1.16.1.tar.gz

HTTP/3 과 QUIC의 기반 구현인 quiche도 받아 놓습니다:

 % git clone --recursive https://github.com/cloudflare/quiche

이제 패치를 NGINX에 적용 합니다:

 % cd nginx-1.16.1
 % patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

마지막으로 NGINX에 HTTP/3 지원을 추가하여 빌드 합니다:

 % ./configure                          	\
   	--prefix=$PWD                       	\
   	--with-http_ssl_module              	\
   	--with-http_v2_module               	\
   	--with-http_v3_module               	\
   	--with-openssl=../quiche/deps/boringssl \
   	--with-quiche=../quiche
 % make

위 명령은 NGINX 빌드 시스템에게 HTTP/3 지원을 추가하고 ( --with-http_v3_module ) 다운로드받아 놓은 quiche 라이브러리를 해당 경로에서 찾아서 사용하라는 의미( --with-quiche=../quiche ) 이며, TLS와 HTTP/2 옵션을 추가 합니다. 추가 옵션이 필요하면 더 설정하면 됩니다.

상세한 방법에 대해서는 여기를 참조해 주세요.

실행하기

빌드가 완료 되면 listen 지시어에 quicreuseport 옵션을 추가하여 HTTP/3 연결을 받아들일 수 있도록 설정 합니다.

다음은 바로 시작해 볼 수 있는 최소한의 설정 입니다:

events {
    worker_connections  1024;
}

http {
    server {
        # QUIC과 HTTP/3 을 설정.
        listen 443 quic reuseport;

        # HTTP/2 설정 (옵션).
        listen 443 ssl http2;

        ssl_certificate      cert.crt;
        ssl_certificate_key  cert.key;

        # 모든 TLS 버전을 설정 (TLSv1.3은 QUIC에서 필요함)
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        
        # HTTP/3 프로토콜 협상을 위해 Alt-Svc 헤더를 추가.
        add_header alt-svc 'h3-24=":443"; ma=86400';
    }
}

위 설정은 각각 TCP/443 포트에서 HTTP/2, UDP/443 포트에서 HTTP/3을 서비스할 수 있도록 합니다.

이제 이용 가능한 HTTP/3 클라이언트 ( Chrome Canary, curl,  quiche의 예제로 제공되는 HTTP/3 클라이언트 등) 를 사용하여 여러분의 NGINX에 HTTP/3으로 연결할 수 있습니다.

여러분이 직접 HTTP/3을 시험해 볼 수 있도록 이 패치를 제공해 드리게 되어서 기쁩니다. 하지만 이 구현은 아직 실험적이며 기능에 제약 및 버그가 존재할 수 있습니다. 만약 여러분이 사용 중에 문제나 버그를 발견하면 quiche 프로젝트에 티켓을 제출해 주세요.

This is a Korean translation of an existing post by Alessandro Ghedini, translated by Junho Choi.

Cloudflare에서는 전체 기업 네트워크를 보호하고, 고객이 인터넷 규모의 애플리케이션을 효과적으로 구축하도록 지원하며, 웹 사이트와 인터넷 애플리케이션을 가속화하고, DDoS 공격을 막으며, 해커를 막고, Zero Trust로 향하는 고객의 여정을 지원합니다.

어떤 장치로든 1.1.1.1에 방문해 인터넷을 더 빠르고 안전하게 만들어 주는 Cloudflare의 무료 앱을 사용해 보세요.

더 나은 인터넷을 만들기 위한 Cloudflare의 사명을 자세히 알아보려면 여기에서 시작하세요. 새로운 커리어 경로를 찾고 있다면 채용 공고를 확인해 보세요.
한국어Developers (KO)NGINX (KO)QUIC (KO)HTTP3 (KO)

X에서 팔로우하기

Cloudflare|@cloudflare

관련 게시물

2024년 4월 05일 오후 1:01

브라우저 렌더링 API GA, Cloudflare Snippets, SWR 출시, 모든 사용자에게 Workers for Platforms 제공

이제 모든 유료 Workers 고객이 향상된 세션 관리 기능을 갖춘 브라우저 렌더링 API를 사용할 수 있습니다...

2024년 4월 03일 오후 1:30

R2, 이벤트 알림, Google 클라우드 스토리지로부터의 마이그레이션 지원, 저빈도 액세스 스토리지 계층 추가

Cloudflare R2의 새로운 세 가지 기능(이벤트 알림, Google 클라우드 스토리지로부터의 마이그레이션 지원, 저빈도 액세스 스토리지 계층)을 소개하게 되어 기쁩니다...

2024년 4월 02일 오후 1:01

Workers AI 레벨 업: 정식 출시 및 더 많은 새로운 기능 제공

오늘 Cloudflare의 추론 플랫폼인 Workers AI가 GA가 되고, LoRA를 사용하여 세밀하게 조정된 모델과 HuggingFace 원클릭 배포를 지원하는 등의 발표를 하게 되어 기쁩니다. 이제 Cloudflare Workers가 파이썬 프로그래밍 언어 등을 지원합니다...