闲着写点简单的分享

启用 HTTP/2 支持

HTTP/2 针对 HTTP/1.x 的优化手段

  1. HTTP/2 是复用了一个 TCP 连接进行多次传输,也就是异步连接复用
  2. HTTP/2 会适度地合并资源文件,也就是头压缩
  3. HTTP/2 的 Server Push 特性允许服务器充分利用带宽,并按一定的优先次序向客户端推送资源,也就是请求反馈管线化
  4. 与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

已有 5 条评论
  1. mrjucn

    军哥的lnmp不知道能不能这么做。你文章中的“其次、升级 Nginx 和 OpenSSL 一起编译,同时也要和 --with-http_v2_module --with-http_ssl_module 两个模块一起编译”这段话不知道怎么去操作,头大。也不知道是lnmp的问题,还是网易蜂巢docker的问题,我觉得应该是我操作不当的问题。

    mrjucn 回复
    1. Chakhsu Lau

      编译Nginx的时候,直接带上 --with-http_v2_module --with-http_ssl_module 这个两个模板一起编译就可以了,然后下面的工作就是配置了。

      Chakhsu Lau 回复
    2. Chakhsu Lau

      你的意思是开启HTTP/2.0吗?
      如果是的话,又同时是用Nginx做服务器,这两个模块都是需要的;
      编译Nginx需要用到OpenSSL,那么我肯定不用系统自带的,系统自带的OpenSSL一般是1.0.1x,要么升级OpenSSL到1.0.2x,要么Nginx编译的时候就直接用OpenSSL1.0.2x源码。

      Chakhsu Lau 回复
      1. mrjucn

        谢谢这么详细的解释,我再研究下。话说用上h2后,你的博客更快了。

        mrjucn 回复
  2. 云计算笔记

    已经上了,用的oneinstack ~ 可以直接上~

    云计算笔记 回复
发表新评论