Использование curl с поддержкой http/2 в Unix/Linux

Использование curl с поддержкой http/2 в Unix/Linux

Недавно, понадобилось использовать curl с поддержкой http/2. Я поискал материал по интернету и решил создать свою статью «Использование curl с поддержкой http/2 в Unix/Linux» и рассказать как я включил данную поддержку.

Примером, была взята Debian ОС, по этому, буду говорить что и как я делал. Если будут проблемы с настройкой для другой Unix/Linux ОС — пишите и я вам помогу настроить.

Устанавливаем необходимый софт:

# apt-get install -y tmux curl vim wget htop git

Сейчас с помощью curl проверяем что действительно нет поддержки http/2:

root@debian:/usr/local/src# curl -I https://nghttp2.org/
HTTP/1.1 200 OK
Date: Sun, 24 Apr 2016 01:30:31 GMT
Content-Type: text/html
Last-Modified: Sat, 16 Apr 2016 14:56:04 GMT
Etag: "57125284-1a0a"
Accept-Ranges: bytes
Content-Length: 6666
X-Backend-Header-Rtt: 0.001173
Strict-Transport-Security: max-age=31536000
Server: nghttpx nghttp2/1.10.0-DEV
Via: 2 nghttpx
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff

root@debian:/usr/local/src#

Если попытаться использовать HTTP 2 протокол, то выдаст ошибку протокола:

$ curl --http2 -I https://nghttp2.org/
# Unsupported protocol error

Или:

curl: (1) Unsupported protocol

Установка nghttp2 для поддержки curl с http/2

Но для начала устанавливаем необходимое ПО.

Для Debian/Ubuntu:

# apt-get install g++ make binutils autoconf automake autotools-dev libtool pkg-config \
zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
libjemalloc-dev cython python3-dev python-setuptools -y

Устанавливаем nghttp2 с исходного кода

Клонируем проект:

# cd /usr/local/src && git clone https://github.com/tatsuhiro-t/nghttp2.git

Переходим в папку:

# cd nghttp2

Выполняем:

# autoreconf -i && automake && autoconf && ./configure && make && make install

Обновляем curl до последней версии.

Ставим ПО:

# apt-get build-dep curl

Качаем свежий curl:

# cd /usr/local/src && wget http://curl.haxx.se/download/curl-7.46.0.tar.bz2 && tar -xvjf curl-7.46.0.tar.bz2 && cd curl-7.46.0

Собираем:

./configure --with-nghttp2=/usr/local --with-ssl && make && make install && ldconfig

Проверяем что вышло:

root@debian:/usr/local/src/curl-7.46.0# curl --http2 -I nghttp2.org

curl: /usr/local/lib/libcurl.so.4: no version information available (required by curl)
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

HTTP/2.0 200
date:Sun, 24 Apr 2016 01:43:05 GMT
content-type:text/html
last-modified:Sat, 16 Apr 2016 14:56:04 GMT
etag:"57125284-1a0a"
accept-ranges:bytes
content-length:6666
x-backend-header-rtt:0.001002
server:nghttpx nghttp2/1.10.0-DEV
via:2 nghttpx
x-frame-options:SAMEORIGIN
x-xss-protection:1; mode=block
x-content-type-options:nosniff

Если получите какую-то ошибку, то используйте, чтобы указать curl где лежат библиотеки:

LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/curl --http2 -I nghttp2.org

Вот и все, тема «Использование curl с поддержкой http/2 в Unix/Linux»  завершена.

One thought on “Использование curl с поддержкой http/2 в Unix/Linux

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.