menu E4b9a6's blog
rss_feed
E4b9a6's blog
有善始者实繁,能克终者盖寡。

nginx设置http2

作者:E4b9a6, 创建:2024-05-26, 字数:1103, 已阅:534, 最后更新:2024-05-26

这篇文章更新于 191 天前,文中部分信息可能失效,请自行甄别无效内容。

HTTP/2是一种网络传输协议,其为HTTP(Hyper Text Transfer Protocol,超文本传输协议)的第二个主要版本,该协议由互联网工程任务组(IETF)在2015年发布

HTTP/2在原有HTTP/1.1的基础上,引入了许多改进,主要目标是通过支持完整的请求与响应复用,减少延迟,使得网页加载速度更快

以下是HTTP/2的一些主要特性:

  1. 二进制协议:HTTP/2是一个二进制协议,这使得它更易于解析、更高效,更少的错误(例如,消息解析的错误)
  2. 多路复用:HTTP/2允许多个请求和响应在同一个TCP连接上同时进行,从而减少了网络延迟
  3. 流优先级:HTTP/2允许客户端指定请求的优先级,这可以使得更重要的请求更早地得到响应
  4. 服务器推送:HTTP/2允许服务器在客户端需要之前就把资源推送到客户端,这可以提高网页加载的速度
  5. 头部压缩:HTTP/2采用“HPACK”压缩格式来减少头部的大小,从而减少了需要传输的数据量,提高了性能

这些特性使得HTTP/2在很多方面都优于HTTP/1.1,可以提供更快速、更高效的网络通信

大多数现代的浏览器,如Chrome、Firefox、Safari、Edge和Opera都已经支持HTTP/2

而在服务器端,许多主流的服务器软件,如Apache、Nginx、IIS,以及云服务提供商,如Amazon AWS、Google Cloud Platform和Microsoft Azure,也都已经支持HTTP/2

Nginx 中启用 HTTP/2 非常简单(Nginx版本 > 1.9.5),配置如下:

TEXT
server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # Other server configuration...
}

使用 curl 来测试是否已经开启 HTTP/2

Bash
curl -I -s --http2 https://www.chancel.me

如已支持,第一行会返回 HTTP/2 200,如下:

Bash
HTTP/2 200 
server: nginx/1.22.1
date: Mon, 27 May 2024 03:00:20 GMT
content-type: text/html; charset=utf-8
...

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
gravatar
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]