在 CentOS 6.8 x86_64 上安装 nghttp2 最新版及让 curl 具有 http2 特性

简介: 在 CentOS 6.8 x86_64 上安装 nghttp2 最新版及让 curl 具有 http2 特性

nghttp2 是什么?

nghttp2 是一个实现 IETF 官方 HTTP/2 和 HPACK 头压缩算法的 C 库,但不限如此,在 C 库基础上,还实现了 http2 的客户端,服务器,代理服务器,以及压测工具。参见官网链接

http://www.nghttp2.org/

目前最新版本是 1.24.0

https://github.com/nghttp2/nghttp2/releases


网上基本上都是在 Ubuntu 平台上安装 nghttp2,比如,我按照下面的链接在 Ubuntu 16.04.1 LTS 上顺利安装了 nghttp2

http://www.linuxidc.com/Linux/2016-01/127588.htm

 

安装之前的准备

升级 Autoconf 2.63 到 2.69

http://blog.csdn.net/tao_627/article/details/77259591

升级 GCC 4.4.7 到 4.9.2 (通过 devtoolset)

http://blog.csdn.net/tao_627/article/details/77260963

 

安装相关依赖库

sudo yum -y groupinstall "Development Tools"

sudo yum -y install openssl-devel libxml2-devel libev-devel jemalloc-devel python-devel

wget https://c-ares.haxx.se/download/c-ares-1.12.0.tar.gz -O /tmp/c-ares.tar.gz

mkdir -p /tmp/c-ares

tar -zxvf /tmp/c-ares.tar.gz -C /tmp/c-ares --strip-components=1

cd /tmp/c-ares && ./configure --libdir=/usr/lib64

make

sudo make install

wget http://www.digip.org/jansson/releases/jansson-2.9.tar.gz -O /tmp/jansson.tar.gz

mkdir -p /tmp/jansson

tar -zxvf /tmp/jansson.tar.gz -C /tmp/jansson --strip-components=1

cd /tmp/jansson && ./configure --libdir=/usr/lib64

make

make check

sudo make install


下面编译 nghttp2 最新版

wget https://github.com/nghttp2/nghttp2/releases/download/v1.24.0/nghttp2-1.24.0.tar.bz2

tar jxvf nghttp2-1.24.0.tar.bz2

cd nghttp2-1.24.0

./configure

make

make install

这里只是安装的库,在 /usr/local/lib/libnghttp2.so,头文件在 /usr/local/include/nghttp2


更新动态库

vim /etc/ld.so.conf

添加‘/usr/local/lib’

更新配置文件,执行 ldconfig


注意:nghttp2 本身就是一个 http2 的巨大宝库,这里我们仅是简单用到它的动态库。有兴趣的可以继续研究它的其它应用。


下面将 nghttp2 添加进 curl 中,使 curl 带有 HTTP2 特性

从官网下载最新版 curl 源码

wget https://curl.haxx.se/download/curl-7.55.1.tar.bz2

tar jxvf curl-7.55.1.tar.bz2

cd curl-7.55.1

./configure --with-nghttp2=/usr/local --with-ssl

make

make install


必要时修改环境变量

echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf

ldconfig

更新动态库


遇到的问题

在源码编译 curl 时,执行 configure 命令遇到

checking run-time libs availability... failed

configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lnghttp2   -lssl -lcrypto -lssl -lcrypto   -lz -lrt

解决方法

刚才安装的动态库没有刷新到系统中,导致编译 curl 时没有找到

vim /etc/ld.so.conf

添加‘/usr/local/lib’

更新配置文件,执行 ldconfig

查找下面的库是否已经找到

ldconfig -p | grep --color libnghttp2

验证

查看 curl 版本时会发布特性中会增加 HTTP2 功能支持。此时 –http2 参数就可以正常使用了:

测试 curl with http2

我们再使用如下命令测试

curl --http2 -I https://nghttp2.org/

curl --http2 -vo test.out https://nghttp2.org/

我们可以看到详细的交互信息

相关文章
|
网络协议 Linux 网络安全
curl(http命令行工具):Linux下最强大的网络数据传输工具
curl(http命令行工具):Linux下最强大的网络数据传输工具
874 0
|
JSON 搜索推荐 网络协议
玩转curl指令—测试简单的HTTP接口
玩转curl指令—测试简单的HTTP接口
2357 0
|
12月前
|
安全 Linux 定位技术
Curl访问Kerberos SPNEGO保护的HTTP资源
最后,记住,虽然Kerberos的魔法强大且久经考验,但它仍需你谨慎掌握。SPNEGO的舞步看似复杂,但一旦跳起来,你会发现自己在安全和便捷的旋律中翩翩起舞。而Curl,这一灵活敏捷的小工具,它的确有能力成为你施展这些魔法的得力助手。
329 14
|
10月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
1071 0
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
1294 30
|
缓存 负载均衡 应用服务中间件
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
442 1
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
|
分布式计算 关系型数据库 MySQL
Sqoop【部署 01】CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
【2月更文挑战第8天】Sqoop CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
819 1
|
API
掌握 HTTP 请求的艺术:理解 cURL GET 语法
掌握 cURL GET 请求的语法和使用方法是 Web 开发和测试中的基本技能。通过灵活运用 cURL 提供的各种选项,可以高效地与 API 进行交互、调试网络请求,并自动化日常任务。希望本文能帮助读者更好地理解和使用 cURL,提高工作效率和代码质量。
2032 7
|
安全 Linux 编译器
Centos 7.9如何使用源码编译安装curl最新版本
通过上述步骤,您就能在CentOS 7.9上成功地从源代码编译并安装curl的最新版本。这种方法不仅提供了灵活性,允许您定制编译选项,还确保了软件的最新功能和安全更新得到应用。
1180 2
|
缓存 应用服务中间件 nginx
安装nginx-http-flv-module模块
本文介绍如何为Nginx安装`nginx-http-flv-module`模块。此模块基于`nginx-rtmp-module`二次开发,不仅具备原模块的所有功能,还支持HTTP-FLV播放、GOP缓存、虚拟主机等功能。安装步骤包括:确认Nginx版本、下载相应版本的Nginx与模块源码、重新编译Nginx并加入新模块、验证模块安装成功。特别注意,此模块已包含`nginx-rtmp-module`功能,无需重复编译安装。
1598 3

热门文章

最新文章