针对HTTP/1.x的优化
- HTTP/2 是复用了一个 TCP 连接进行多次传输,也就是异步连接复用
- HTTP/2 会适度地合并资源文件,也就是头压缩
- HTTP/2 的 Server Push 特性允许服务器充分利用带宽,并按一定的优先次序向客户端推送资源,也就是请求反馈管线化
- 与HTTP 1.1的完全语义兼容···
启用HTTP/2的条件
- 基于 TLS 部署,也就是要需要先配置 HTTPS ,因为 Chrome 和 Firefox 这两大浏览器均表示只支持 HTTP/2 Over TLS
- HTTP服务器需要支持,也就是需要升级较新的版本,例如Nginx需要升级到1.9.7以上
HTTP/2的支持情况
目前支持 HTTP/2 的浏览器有 Chrome 41+、Firefox 36+、Safari 9+、Windows 10 上的 IE 11 和 Edge
配置HTTP/2
启用 HTTP/2 之前需要配置HTTPS,这里只简单复述一些需要做什么工作
首先、升级 OpenSSL
其次、升级 Nginx 和 OpenSSL 一起编译,同时也要和 --with-http_v2_module
--with-http_ssl_module
两个模块一起编译
然后、配置 Nginx 的站点的配置文件
server {
listen 443 ssl http2 default_server;
ssl_certificate server.crt;
ssl_certificate_key server.key;
...
}
最后重启,检查是否正确开启···
一些配置教程
这里再列出以前写过的文章帮助配置,
Let's Encrypt的证书签发与配置
https://www.linpx.com/p/lets-encrypt-certificate-and-configuration.html
用ECC算法签发证书请求文件CSR
https://www.linpx.com/p/ecc-algorithm-is-used-to-issue-the-certificate-request-file-csr.html
串联证书链和配置Nginx开启SSL
https://www.linpx.com/p/the-series-of-certificate-chain-and-configure-nginx-to-open-ssl.html
Nginx的SSL配置优化
https://www.linpx.com/p/ssl-configuration-optimization.html
启用HSTS和申请HSTS Preload List
https://www.linpx.com/p/hsts-and-hsts-preload-list-enabled-applications.html
OpenSSL的ChaCha20-Poly1305密码套件
https://www.linpx.com/p/the-openssl-chacha20poly1305-cipher-suite.html
给Nginx上ChaCha20-Poly1305加密套件
https://www.linpx.com/p/nginx-chacha20poly1305-encryption-suite.html
我对HSTS的一些小了解
https://www.linpx.com/p/i-know-little-about-hsts.html
启用 Certificate Transparency 策略
https://www.linpx.com/p/https-certificate-to-enable-transparency-certificate-policy.html
OCSP Stapling的一些小实践
https://www.linpx.com/p/some-small-practice-of-stapling-ocsp.html
本文由 Chakhsu Lau 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
军哥的lnmp不知道能不能这么做。你文章中的“其次、升级 Nginx 和 OpenSSL 一起编译,同时也要和 --with-http_v2_module --with-http_ssl_module 两个模块一起编译”这段话不知道怎么去操作,头大。也不知道是lnmp的问题,还是网易蜂巢docker的问题,我觉得应该是我操作不当的问题。
编译Nginx的时候,直接带上 --with-http_v2_module --with-http_ssl_module 这个两个模板一起编译就可以了,然后下面的工作就是配置了。
你的意思是开启HTTP/2.0吗?
如果是的话,又同时是用Nginx做服务器,这两个模块都是需要的;
编译Nginx需要用到OpenSSL,那么我肯定不用系统自带的,系统自带的OpenSSL一般是1.0.1x,要么升级OpenSSL到1.0.2x,要么Nginx编译的时候就直接用OpenSSL1.0.2x源码。
谢谢这么详细的解释,我再研究下。话说用上h2后,你的博客更快了。
已经上了,用的oneinstack ~ 可以直接上~