• 让创新无法想象。咨询热线:022-60709568
  • 关注我们

Nginx 上配置 HTTP2

阅读:446 2019-03-19 14:43:47 来源:新网

从2015年5月14日http/2协议正式版的发布到现在已经快有一年了,越来越多的网站部署了http2,http2的广泛应用带来了更好的浏览体验,只要是modern浏览器都支持,所以部署http2并不会带来太多困扰。

虽然h2有h2c(http/2cleartext)可以通过非加密通道传输,但是支持的浏览器初期还是比较少的,所以目前部署h2还是需要走加密的,不过由于let’sencrypt大力推行免费证书和证书的廉价化,部署h2的成本并不高。

http2.0即超文本传输协议2.0,是下一代http协议。是由互联网工程任务组(ietf)的hypertexttransferprotocolbis(httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。

http/2协议是从spdy演变而来,spdy已经完成了使命并很快就会退出历史舞台(例如chrome将在「2016年初结束对spdy的支持」;nginx、apache也已经全面支持http/2,并也不再支持spdy)。

一般的大家把http2简称为h2,尽管有些朋友可能不怎么愿意,但是这个简称已经默认化了,特别是体现在浏览器对http2都是这个简写的。

普通的https网站浏览会比http网站稍微慢一些,因为需要处理加密任务,而配置了h2的https,在低延时的情况下速度会比http更快更稳定!

现在电信劫持事件频发,网站部署了https加密后可以杜绝大部分劫持,但不是完全。像电子商务行业对https加密可是标配啊,因此部署h2更是势在必行。

这里是免费和便宜ssl证书介绍,大家可以从这里购买或者申请免费的ssl证书,免得chrome弹出红色的页面令人不悦,从而拒绝了大多数访客。

默认编译的nginx并不包含h2模块,我们需要加入参数来编译,**截止发文**,nginx1.9开发版及以上版本源码需要自己加入编译参数,从软件源仓库下载的则默认编译。tengine可以同时部署h2和spdy保证兼容性,nginx则是一刀切不再支持spdy。

如果你编译的nginx不支持,那么在./configure中加入:--with-http_v2_module,如果没有ssl支持,还需要加入--with-http_ssl_module

然后make&&makeinstall即可。

主要是配置nginx的server块,。修改相关虚拟机的.conf文件,一般在/usr/local/nginx/conf/vhost/或者/etc/nginx/conf/,具体参考你的环境指导,不懂请回复。

server{listen443sslhttp2default_server;server_namewww.mf8.biz;ssl_certificate/path/to/public.crt;ssl_certificate_key/path/to/private.key;

注:将server_namewww.mf8.biz;中的www.mf8.biz替换为你的域名

然后通过/usr/local/nginx/sbin/nginx-t或者nginx-t来检测是否配置正确,然后重启nginx,即可。

在chrome浏览器上可以通过,http/2andspdyindicator来检验,如果地址栏出现蓝色的闪电就是h2

也可以在chrome://net-internals/#http2中检查。注意版本要新,姿势要帅!

大家都知道去年的心血漏洞将ssl推到了风口浪尖,所以单单支持了h2,我们任然需要对ssl做一些安全的优化!

配置赫尔曼密钥

openssldhparam-outdhparam.pem2048//在ssh运行,openssl生成2048位的密钥而不是当作参数写入nginx.conf文件。ssl_dhparam/path/to/dhparam.pem;//在.conf中配置

禁止不安全的ssl协议,使用安全协议

ssl_protocolstlsv1tlsv1.1tlsv1.2;

禁止已经不安全的加密算法

ssl_ciphers'ecdhe-rsa-aes256-gcm-sha384:ecdhe-rsa-aes128-gcm-sha256:dhe-rsa-aes256-gcm-sha384:dhe-rsa-aes128-gcm-sha256:ecdhe-rsa-aes256-sha384:ecdhe-rsa-aes128-sha256:ecdhe-rsa-aes256-sha:ecdhe-rsa-aes128-sha:dhe-rsa-aes256-sha256:dhe-rsa-aes128-sha256:dhe-rsa-aes256-sha:dhe-rsa-aes128-sha:ecdhe-rsa-des-cbc3-sha:edh-rsa-des-cbc3-sha:aes256-gcm-sha384:aes128-gcm-sha256:aes256-sha256:aes128-sha256:aes256-sha:aes128-sha:des-cbc3-sha:high:!anull:!enull:!export:!camellia:!des:!md5:!psk:!rc4';

缓解beast攻击

ssl_prefer_server_cipherson;```**启用hsts**此举直接跳过301跳转,还降低了中间人攻击的风险!配置在.conf中即可`add_headerstrict-transport-securitymax-age=15768000;`**301跳转**80端口跳转到443端口```nginxserver{listen80;add_headerstrict-transport-securitymax-age=15768000;return301https://www.yourwebsite.com$request_uri;}

缓存连接凭据

ssl_session_cacheshared:ssl:20m;ssl_session_timeout60m;

ocsp缝合

ssl_staplingon;ssl_stapling_verifyon;ssl_trusted_certificate/etc/nginx/cert/trustchain.crt;resolver233.5.5.5233.6.6.6valid=300s;

推荐商标

WHAT KUMO

30类

WHAT KUMO

35类

张武侠

30类

张武侠

43类

牧农欢

35类

牧农欢

30类

牧农欢

29类

乡臻珍

35类

分享