Tiven

Tiven

博观而约取,厚积而薄发

天问的个人网站(天问博客),专注于Node.js、Vue.js、React、Vite、Npm、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。生命不息,奋斗不止... [ hexo blog ]

Nginx学习与实战 · 配置HTTP2


HTTP/2 协议于2015年5月正式版发布,HTTP/2大幅度的提高了web性能,在HTTP/1.1完全语意兼容的基础上,进一步减少了网络的延迟。实现低延迟高吞吐量。本文就讲讲在LinuxNginx配置HTTP2的方法和步骤。

Nginx HTTP2

1、HTTP2科普

HTTP2基于spdy的思路,引入流与帧的概念,继承了 spdy 的多路复用,在此基础上开发的。

spdy协议: spdy在五层协议栈的TCP层与HTTP层引入了一个新的逻辑层以提高效率。spdy是一个中间层,对TCP层与HTTP层有很好的兼容,不需要修改HTTP层即可改善应用数据传输速度。 spdy通过多路复用技术,使客户端与服务器只需要保持一条链接即可并发多次数据交互,提高了通信效率。

1-1、HTTP2优点:

  • 二进制分帧
  • 首部压缩
  • 流量控制
  • 多路复用
  • 请求优先级
  • 服务器推送

2、前提条件

  1. 网站必须开启HTTPS
  2. openssl的版本必须 ≥ 1.0.2e
  3. nginx的版本必须 ≥ 1.9.5

3、安装 & 配置

目录介绍:

  • nginx安装目录:/usr/local/nginx/
  • nginx源码目录:/root/dev/nginx-1.20.1/

3-1.查看nginx版本信息

这里的nginx配置了全局环境变量,可以直接输入以下命令,nginx具体路径/位置根据个人配置来决定。

nginx -V

输出:

nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module

查看configure中是否安装了with-http_v2_module模块,这里的已经安装了。若没有则进行下一步。

3-2.安装with-http_v2_module模块

3-2-1. 进入nginx源码目录,一般结构如下:

auto  
CHANGES  
CHANGES.ru  
conf  
configure  
contrib  
html  
LICENSE  
Makefile  
man  
objs  
README  
src

3-2-2. 配置with-http_v2_module模块,--prefix指向nginx安装目录

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module

3-2-3. 编译,注意: 如果是首次安装nginx,还需要在编译完成后执行make install安装操作。如果之前已经安装了nginx,并且配置了相关服务,就不要再执行make install安装操作了,否则会覆盖原来的安装。

make

3-2-4. 编译执行成功后,会在nginx源码目录生成objs文件夹,此目录有一个nginx二进制文件,需要把这个nginx可执行文件复制到nginx安装目录。建议把旧文件先备份,方便回滚。

# 备份旧的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 复制新的nginx
cp ./objs/nginx /usr/local/nginx/sbin/nginx

3-2-5. 检查模块是否添加成功,若configure arguments中包含--with-http_v2_module 模块说明已经添加成功

/usr/local/nginx/sbin/nginx -V

3-3.配置 nginx.conf

server {
    # 添加 http2
    listen 443 ssl http2;
    server_name tiven.cn; 
    root html;
    index index.html index.htm;
    # ...
    # ...
    # ...
}

3-4.重启nginx

# 检查配置
nginx -t
# 停止nginx
nginx -s stop
# 启动nginx
nginx

4、检查网站HTTP2协议是否开启

具体方法详见本站另一篇博文:HTTP协议版本检测


Nginx 相关推荐


欢迎访问:天问博客