nginx中如何升级到支持HTTP2.0

一、前言

# ssl写在443端口后面。这样http和https的链接都可以用    listen 443 ssl http2 default_server;    server_name chat.chengxinsong.cn;      # hsts的合理使用,max-age表明hsts在浏览器中的缓存时间,includesubdomainscam参数指定应该在所有子域上启用hsts,preload参数表示预加载,通过strict-transport-security: max-age=0将缓存设置为0可以撤销hsts  add_header strict-transport-security "max-age=63072000; includesubdomains; preload";      ssl_certificate   /usr/local/nginx/cert/2540136_chat.chengxinsong.cn.pem;    ssl_certificate_key /usr/local/nginx/cert/2540136_chat.chengxinsong.cn.key;      # 分配20mb的共享内存缓存,不同工作进程共享tls会话信息  # ssl_session_cache shared:ssl:20m;      # 设置会话缓存过期时间1h  ssl_session_timeout 60m;      # tls协议的合理配置  # 指定tls协议的版本,不安全的ssl2和ssl3要废弃掉  ssl_protocols tlsv1 tlsv1.1 tlsv1.2;      # 启用ssl_prefer_server_ciphers,用来告诉nginx在tls握手时启用服务器算法优先,由服务器选择适配算法而不是客户端  ssl_prefer_server_ciphers on;      # 优先选择支持前向加密的算法,且按照性能的优先顺序排列  ssl_ciphers ecdhe-rsa-aes128-gcm-sha256:ecdhe:ecdh:aes:high:!null:!anull:!md5:!adh:!rc4;      # 会话恢复的合理使用  # 配置会话票证,减少了tls握手的开销  ssl_session_tickets on;

登录后复制

然后执行检查nginx配置。nginx -t

nginx中如何升级到支持HTTP2.0

意思就是说,http2.0缺少ngx_http_v2_module。nginx缺少http_ssl_module模块,编译安装的时候带上–with-http_ssl_module配置就行了。

二、查资料找原因

出现上面原因是nginx从1.9.5开始,已经用 http_v2_module 模块替换了 ngx_http_spdy_module ,并正式开始支持http2协议。

但是我的nginx是1.12.2。应该不是ngin版本问题

nginx中如何升级到支持HTTP2.0

注意事项:

1、并且需要openssl库的版本在1.0.2以上编译。1.要开启http/2协议支持,需要在nginx 1.10以上版本并且需要openssl库的版本在1.0.2以上编译。

2.http2.0只支持开启了https的网站。

可能是服务器的openssl库的版本,发现是1.0.2。

所以还是要升级到更高点。

三、升级openssl

在http2.0协议中,涉及到alpn(application layer protocol negotiation,应用层协议协商)的支持,目前所有主流的unix服务器系统中内置的openssl库都低于1.0.2版本。通过使用openssl的命令行工具,可以检查当前的http2服务是否支持alpn。

找一个安装目录

1、下载最新版的openssl库编译安装

wget https://www.openssl.org/source/openssl-1.1.0f.tar.gztar xzf openssl-1.1.0f.tar.gzcd openssl-1.1.0f./config --prefix=/usr/local/opensslmake && make install

登录后复制

2.替换旧版本库

mv /usr/bin/openssl /usr/bin/openssl.oldmv /usr/include/openssl /usr/include/openssl.oldln -s /usr/local/openssl/bin/openssl /usr/bin/opensslln -s /usr/local/openssl/include/openssl /usr/include/openssl#链接新库文件ln -s /usr/local/openssl/lib/libssl.so /usr/local/lib64/libssl.soln -s /usr/local/openssl/lib/libcrypto.so /usr/local/lib64/libcrypto.so#检查更新后的openssl依赖库是否是1.1.0fstrings /usr/local/lib64/libssl.so | grep openssl#显示结果表明已升级到最新版本链接库openssl 1.1.0f 25 may 2017#配置openssl库文件的搜索路径echo '/usr/local/openssl/lib' >> /etc/ld.so.conf#使修改后的搜索路径生效ldconfig -v#查看openssl版本,结果显示升级成功openssl versionopenssl 1.1.0f 25 may 2017

登录后复制

四、nginx开启ssl模块

默认编译的 nginx 并不包含 h2 模块,我们需要加入参数来编译,截止发文,nginx 1.9 开发版及以上版本源码需要自己加入编译参数,从软件源仓库下载的则默认编译。 nginx 是不再支持 spdy。

如果你编译的 nginx 不支持,那么在 ./configure 中加入:–with-http_v2_module ,如果没有 ssl 支持,还需要加入 –with-http_ssl_module

1、找到源码包,查看configure中是否支持http2

这时候需要去下载的时候的源码文件夹中找到这个configure。注意:不是编译之后的文件夹。

nginx中如何升级到支持HTTP2.0

在”./configure”配置中,”–with”表示启用模块,也就是说这些模块在编译时不会自动构建”–without”表示禁用模块,也就是说这些模块在编译时会自动构建,若你想nginx轻量级运行,可以去除一些不必要的模块。

执行./configure –help

nginx中如何升级到支持HTTP2.0

从上图知道了nginx在编译时不会自动构建http_ssl_module和http_v2_module。所以需要重新编译nginx。

2、加入参数编译

我们的新配置信息就应该这样写:

./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-openssl=/home/soft/openssl-1.1.0f

登录后复制

上面的/usr/local/nginx这个路径是我们编译之后的包路径。

那么在 ./configure 中加入:–with-http_v2_module ,如果没有 ssl 支持,还需要加入 –with-http_ssl_module,加上刚才更新的openssl到1.1.0,所以需要加上–with-openssl=/home/soft/openssl-1.1.0f。

运行上面的命令即可,等配置完

配置完成后,运行命令

make

登录后复制

这里不要进行make install,否则就是覆盖安装

3、备份和替换

(1)然后备份原有已安装好的nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_07_22.bak

登录后复制

(2)关闭nginx,然后将刚刚编译好的nginx覆盖掉原有的nginx

关闭nginx

./nginx -s quit

登录后复制

移动编译好的nginx到原有的nginx

cp ./objs/nginx /usr/local/nginx/sbin/

登录后复制

(3)启动nginx

./nginx
稍等1分钟作用,然后就可以看到http2.0的效果。

五、查看网站是否是http2.0

右键name,勾选protocol,这样就可以看到http协议。

nginx中如何升级到支持HTTP2.0

上图截图网站地址:

对比一下http1.1的网站

nginx中如何升级到支持HTTP2.0

以上就是nginx中如何升级到支持HTTP2.0的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3240092.html

(0)
上一篇 2025年4月2日 05:36:24
下一篇 2025年4月2日 05:36:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何用服务器做云储存 用服务器做云储存的完整流程

    在当今的数字化时代,云储存已经成为许多企业和个人的必需品。利用服务器搭建自己的云储存系统,不仅可以节省成本,还能提供更高的安全性和控制权。本文将详细介绍如何用服务器做云储存,从选择合适的服务器硬件到配置和管理云储存服务,每一步都将详细说明。…

    2025年4月30日
    000
  • 为什么Next.js静态导出在Nginx上部署后刷新页面时路由会失效?

    Next.js静态站点部署到Nginx后路由失效问题详解 使用Next.js静态导出部署到Nginx服务器后,刷新页面时路由失效,跳转回首页,是许多开发者遇到的常见问题。本文将深入探讨这个问题的成因及解决方法。 问题描述 假设您已创建一个N…

    2025年4月30日
    000
  • 怎么为高负载网络优化Nginx和Node.js

    网络调优如果不先对nginx和node.js的底层传输机制有所了解,并进行针对性优化,可能对两者再细致的调优也会徒劳无功。一般情况下,nginx通过tcp socket来连接客户端与上游应用。我们的系统对tcp有许多门限值与限制,通过内核参…

    2025年4月30日
    000
  • 从0开始搭建一台服务器开发环境【开始篇】

    本博客将指导您如何从头开始搭建一台服务器开发环境,包括以下步骤: 使用SeceruCRM连接服务器后台设置Linux字符编码统一服务器时区安装JDK环境安装Maven安装Tomcat安装Redis安装MySQL安装SVN安装Nginx安装J…

    2025年4月30日
    000
  • 在Linux上如何利用Swagger进行API设计

    本文介绍如何在Linux环境下利用Swagger进行API设计。 整个过程主要分为安装、配置和使用三个阶段。 一、安装Swagger 首先,需要安装Node.js和npm包管理器,它们是Swagger运行的必要环境。使用以下命令安装: su…

    2025年4月30日
    000
  • Swagger在Linux上如何处理错误

    本文指导您如何在Linux环境下排查和解决Swagger相关的错误。 一、排查步骤: 验证Swagger安装: 确认Swagger已正确安装。对于Spring Boot项目,请检查 pom.xml 文件中是否包含以下依赖: io.sprin…

    2025年4月30日
    000
  • LNMP如何优化PHP代码

    提升LNMP(Linux, Nginx, MySQL, PHP)架构下PHP应用性能的关键在于多方面优化。以下策略涵盖PHP代码本身、Nginx服务器配置、MySQL数据库设置以及PHP运行环境的调整,并强调监控和日志分析的重要性。 一、P…

    2025年4月29日
    000
  • Linux LAMP环境如何进行日志管理

    在Linux LAMP架构下,有效的日志管理至关重要,它涵盖了Web服务器(Apache或Nginx)、数据库服务器(MySQL)以及应用的日志文件收集、存储、监控和分析。以下步骤和方法将帮助您优化日志管理: 日志收集与分类 Web服务器日…

    2025年4月29日
    000
  • LNMP环境下如何进行日志管理

    本文介绍在LNMP (Linux, Nginx, MySQL, PHP) 环境下如何高效管理日志。 我们将涵盖日志记录配置、日志轮转、日志分析以及日志安全管理四个关键方面。 一、 日志记录配置 Nginx 日志配置: Nginx 访问日志记…

    2025年4月29日
    000
  • LNMP如何更新维护

    LNMP,即Linux、Nginx、MySQL和PHP的组合,是构建网站的常用环境。本文将详细介绍LNMP环境的更新和维护方法。 一、Nginx更新 更新软件包列表: 首先,更新系统软件包列表,确保获取最新版本信息: sudo apt up…

    2025年4月29日
    000

发表回复

登录后才能评论