服务器启用 HTTP/2 啦

HTTP/2 是 HTTP 协议的最新版本(取代了陈旧的 HTTP/1.1 和非标准的 SPDY),相比之下有更好的性能。在 2016 年 6 月发布的 RHSCL 2.2 中包括了 httpd 2.4.18。这个版本的 httpd 终于为 CentOS 6 带来了 HTTP/2 支持。启用 HTTP/2 支持很简单,服务器上安装好 httpd 2.4.18 后,只要在 httpd.conf 中加入 Protocols h2 http/1.1 即可。如果想用 Firefox 浏览器检测 HTTP/2 是否开启,只需安装 HTTP/2 and SPDY indicator 这个插件,然后访问网站,并查看地址栏右侧是否有蓝色闪电图标出现,如果有,就说明浏览器正在使用 HTTP/2 与服务器通信啦!

p.s. 即将发布的 RHSCL 2.3 中会有 PHP 7.0 哦!

== UPDATE ==
好像 HTTP/2 会导致一些莫名其妙的问题,暂时关了。。。

发表在 计算机技术 | 2条评论

我的二十岁生日

今天是 2016 年 2 月 24 日;
十九年前的 1996 年 2 月 24 日是我出生的日子。
过了今天,我就从“十几岁”跨入了“二十几岁”啦。

再见,十几岁的我;
你好,二十几岁的我。

12

发表在 生活 | 一条评论

服务器正式启用 HTTPS 啦

经过几天的修改与测试,现在本站正式启用 HTTPS 啦,但是由于 Apache 的版本原因,还没有启用性能更高的 SPDY 或 HTTP/2,但是,服务器配置由 Apache Prefork MPM + mod_php 的架构改进为 Apache Event MPM + mod_proxy_fcgi + PHP-FPM。更新后的架构服务器响应速度会更快一些,占用内存也更少一些。
迁移最麻烦的就是更改指向 HTTP 的链接了。在火狐浏览器中,如果 HTTPS 网页引用了 HTTP 的“混合被动/显示内容”(如图片、音乐、视频等),虽然内容可以被正常加载,但是地址栏中显示“锁”的地方会被“感叹号”代替;如果引用了“混合活动内容”(如脚本、样式表等),则内容无法正常加载,而且还会在地址栏中多出一个“盾牌”图标,表示内容已被阻止。解决办法只有一个,那就是修改网页上的 HTTP 内容,让其指向 HTTPS 内容。现在,网站上大部分链接都被改正正确了,但是肯定还有少量漏网之鱼。

p.s.  其实我启用 HTTPS 的重要原因之一是阿里云似乎动不动就会封锁某些内容。启用 HTTPS 之后,它只能封锁整站,而不能封锁单个网页了。

发表在 计算机技术 | 留下评论

测试 Let’s Encrypt 颁发的 HTTPS 证书

Let’s Encrypt 是 2015 年底开放公测的一个项目,旨在为互联网上所有网站提供免费的 HTTPS 证书。为网页服务器启用 HTTPS 加密,不仅可以增强网络链接的安全性和保密性,也可以通过 SPDY 与 HTTP/2 加速网页的传输速度。很久之前我就想为我的服务器启用 HTTPS 了,但是因为从 HTTP 迁移到 HTTPS 比较麻烦,Let’s Encrypt 的服务器 BUG 不断,所以一直拖了下来。今天我为我的域名申请到了证书,并用此证书运行了一个简单的测试页面,现在可以通过 https://www.zbyzbyzby.com 测试 HTTPS 证书了。等我有时间之后,我再在把整个网站迁移到 HTTPS。

p.s. #1  从 HTTP 迁移到 HTTPS 并不像想象得那么简单,由于浏览器对混合内容的禁止策略,即使做了跳转,在很多情况下 HTTPS 的页面也不能直接引用 HTTP 内容。迁移需要改掉页面上的大多数链接,很烦人。
p.s. #2  Let’s Encrypt 项目还不稳定,而且它的证书有效期只有 90 天,需要频繁地重新申请,我决定先测试一段时间,如果没有太大的意外再迁移。
p.s. #3  Let’s Encrypt 签出的证书目前不支持 Windows XP SP3 系统(IE, Chrome, Opera 等浏览器),有一定的局限性。但 Firefox 浏览器除外,因为 Firefox 使用自己实现的加密套件,不受系统的影响。支持系统列表

发表在 计算机技术 | 留下评论

为 Apache 启用 gzip 时需要注意 ETag 的配置

网上为 Apache 启用 gzip 压缩的教程一抓一大把,然而很少有提及在启用 gzip 时需要注意 ETag 的配置的。由于 Apache 的设计原因,gzip 与 ETag 不能很好地一起工作。例如有很多本应该发送 304 Not Modified 的回应,在启用 gzip 后,会发送 200 OK 的回应。这样一来,原本无需发送数据的请求变成了需要发送数据的请求,相当于抵消一部分开启 gzip 减少网络流量的作用。当然,针对这个问题解决方案有很多,但是都不尽完美。我选择的是直接禁用对文件的 ETag,即在服务器配置文件中加入一句 FileETag None。这样一来,服务器便会用时间来判定是应该发送 304 回应还是 200 回应,避免了错误的回应消耗网络流量。

参考资料: StackOverflow 上的问答  Bug 39727  Bug 45023

发表在 计算机技术 | 留下评论