网站建设

利用HSTS安全协议柔性解决全站HTTPS的兼容性问题

导读:目前,很多站都开始实现HTTPS了,而且其中的大部分强迫症站长还会开启强制HTTPS机制,对于网站的HTTP请求全部301跳转到HTTPS,从而实现全站HTTPS。这明显是一个粗暴的做法,下面张戈博客就分享一下目前正在使用的柔性做法,告别粗暴。 一、HSTS协议 这里我们要借助一个新的安全协议:HSTS HSTS(HTTP Strict Transport Security)国际互联网工程组织IETE正在推行一种新的Web安全协议,作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。 主要目的是为了解决HTTPS网站首次请求时使用的是未加密的HTTP协议,也就说用户一般访问我们的网站都是直接在浏览器输入域名,比如 zhang.ge,然后我们的服务器检测到是HTTP请求,就301跳转到HTTPS页面。那么前半程采用的就是未加密的HTTP请求,同样存在被劫持的可能,那么HTTPS说好的安全性也就大打折扣了! 在我看来,HSTS还有另外一层好处:增强网站的兼容性。 以往分享的全站HTTPS都是采用301强制性跳转,而且还会区分下低版本IE、不支持HTTPS的搜索引擎来忽略301跳转,很明显这样做无法照顾到所有情况。那么如果是用HSTS呢? 采用HSTS后,支持这个协议的浏览器会自动跳转到HTTPS页面,返回码为307: 而不支持HSTS的浏览器访问我们的网站,则不会产生跳转,从而提高了兼容性。这个机制对于不支持HTTPS的搜索引擎来说是非常友好的做法了! 二、开启HSTS 开启HSTS很简单,只要在我们网站的响应头里面新增HSTS即可,下面简单说下 ①、Nginx服务器 只需要在站点server模块内插入如下配置并重启: ②、Apache服务器 Apache如下配置并重启: ③、LigHttpd 将下述配置增加到你的 Lighttpd 配置文件(一般是 /etc/lighttpd/lighttpd.conf)并重启: ④、通用方法 如果你用的虚拟主机,或者不会折腾WEB软件,那么可以采用更简单的通用方法。原理很简单,通过代码来新增响应头即可,这里只分享一下php的做法,其他语言自行参考: 将如下代码插入到网站根目录的index.php即可: 三、相对链接 当然,为了兼容不支持HTTPS的客户端,我们还需要将网站的所有超链接都改成相对模式: 比如,正常的页面链接如下所示: 改成相对模式: 好处就是,不管是HTTP还是HTTPS请求,页面中的地址都是和请求协议保持一致,避免出现页面是HTTP,而页面中的链接却是HTTPS的情况,那么前面的做法也就没了意义。 如何修改为相对模式,估计有同学又玩不转了。万变不离其宗,和以前纯代码启用七牛CDN一样! 直接粗暴替换前台输出的代码即可: 将以上代码新增到 WordPress 主题的functions.php中即可。以上代码只会替换和网站主域名有关系的超链接,八竿子打不着的外部超链接就不管了,有需求自行参考解决。 四、提交HSTS 上文已介绍了HSTS,主要是为了解决HTTP请求301跳转到HTTPS这个过程被劫持问题,而实际上就算加上HSTS响应头,用户请求的前半程依然是HTTP,并没有什么L用。 提出这个协议的砖家们就想出了一个解决办法:将支持HSTS的网站全部加入一个Preload的清单,支持HSTS协议的浏览器请求网站前会查询当前网站是否在清单中,如果是那么直接转换为HTTPS请求!从而解决前半程为HTTP的问题(不专业,但说人话。。。)。 那么,如果我们的网站启用了HSTS,还得将网站提交到这个Preload清单才行了 提交地址:https://hstspreload.appspot.com/  (需要扶墙访问) 提交直到批准,我们的网站必须强制301跳转到HTTPS,否则无法通过,完成审核后再取消301即可。 当然,提交后会显示正在提交到preload list,快的话两三天,慢的话一两个月都是有可能的: 好了,罗里吧嗦分享了一大堆,自行参考吧! 20170205最新补充:经过漫长的等待,偶然查询发现已经是preload状态了,可真不容易:
阅读全文
WEB应用

解决Nginx配置http2不生效,谷歌浏览器仍然采用http1.1协议问题

昨天一个网友通过QQ联系我,说按照我博客之前分享的http2配置教程不能生效,想请我帮忙看看。 经过测试,使用谷歌浏览器访问他的测试站点,确实没有开启http2,但他的配置和编译参数都正确的,这有点奇怪了。 不过昨天太忙就没有继续帮他分析,他只好将服务器账号和密码都留言给了我。今天中午我抽空在他服务器重新编译测试了一把,才发现原来是这么一个梗! 他在编译Nginx之前,使用的是yum安装的openssl,可能是他的yum源太陈旧,或者没配置EPEL导致yum安装的openssl版本过低!而他在编译Nginx的时候并没有使用--with-openssl=DIR的选项来静态编译,所以他编出来的Nginx用的系统低版本的openssl,导致谷歌访问时并不会开启http2! 找了段专业解释如下: Chrome 在最近的更新中放弃了对 NPN 的支持,如果想要继续在 Chrome 上支持 HTTP/2 ,则需要安装最新 1.0.2 版的 OpenSSL,并且用 1.0.2 的 OpenSSL 重新编译 Nginx。 参考资料: 新版Chrome下滚回HTTP/1.1 Supporting HTTP/2 for Google Chrome Users 所以,解决方法就非常简单了,从openssl官网下载最新源码包,然后新增如下参数重新编译即可: --with-openssl=源码包解压目录 比如: 当然,我们也可以先更新yum源,比如改用EPEL源,使用 yum update openssl 升级后重新编译。这里我个人建议使用源码静态编译。 重新编译安装后,再利用谷歌浏览器访问如下网址: 测试他的网站已经成功开启http2了: 事后突然想起,其实自己之前折腾网站的时候其实遇到过同样的问题,就因为没有记录导致重复造轮子。所以这次记录分享一下,权当是备忘吧!
阅读全文
网站建设

百度嵌入式站内搜索https化实践分享

百度站内嵌入式搜索,相信很多网站都已经用了有一段时间了。可惜在百度自己大力提倡网站https化的同时,百度的周边产品却自己打脸了,完全跟不上进度。 不得不说,百度这个嵌入式站内搜索给了网站更多的DIY遐想,让搜索更加贴合各种主题,原汁原味: Ps:预览地址:https://zhang.ge/search.html ,怎么制作这里就不赘述了,请参考本站历史教程。 这玩意好是好,但是不支持https!不过,我们可以有多种办法来变相实现。比如,利用七牛将百度分享https化、利用七牛将百度打赏https化,貌似七牛无所不能哦? 这里,当然也是可以利用七牛来解决问题,但是我并不想“邯郸学步”,所以这里打算用Nginx来实现。 一、改造原理 Ps:只求结果,不求过程的朋友请忽略此段啰嗦内容! 由于百度站内嵌入式搜索不支持https,那么就算把主js(iframe.js)本地化或者七牛化,也只是这一个文件实现了https!从这个js加载出来的图片等各种资源却还是调用的百度的http资源!因此,我们得分析这个js会调用的资源,然后全部https化。 百度嵌入式搜索其实就一个主js:http://zhannei.baidu.com/static/js/iframe.js,我们把它下载到本地,然后将其中的百度静态域名全部清空,只保留相对路径。比如:http://zhannei.baidu.com/customer_search/***,我们需要删除协议和域名部分,改成 /customer_search/*** 这种相对路径,这样我们才可以实现 Nginx 反代,七牛也是一样原理。 可能,光从肉眼去看js具体调用了哪些静态资源是比较困难苦逼的,这是我们可以将js上传到本地,然后将百度嵌入式代码改成本地js,刷新前台的时候就可以在F12控制台去看某某资源因为不是https被拦截了,这样就知道哪些资源还需要继续改造了! 二、改造代码 既然分享,说明第一步的苦逼工作也已经做过了,直接分享代码: 将以上代码保存为js文件,比如 baidusearch.js ,然后上传到服务器网站目录,(推荐放于主题下,比如:/wp-content/themes/begin/js/baidusearch.js) 然后,将百度站内嵌入式搜索代码中的iframe.js地址替换为以上js地址,到此完成网站代码部分改造: Ps:更多内容,请参考本站历史教程吧 三、反向代理 第二步还只是将相关资源全部指向了本地,所以下面需要改造Nginx,将这些指向全部反代到百度站内搜索,修改很简单,将以下Nginx代码添加到网站Nginx配置的 location / { 之前: 如果,Nginx集成了ngx_cache_purge 缓存模块,那么可以将上述代码中的缓存规则打开,避免每次搜索还要到百度去请求资源【相关教程】! 规则添加后,重启或重载Nginx即可生效。这时候,https前台就能正常使用百度嵌入式站内搜索了! 四、更多花絮 https实现了,但是还是有些瑕疵,那就是搜索结果中缩略图默认使用https协议,可能会被浏览器拦截。在张戈博客应用这个改造后,发现大部分缩略图居然返回403禁止了,仔细看了下,大部分如下形式: http://i8.baidu.com/it/u=1582249672,3936911246&fm=85&s=6BAAA3475C1300C649B5710B0100E09 看来是百度站内搜索zhannei.baidu.com开启了防盗链机制,自己不支持https,还不让别人改造么?于是直接给站内搜索管理员发了一份邮件: 目前,站内搜索确实取消防盗链了,虽然管理员牛逼哄哄的也没回我邮件。。。 虽然不再禁止访问了,但里面的图片依然是http协议的,严格的浏览器还是会禁止加载,不过对于完全不能用来说,这个瑕疵还算可以忍受!
阅读全文
网站建设

全站启用SSL之后,如何兼容不支持https抓取的搜索引擎?

还是在今年5月份,百度就跳出来,宣布成为国内首个支持https的搜索引擎,结果呢?呵呵... 一、案例 ①、抓取诊断 全站开启并强制https之后,在百度站长平台使用抓取诊断发现,其实百度并不会识别强制跳转的301状态,至少不会友好的反馈给用户: 抓取并没有出现跳转提示: 其实,后台日志显示是正常的301跳转: ②、真是打脸 2017年05月25日更新:偶尔进入站长平台看了一把,居然给我博客自动做了https认证,然后去百度搜索site了一把我的网站,基本已全部换成了https,看来百度对https的收录已全面展开! 百度发公告说,已全面支持https,并推荐各个网站开启https,得到优先展示,结果呢? 我们先百度site一下www.baidu.com,然后复制收录里面的链接: http://www.baidu.com/link?url=f3Fbk5cL6W_Hz0jtf6JY991vn1teNTzZ1WBHaqnOmCO&wd=&eqid=aab2bf1f0009872d000000055687e679 然后用网页内容抓取工具看下百度收录自己的是什么: 真是呵呵了,自己收录自己的也是http,说好的https呢?你5月份就发公告支持了,这大半年了自己对自己的收录都没更新过来,何况其他网站?? 其实,要看百度对自己的收录是否是https还有一种更简单的方法:直接在百度搜索https://www.baidu.com即可: 再次呵呵下。。。 ③、配套设施缺憾 百度搜索确实是全站启用了https,可你的配套设施呢??搞了半天,也就是百度搜索支持了https,百度的其他产品几乎都不支持! 比如,做网站喜欢用到的百度分享,不支持https,还得自行处理【相关文章】; 比如,大部分网站的经济来源,百度广告不支持https,搞个蛋哟; 还好,百度统计还能凑合用下,不是那么一无是处。。。 二、正能量 国内各个搜索引擎都看了下,结果意外的发现搜狗居然已经正常收录我博客的https了: 其他基本都未收录,而国外的几个搜索引擎基本不用看,换https数日之后就全局替换成https收录了,而且目测给了更好的排名,比如谷歌、必应等。 百度一直以来都是蜗牛般的反应,真不知是技术不行还是故意设置的?百度的索引服务器再多能多过谷歌?全局刷新一下感觉如登天一般麻烦! 三、解决 吐槽了那么多,还是来说说如何缓解一下各种不支持的窘迫吧! 支持https的有:谷歌、必应、搜狗、百度(持怀疑态度)以及用户 不支持的有:    360、神马(宜搜)以及百度(有待验证)等 那我们全站强制https就行不通了,必须对这些来路做规则判断,然后针对性的跳转或不跳转才行。 只分享下Nginx的做法,其他就自行参考研究吧! ①、http和https不在同一个server模块的做法: Ps:分别监听80和443端口是大部分网站的做法。 在监听80的server模块中添加如下规则: ②、http和https在同一个server模块的做法(注意修改实际域名): 最后,重载或重启nginx即可生效。 简单解释下:若不是百度、360或神马蜘蛛进行的http协议请求,将全部跳转到https。即强制https对360、百度、神马开了白名单模式,不强制跳转。规则是通用的,你可以把第一条规则中的UA标识换成任意不想强制跳转的请求源。 时间有限,就分享这么多了,希望各大搜索引擎尽快兼容https,希望百度搜索的联动反应能快点,而且不行就别再打肿脸充胖子,要对得起国内搜索第一的地位! 2016/01/05 内容补充:早上看到了WP酷的分享,才拍脑袋想起还有XP系统不支持SNI,导致网页无法打开,所以上述新增的规则可以改成如下代码: 场景①适用: 场景②适用: 2016/01/09 内容补充:突然想到,既然要兼容那些不支持的请求者,那么当请求到https时,是不是应该跳回http呢? 比如,使用XP系统访问到了http,我们可以不跳转到https,但我们全站都是改造成https的,所以页面内的链接都是https的,那他进一步还是不能访问! 所以,继续加规则,如果是特殊用户,则强制http访问: ①、http和https不在同一个server模块的做法: Ps:分别监听80和443端口是大部分网站的做法。 在监听80的server模块中添加如下规则: ②、http和https在同一个server模块的做法(注意修改实际域名): 最后,重载或重启nginx即可生效。
阅读全文
网站建设

分享一个支持https的CDN及启用SSL后续问题汇总

之前张戈博客全站启用了https,并分享了相关经验心得。用了一段时间,问题还是不少,所以继续整上一篇文章,汇总一下网站启用https之后出现的问题以及解决办法。 在分享这些问题之前,我先分享一个国内支持https的CDN,让个人博客也能无忧启用https,而不暴露真实IP。 我现在用的是腾讯云内测的支持https的CDN,其他人也就暂时用不了。本以为国内基本就没有其他支持https的CDN了,结果晓庄等几个博主留言分享了一个支持https的CDN——VeryCloud。 周末抽空了解并试用了下,发现真不错!而且还有每月免费50G的额度,一般个人博客基本够用了。 一、云端CDN ①、注册开通 首先,我们在VeryCloud注册帐号并开通云分发:https://www.verycloud.cn/ ②、添加证书 我们是冲着https去的,所以第一件事我们先要申请一个免费的SSL证书!当然,张戈博客之前也分享过沃通的免费证书申请地址,所以有需要的朋友先前往申请下: 分享一个免费SSL证书申请网站,给网站开启https协议 Ps:沃通免费证书最近又开放了2年多域名版本,申请时建议把主域名二级域名啥的一并申请到一个证书里(一次最多6个,含www主域)。 现在沃通申请证书基本可以站立得,所以我们可以立马下载到证书包。 解压,取得其中for Nginx的证书,然后在云分发控制台的【证书管理】中新建证书: 如图,输入一个自定义能识别的名称,然后依次上传crt和key文件,并确定即可!CA机构证书的话,免费证书是没有了,至少沃通免费证书绝没有。。。所以忽略吧! ③、添加网站 注册并登陆VeryCloud云端网络之后,启用云分发,并前往云分发控制台的频道管理界面添加新域名 因为我们的目的是要在开启https之后保护IP不泄露,所以我们必须把所有要展示的域名都加进去,比如博客主域名: 如图,基本只要按中文提示填写即可,其中如果源站没有开启强制https那么可以填写80,而源站要是开启了http强制跳转https的话,那就必须填写443端口,否则CDN会经常异常! 我博客主域名开启了强制https,所以我填写了443端口,二级静态域名没有开启,所以我填写80,区别是填写80能略微降低CDN抓取源站造成的压力。毕竟http还是比https略微费服务器一点! 下面的探测URL就随便填写一个网站存在的地址吧,比如我填写的是ico图标地址。 继续下一步,是设置缓存: 这个可以参考一下张戈博客之前的文章: 如何正确配置CDN高速缓存,避免越用越慢的尴尬 特别注意的是,其中有个静态页面,指的是html、htm和shtml这类页面,一般博客都做了伪静态,所以如果不需要缓存html伪静态页面,请使用自定义或遵循源站,自定义则需要去掉html等后缀。 再下一步则是最关键的https设置了! 备份源站一般博客应该没有,直接忽略,勾选启用SSL加速,开启https: 接下来的回源方式就和前文提到的80和443的选择异曲同工了,还是一样的道理,如果源站有强制https,那么就必须选择HTTPS协议回源才行! 强制https访问,这是腾讯云CDN都没有的功能,云端提供了!本来我还更高兴的!结果发现这个强制https跳转居然是返回302状态,感觉不是很符合百度推荐的301永久跳转,我个人最后是在源站设置了301跳转。 SSL证书这一项就是选择我们前面新建的那个SSL证书了,无需赘述。 再往后,基本就不用多说了,自己折腾吧! 二、经验分享 国内免费CDN一般都限制在每月50GB流量,一般博客是够用了。但是发展到一定阶段,50G流量肯定是不够的,比如张戈博客一个月至少上100G的CDN流量,几十块的预算还是要的。 那有没有办法节省一点呢? 这里分享的方法,只适合有多个CDN服务的朋友。比如,张戈博客同时在用腾讯云CDN和云端CDN,我将电信线路解析到了腾讯云CDN,而将默认线路给了云端CDN。 因为腾讯云CDN目前我还有个100G的流量包,先用完再说。 简单来说,就是使用线路分摊的办法来解决这50G不够用的尴尬。当然,如果你只是看到了这篇文章介绍的云端CDN,那就只能等以后慢慢发掘了。。。 三、问题汇总 博客开启https这段时间,着实遇到不少问题,所以下面简单分享一些经验技巧。 ①、支持https的视频 我博客之前是有一些在线MV的,开启https之后全部都废了,原因大家也都清楚,https里面的http资源会被浏览器拦截,所以必须要使用https的视频地址才行! 本来我也就懒得维护那些在线MV了,不过偶然在腾讯内部博客平台看到有人问到了腾讯视频是否支持https,正好有相关产品经理回答了这个问题,也给出了解决方法。 很简单,先找到腾讯视频的ID: 然后使用如下地址即可实现https访问视频了: https://v.qq.com/iframe/player.html?vid=f0019nr9cdd ②、百度提交https 百度在提倡https之后,站长平台已经支持提交https站点了! 进入百度站长平台,然后删除之前的域名,再添加该域名的https站点即可: Ps:不过坑的是,站长平台貌似对https支持不太友好,改成 https之后各种数据都停滞不动了。。 ③、微信公众号 微信公众号暂时不支持https,而源站又全站强制开启了https,所以导致公众号也无法提供自动回复功能了!解决办法也很简单: 方法 I:新增一个域名,使用http即可,root路径和主域名一致即可; 方法II:针对POST方法,取消强制https规则即可 Nginx可以这样配置: 将之前强制https跳转规则改成如下即可: ④、CDN公共库 支持https的CDN都有免费额度限制,所以能托管到第三方的尽量托管,能省则省。 比如,我博客用的是1.8.2版本的JQery,以下则是我搜集的一些支持https的JQ公共库地址: 新浪云:https://lib.sinaapp.com/js/jquery/1.8.2/jquery.min.js  (速度不错,博客在用) 百度扒来的:https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/js/lib/jquery-1.10.2_d88366fd.js 貌似是ASP官方的:https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.2.min.js JQ官方的:https://code.jquery.com/jquery-1.8.2.min.js 下面的同样支持https,非常不错: Bootstrap官方CDN公共库:http://www.bootcdn.cn/ 又拍云CDN公共库:http://jscdn.upai.com/ ⑤、http被缓存 这个问题是我在用腾讯CDN的时候出现的,原因是因为腾讯云CDN不支持设置强制https跳转,而且还会缓存http站点,导致访问博客http地址也不会遵循源站的强制https跳转了! 要彻底解决这个问题只能等更新CDN机制了。当然, 如果设置CDN不缓存应该也是可以的。 我们暂时可以利用JS来解决这个问题,将如下js代码加入到header即可: 好了,以上就是本文分享的所有内容,希望对各位有所帮助!
阅读全文
WEB应用

升级Nginx1.9.5以上版本,开启博客网站http2.0时代

最近给张戈博客全站开启了https,所以对这块关注比较多。昨天脑补的时候发现http2.0只支持SSL加密的网站,即https。于是心血来潮,给张戈博客开启了http 2.0,尝尝鲜。 查了下资料,发现Nginx不久前发布的 1.9.5版本支持http2.0,而1.8.x时代只是对SPDY进行了支持。一直用的1.62稳定版,此次为了测试http2.0,直接进行了版本跳跃,升级到了1.9.5版本,下面简单的分享下部署分解。 Ps:特别说明的是,http2.0只支持开启了https的网站,所以没开启https的网站就只能看看了! 一、编译Nginx 编译Nginx是我博客老生常谈的问题,之前都不想赘述的内容,这次还是耐着性子说一下在已有Nginx的服务器上重新编译一个Nginx的做法。 ①、下载Nginx最新版 目前Nginx最新版是今年11月份发布的 1.9.7 版本,反正1.9+是没有稳定版,所以干脆弄个最新版: 话说1.9+版本还支持TCP负载均衡呢,感兴趣的可以看下张戈博客之前的分享: Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块 ②、编译Nginx 在已有环境下编译Nginx,一般做法是先取得目前运行的Nginx的运行参数,然后在这个参数的基础上加上本次编译想新增的参数即可。所以,我们先执行 nginx -V 查看它的编译参数是什么: 可以看到张戈博客目前用的是1.6.2版本,当然也是淘宝定制过的Tengine。 如果你发现参数里面也存在 --add-module=../xxx 这种使用相对路径的参数,就得注意了。你重新编译的时候得保证新的Nginx编译文件夹的相对路径存在对应的模块,否则请重新指定一个正确的路径,比如上面代码中出现的 ngx_cache_purge-2.3,否则会提示找不到路径啦! 既然知道了老的Nginx的编译参数,那么直接按照下面操作,解压、编译、平滑升级搞定Nginx1.9x: 二、配置http2.0 配置Nginx开启http 2.0特别简单,只要在Nginx配置文件中找到你要开启http2.0的域名server模块,然后将 listen 443 ssl;改成 listen 443 ssl http2; 即可。 比如,张戈博客之前的Server模块配置如下: 直接改成: Tips:开启http2.0后,谷歌浏览器无法访问,显示如下信息? 无法显示此网页 ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY 网址为 https://zhang.ge/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。 吐下苦水,张戈博客配置好http2.0之后,得知谷歌浏览器支持http2.0,于是访问看了下,居然提示以上错误!关掉http2之后,又正常了!!搜遍了都没找到为什么!最终,鬼使神差的把SSL额外配置全部屏蔽,只剩下指定证书和key部分,发现居然好了? 后来发现Nginx官方给出的SSL中都用到了 TLSv1.2,而我的配置还停留在TLSV1! 保存配置文件之后,重启或重载Nginx即可生效:/usr/local/nginx/sbin/nginx -s reload 三、测试http2.0 配是配好了,到底有没有生效呢?还需要测试下才行。 ①、在线测试 直接访问 https://spdycheck.org/#你的域名 即可测试是否成功开启 http2.0: 比如访问:https://spdycheck.org/#zhang.ge,可以看到如下信息: 发现居然是SPDY有木有?想了半天为什么,才想起来我用了腾讯云的CDN,这个SPDY肯定是腾讯云CDN为了优化https启用的!跟上文的操作没有半毛钱关系!所以,目前张戈博客虽然开启了http2.0,但是走了CDN之后,就只有SPDY了,本次权当测试。。。 于是,试着搜了下http2 check,没想到还真有!不过可惜功能不可用,测任何网站都是失败: https://www.h2check.org/ ②、浏览器测试 看来要得到确切的结果,还得借助谷歌、火狐等浏览器了。 打开谷歌浏览器,先访问一下你的网站,比如访问下张戈博客 然后,在谷歌浏览器地址栏输入 chrome://net-internals/#http2 并回车,列表里面即为已支持http2.0的域名: 没错,开启成功! 进一步看一下Nginx日志,可以很明显的发现刚刚的访问是走的http2.0协议: 四、简单总结 上文仅仅是简单配置,http2.0其实还有其他几个优化参数,感兴趣的朋友可以前往Nginx官方文档查看:http://nginx.org/en/docs/http/ngx_http_v2_module.html http2.0是下一代http协议,现在还没普及,而且大部分浏览器都不支持使用http2.0访问。只有少数浏览器,比如谷歌、火狐,貌似IE10也在蠢蠢欲动,具体行不行有待测试。所以,测试这个功能也只是抱着尝鲜和学习的目的。 对http2.0感兴趣,并希望了解http2.0优点特性的朋友,可以看下开源中国对http2.0的详细介绍。当然,网上还有很多对HTTP1.0、SPDY及HTTP2.0详细测试对比的技术文章,都可以很明显看出http2.0绝对是以后互联网的主流趋势! 开启http2.0的前提是你的网站已经支持了https,所以开启https是第一步! 以下是相关文章: 借助腾讯云CDN开启全站https及问题解决分享 分享一个免费SSL证书申请网站,给网站开启https协议 Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程 不长不短,又是一篇折腾分享,希望你能用得上~
阅读全文