技术解析

Centos 7.4 openssl 都升级 1.0.2k-fips 了,为什么最新版 nginx 还是不支持 http2
0
2021-05-20 21:20:52
idczone

nginx version: nginx/1.13.5

built by gcc 4.8.5 201506国外服务器23 (Red Hat 4.8.5-11) (GCC)

built with OpenSSL 1.0.1e-fips 11 Feb 2013

这是 mainline 版本,stable 版本也是这样。 用的 nginx 官方库,为啥 nginx 不用最新版 openssl 编译呢


nginx 用 http2 可以呀,你的问题具体是?

之前 centos 的 openssl 版本低,就算启用 nginx 的 http2,也不会生效。

装了 openssl1.0.2 之后要重新编译 nginx+openssl hostname ssl http2

也可以装这个 nginx openresty 版本 默认就开了

一般 nginx 编译都是拉最新 openssl 的(当然不要跨大版本,除非你自己可以做完整的测试)
低版本 openssl 不支持 alpn 只有 npn,然而目前多数客户端已经废弃 npn 了,所以连不上 http2

升级系统的 openssl 后要重新编译 nginx,因为我一直是自行编译 nginx,所以不知道各个 yum 源的情况。
另外在编译的时候要启用以下两个模块:
--with-http_v2_module
--with-http_ssl_module
最后可以看一下我的文章:
https://c4.hk/4c

nginx 官方的早就支持了

这个没用过,他的版本和 nginx 是同步的吗,比如 1.11 是指用的 nginx 的 1.11 的源码编译的吗

但是 centos 仓库里并没有支持,看 nginx -V 里的 openssl 版本还是 1.01e

貌似 rpm 源 用高版本编译的在商业版本里 特地要卖你钱

你说的 centos 仓库,是说的 centos 官方的 repo,还是 EPEL 的 repo,还是 nginx 的 repo ?

nginx 官方

都 12 楼了,怎么还没有推荐 docker 没记错 nginx:alpine 是支持 http2 的

前两天我也遇到了这个问题。。。
找了个 rpm 源搞定的问题 0.0

什么源

Docker nginx:alpine

我猜他打包 rpm 的机器还是 openssl 1.0.1 吧,编译的时候就决定好了各项开关了所以你单单升 openssl 没用。
https://github.com/owent-utils/bash-shell/blob/master/LNMP/nginx_with_http2_for_el7.sh
来来来,一键编译 nginx + openssl 1.1.0。稳定分支,编译选项从 nginx 官网抄的

nginx 的官方用的包不一定会跟着 centos 的最新版走。

我用的 https://brouken.com/brouken.repo,不过我不能确保安全性,只能说这个是支持 HTTP2 的,因此你得自己鉴别确定安全再用。

自己编译可破

是的 官方编译的时候用的默认的低版本

用 nginx 官方安装 http://nginx.org/en/linux_packages.html#stable

我就是用这个

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服