728x90
CentOS 7에서 curl을 컴파일하여 HTTP/2를 지원하도록 설치하는 방법
테스트 환경
$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
curl 버전 확인
$ curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.53.1 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
컴파일 도구 설치
sudo yum install -y gcc make
1. 컴파일에 필요한 의존성 설치
sudo yum install -y openssl-devel libnghttp2-devel
2. curl 소스 코드 다운로드
- cURL Download : https://curl.se/download.html
cd /usr/local/src
wget https://curl.se/download/curl-8.1.2.tar.gz
tar xfz curl-8.1.2.tar.gz
cd curl-8.1.2
3. 컴파일 및 설치
./configure --with-nghttp2 --with-ssl --prefix=/usr/local
make
make install
4. 기존 curl 대신 컴파일한 버전을 사용하도록 심볼릭 링크 설정
sudo mv /usr/bin/curl /usr/bin/curl_old
sudo ln -s /usr/local/bin/curl /usr/bin/curl
5. 설치된 curl 버전 확인
curl --version
$ /usr/local/bin/curl --version
curl 8.1.2 (x86_64-pc-linux-gnu) libcurl/8.1.2 OpenSSL/1.0.2k-fips zlib/1.2.7 nghttp2/1.33.0
Release-Date: 2023-05-30
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HSTS HTTP2 HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets
컴파일된 버전의 curl이 설치되고 HTTP/2를 지원합니다. 이제 curl 명령어로 HTTP/2를 사용하여 웹 서버와 통신할 수 있습니다.
728x90
curl 명령어를 사용하여 HTTP/1.1과 HTTP/2의 속도를 측정하는 방법
HTTP/2는 HTTP/1.1과 비교하여 다양한 성능 개선을 제공합니다. 주요한 속도 차이 포인트는 다음과 같습니다.
- Multiplexing: HTTP/2는 단일 TCP 연결을 통해 여러 요청과 응답을 병렬로 처리할 수 있습니다. 이는 요청과 응답을 동시에 처리하므로 웹 페이지 로딩 시간을 단축시킵니다. 반면, HTTP/1.1은 동시에 처리할 수 있는 요청 수에 제한이 있으며, 병렬 요청을 위해 여러 개의 TCP 연결을 필요로 합니다.
- 헤더 압축: HTTP/2는 헤더 필드를 압축하여 데이터 전송량을 줄입니다. 이는 더 적은 네트워크 대역폭을 사용하며, 웹 페이지 로딩 속도를 향상시킵니다.
- 서버 푸시: HTTP/2는 서버에서 클라이언트 요청 이전에 리소스를 프로액티브하게 푸시할 수 있습니다. 이는 클라이언트가 요청하지 않은 리소스를 사전에 전송하여 웹 페이지 로딩 속도를 향상시킵니다.
HTTP/1.1 속도 측정
curl -s -w 'HTTP/1.1: %{time_total}\n' -o /dev/null https://www.google.com
$ curl -s -w 'HTTP/1.1: %{time_total}\n' -o /dev/null https://www.google.com
HTTP/1.1: 0.259970
위 명령어는 http://www.google.com에 대한 HTTP/1.1 요청을 보내고 소요된 전체 시간을 출력합니다.
HTTP/2 속도 측정
curl -s --http2 -w 'HTTP/2: %{time_total}\n' -o /dev/null https://www.google.com
$ curl -s --http2 -w 'HTTP/2: %{time_total}\n' -o /dev/null https://www.google.com
HTTP/2: 0.286711
위 명령어는 https://www.google.com에 대한 HTTP/2 요청을 보내고 소요된 전체 시간을 출력합니다.
주의할 점은 -s 옵션은 출력을 간소화하여 필요한 정보만을 출력하도록 설정합니다. -w 옵션은 출력 형식을 지정하며, %{time_total}은 전체 소요 시간을 나타냅니다. -o /dev/null은 응답 본문을 출력하지 않도록 설정합니다.
실제로 테스트할 때는 원하는 사이트의 URL을 사용하면 됩니다. 위 명령어에서 http://www.google.com 및 https://www.google.com을 각각 원하는 사이트의 URL로 변경하세요.
참고URL
- Benefits For REST APIs with HTTP/2 HTTP/1.x vs HTTP/2
728x90
'리눅스' 카테고리의 다른 글
우분투에서 figlet과 lolcat을 함께 사용하여 컬러풀한 텍스트 아트를 만드는 방법 (0) | 2023.06.29 |
---|---|
리눅스 apachetop 명령어 (0) | 2023.06.29 |
아파치(Apache)에서 HTTP/2 모듈 활성화하는 방법 (0) | 2023.06.28 |
Apache MPM(prefork, worker, event)의 "#define DEFAULT_SERVER_LIMIT" 값을 변경하는 방법 (0) | 2023.06.27 |
아파치(Apache 2.4) 웹 서버에서 Protocols 지시자를 적용하는 방법 (0) | 2023.06.26 |