首先,你需要有一张SSL证书。如果没钱,可以免费申请一个,请参考我的另一篇文章《letsencrypt在nginx下的配置》;
然后,如果你的nginx版本过低,需要升级到nginx 1.9.5以上。在Cent OS上这样做:
创建一个文件
/etc/yum.repos.d/nginx.repo
输入以下内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
执行
yum update nginx
,基本上这时可以顺利升级你的nginx到最高版本;因为刚升级完nginx,它会把旧的conf文件改名为
xxx.conf.rpmsave
,所以别忘了把conf文件弄回来:
# mv /etc/nginx/conf.d/virtual.conf.rpmsave /etc/nginx/conf.d/virtual.conf
# mv /etc/nginx/conf.d/ssl.conf.rpmsave /etc/nginx/conf.d/ssl.conf
修改
ssl.conf
,把原来的listen 443;
改成listen 443 ssl http2;
;重启nginx:
service nginx restart
就是这么简单。但是我怎么知道怎么证明我的网站确实使用了http2呢?
这时候你需要在你的Chrome里安装一个扩展程序叫做“HTTP/2 and SPDY indicator
”,它会负责检查你的每个标签页,如果你的网站采用了http2,那么右上角会出现一个蓝色小闪电,如果你的网站采用了低一下级别的SPDY,会出现一个绿色小闪电,如果什么也没采用,那么就是一个灰色的小闪电。
仔细检查了一下,发现Google的网站几乎全部都有蓝色小闪电,而国内的网站几乎都没有,而我们的——有了!经实测,速度确实有所提升。
怎么样,快来安装你的蓝色小闪电吧!完全免费的哟!
2016年6月9日更新:
好吧,不幸的事情发生了,从2016年5月30日起,我突然发现我辛辛苦苦做好的蓝色小闪电又消失了,一开始我以为是服务器出了什么问题,但是随后发现连豆瓣的spdy绿色小闪电也没了,深刻怀疑是插件或者浏览器的问题,于是安装了firefox,在firefox里也安装上http/2插件,这时候在firefox里可以看到我们的蓝色小闪电还在,那么只有可能是浏览器的问题。果不其然,在这篇文章里提到Google禁止了所有使用openssl 1.0.1版本的nginx服务器,因为它不支持ALPN。而最要命的是通过yum安装的nginx包里都是用openssl 1.0.1编译的,于是我们只能自己手工编译自己的nginx服务器。
好吧,本着既然折腾就折腾到底的精神,下载安装openssl 1.0.2:
$ wget -c https://www.openssl.org/source/openssl-1.0.2h.tar.gz
$ tar xf openssl-1.0.2h.tar.gz -C /usr/local/
$ cd /usr/local/openssl-1.0.2h
$ ./config
$ make depend
$ make
$ make test
$ make install
$ mv /usr/bin/openssl /usr/bin/openssl_1.0.1e
$ ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
$ openssl version
OpenSSL 1.0.2h 3 May 2016
这只是第一步,安装好了openssl,下面我们还要编译安装nginx:
$ wget http://nginx.org/download/nginx-1.11.1.tar.gz
$ tar -zxf nginx-1.11.1.tar.gz
$ cd nginx-1.11.1/
$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/usr/local/openssl-1.0.2h --user=nginx --group=nginx --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_geoip_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
$ make
$ make install
这以后,你再启动nginx的时候,就不是service了,而必须以命令行方式:
$ cd /usr/local/nginx
$ cp /etc/nginx/nginx.conf conf/
$ service nginx stop
$ /usr/local/nginx/sbin/nginx
以后要停止nginx服务的时候,先看一下nginx的pid是多少:
$ cat /var/run/nginx.pid
然后再温柔地杀死它就可以了:
$ kill -QUIT 12345
好吧,不多说了,具体步骤还是看官方文档。
再进浏览器,看,我们的蓝色小闪电又回来了!哼,Google,你难不倒我!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。