升级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的网站就只能看看了!

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

一、编译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://zhangge.net/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。

吐下苦水,张戈博客配置好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/#zhangge.net,可以看到如下信息:

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

发现居然是SPDY有木有?想了半天为什么,才想起来我用了腾讯云的CDN,这个SPDY肯定是腾讯云CDN为了优化https启用的!跟上文的操作没有半毛钱关系!所以,目前张戈博客虽然开启了http2.0,但是走了CDN之后,就只有SPDY了,本次权当测试。。。

于是,试着搜了下http2 check,没想到还真有!不过可惜功能不可用,测任何网站都是失败:

https://www.h2check.org/

②、浏览器测试

看来要得到确切的结果,还得借助谷歌、火狐等浏览器了。

打开谷歌浏览器,先访问一下你的网站,比如访问下张戈博客

然后,在谷歌浏览器地址栏输入 chrome://net-internals/#http2 并回车,列表里面即为已支持http2.0的域名:

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

没错,开启成功!

进一步看一下Nginx日志,可以很明显的发现刚刚的访问是走的http2.0协议:

升级Nginx1.9.5以上版本,开启博客网站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访问教程

不长不短,又是一篇折腾分享,希望你能用得上~

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:18   其中:访客  16   博主  2

  1. 易资讯网 1 来自天朝的朋友 谷歌浏览器 Windows 10 浙江省温州市 电信

    等百度分享支持https再弄。。。

    • CC 3 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省金华市 电信

      那不是一天,二天的事情,还是把百度分享放在本地调用吧。

  2. aunsen 4 来自天朝的朋友 火狐浏览器 Windows 10 陕西省安康市紫阳县 联通

    VPS真是折腾人啊 :evil:

    • linuxdashen.com 1 来自天朝的朋友 谷歌浏览器 Linux 广东省深圳市 电信

      不是VPS折腾人,而是博主废话一大堆,看得好累.

      • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

        博客文章大部分并非技术教程,觉得啰嗦的话去看WIKI就好。

  3. 好书网 4 来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市 电信

    过来看看

  4. 黑苹果乐园 3 来自天朝的朋友 谷歌浏览器 Mac OS X 10_11_1 亚太地区

    就是不知道2.0有啥用处呢,搜了一下看看只对加密网址有用处?

  5. 郑州众源 0 来自天朝的朋友 谷歌浏览器 Windows 7 河南省郑州市 联通

    第一次来博主的博客,看着不错

  6. 物联网说 2 来自天朝的朋友 谷歌浏览器 Windows 10 天津市 电信

    过了今晚博主的博客就2周岁了,过几天打算也用鸟哥的主题建个站点,祝博主越做越好 :mrgreen:

  7. 男生女生银版 4 来自天朝的朋友 搜狗浏览器 Windows 7 广东省广州市 电信

    http/2不知道提速效果如何,但是http/2只在自己的服务器配置下有效,而又不能直接暴露IP,只能使用CDN隐藏IP了,又回到spdy了。
    实际使用上,用CDN加速的效果比直接解析主机开http/2好。。只能自己用着爽下了。

  8. god 4 来自天朝的朋友 谷歌浏览器 Windows 7 陕西省西安市 电信

    你现在这个天津的ip是腾讯的CDN吗

  9. 地库 0 来自天朝的朋友 Safari浏览器 iPhone iPhone OS 9_2 like Mac OS X) AppleWebKit 浙江省 电信

    基本还是在用iis搭建,技术这块还是小白

  10. 小超 4 来自天朝的朋友 谷歌浏览器 Windows 7 海南省 电信

    感觉不像是TLSv1.2影响的,我测试的时候,把TLSv1.2删除了,但是还是不行,后来删除了,后面几行SLL才打开的,纠结

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      还真是代码问题,从网页编辑器贴过去之后带上了html标签了:
      第7行应该是:
      ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
      文章已修正,注意代码中这种标签都是不需要的。。

  11. 大城小我 4 来自天朝的朋友 谷歌浏览器 Windows 8.1 广东省深圳市 电信

    自从网站更换php后,爽就一个字

  12. junze 2 来自天朝的朋友 谷歌浏览器 Mac OS X 10_10_4 北京市朝阳区 铜牛国贸CBD数据机房(光华路15号院2号楼铜牛国际大厦B1)

    我的博客 刚刚也升级到了HTTP/2 域名www.wujunze.com

  13. 夏侯 0 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 电信通酒仙桥数据中心

    博主为啥不用https了啊?

  14. 采觅随记 4 来自天朝的朋友 火狐浏览器 Windows 10 浙江省宁波市 移动

    话说我查阅nginx配置文件的时候,发现“gzip_http_version 1.1”,那启用HTTP2.0的话,是不是要把“1.1”改成“2”,还是说不影响不需要改?!
    求解惑 :oops:

加载中,请稍候...