nginx(七十八)nginx配置http2

一  ngx_http_v2模块

1、本文不讲解'HTTP2'的知识

2、只讲解nginx中如何'配置'HTTP2

①  前置条件

1、openssl的版本必须在'1.0.2e+'及以上

2、开启'https加密',目前http2.0只支持'开启了https'的网站

编译选项:--with-http_ssl_module  --with-http_v2_module  

特点:因为HTTP2.0采用HTTPS,HTTPS基于'SSL/TLS'的

3、nginx版本必须在'1.9.5+'以上,用 http_v2_module 模块'替换'了 ngx_http_spdy_module

nginx(七十八)nginx配置http2_第1张图片

http2.0支持的加密套件 

HTTP/2协议'使用TLS 1.2+'版本作为'安全'加密层

②  http2

注意: nginx'1.25.1'才支持'http2'独立配置,此时'不是'端口级别

nginx(七十八)nginx配置http2_第2张图片

③  listen的http2参数

1、listen的'http2参数'是'端口'级别

2、常见'案例'

  listen 80 http2;      --> 该端口'只支持http2','不向下'兼容

  listen 443 ssl http2  --> 该listen 也'兼容http1.1',注意'ssl'和'http2'的顺序

3、nginx '1.25.1'之'前'的版本'只能'通过listen配置'http2'参数,'端口'级别

nginx(七十八)nginx配置http2_第3张图片

http2参数端口级别    nginx 不能按照虚拟主机来启用HTTP2:报错

④  $http2

如何在nginx中获取http2的header

⑤  为什么浏览器知道需要使用 h2 协议来请求呢

nginx(七十八)nginx配置http2_第4张图片

⑥  nginx如何配置http2

说明: 省略'编译'过程

./configure  --with-http_v2_module  --with-http_ssl_module 

注意: 最好'保留'原来'nginx -V'的编译参数

nginx -V  --> 可以确定'版本'和安装了'某个'模块

nginx编译安装http2 

1、nginx'配置'

补充: add_header X-Protocol '$http2 $ssl_cipher $ssl_protocol';

nginx(七十八)nginx配置http2_第5张图片  

2、'报文'分析

nginx(七十八)nginx配置http2_第6张图片

HTTP2中的HTTP语义 

⑦  补充

1、nginx作为'反向代理'不支持http2

2、nginx作为服务端如果'不支持http2',协议降级为'http1.1'

3、http2'会'让响应头'小写'

4、HTTP/2 请求的客户端应该使用 ':authority'伪字段而'不是Host字段'

​5、关注curl和浏览器'版本'对'http2'的支持

HTTP/2约束Header大小写    浏览器看是否支持http2

ngx.header.content_length = nil

RFC文档http2参考  nginx如何支持HTTP/2协议

proxy_ssl_server_name on 最'关键'的

也就是把主机名字传递给后端服务器,让对方服务器在'TLS握手'层面就可以收到host,便于打到具体的主机

你可能感兴趣的:(nginx,nginx,http2)