HTTP 2.0即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组工作小组进行开发。详细说明请查看百科介绍:HTTP 2.0
还没有使用HTTPS的童鞋请先参考文章:Nginx强制https,HTTP 301重定向到HTTPS,其实nginx开启HTTP/2支持非常简单,您只需要将原本的listen 443;
改成listen 443 ssl http2;
即可支持HTTP2,别忘记重载nginx哦。
HTTP/2测试
开启HTTP/2后如何得知网站是否已经支持?Chrome/Firefox浏览器可以安装HTTP/2 and SPDY indicator这个扩展,若当网站支持HTTP/2那么会自动显示为蓝色,若是灰色则说明不支持,此外Chrome51 以后需要支持 ALPN,否则降级为HTTP/1.1
OpenSSL版本
ALPN需要OpenSSL 1.0.2的支持,目前OneinStack最新版已经支持OpenSSL 1.0.2,您可以输入nginx -V
进行查看。
Nginx HTTPS优化
在V2上看到一位网友分享的配置规则,实测跑分有明显提高,可以直接拿过来使用,如下几条规则:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #允许的协议
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #加密算法(CloudFlare 推荐的加密套件组)
ssl_prefer_server_ciphers on; #优化 SSL 加密套件
ssl_session_timeout 10m; #客户端会话缓存时间
ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 会话缓存类型和大小
ssl_buffer_size 1400; # 1400 bytes to fit in one MTU
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
以下是小z博客的完整规则,有需要的可以参考:
server {
listen 443 ssl http2;
ssl_certificate /data/ssl/xiaoz.me.crt;
ssl_certificate_key /data/ssl/xiaoz.me.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #允许的协议
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #加密算法(CloudFlare 推荐的加密套件组)
ssl_prefer_server_ciphers on; #优化 SSL 加密套件
ssl_session_timeout 10m; #客户端会话缓存时间
ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 会话缓存类型和大小
ssl_buffer_size 1400; # 1400 bytes to fit in one MTU
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name xiaoz.me www.xiaoz.me;
index index.html index.htm index.php;
include /usr/local/nginx/conf/rewrite/wordpress.conf;
root /data/wwwroot/xiaoz.me;
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}
server
{
listen 80;
server_name xiaoz.me www.xiaoz.me;
rewrite ^(.*) https://blog.xiaoz.org$1 permanent;
}
HTTPS跑分测试
我们可以打开SSL LABS测试自己的网站HTTPS跑分,若您已经升级到OpenSSL 1.0.2且开启了HTTP/2的情况下跑分会有明显的提升。以下是小z博客对比截图:
总结
若您喜欢折腾可以考虑将OpenSSL升级到1.0.2,重要配置请自行备份。此外又拍云的CDN也已经支持HTTP/2了,若不想折腾的可以直接上又拍云CDN,前提是需要BA
此篇文章参考: 为什么我们应该尽快支持 ALPN?
关于 Nginx 开启 HTTP/2 的问题
博主的教程不错,但是跑分很不客观啊
你那个F,分明是因为存在openssl漏洞造成的,开启HTTP2目前不会对ssllabs评分造成影响。为什么开HTTP2以后好了,是因为你在开启HTTP2的时候必须静态编译openssl1.0.2解决了旧版漏洞……何况ssllabs根本不能称作跑分,只能称作检测工具
谢谢指正。
虚拟主机的就不想折腾了
现在部分虚拟主机也支持SSL了,或者上又拍、verycloud的CDN也可以开启。
如果是tenginx需要哪个版本才可以开启http2
只要配置文件中加入
listen 443 ssl http2;
就可以支持,只不过ALPN需要OpenSSL 1.0.2版本,那么您还得关注OpenSSL的版本。有两个问题请教一下:
1.阿帕奇服务器下访问http的文章链接(比如http://www.x.com/xxx)不能跳转成https链接,应该怎么设置。
2.虚拟主机能不能提高ssl分数,还是要联系主机商?
谢谢
您好,
1.可以尝试在
.htaccess
文件中加入下面的规则,将http重定向到https试一下。2.虚拟主机环境都是配置好的,用户权限有限,如果需要做额外的配置或修改只能联系主机商或者换VPS,另外分数大多是给自己看的,大可不必在意。
感谢支持!
今天又来访问了一下,现在是正常的了
没有做任何调整,可能是之前缓存的原因吧。
我安装了插件访问你的网站图标是灰色的。
那有点奇怪了,我这边测试是蓝色的。Ctrl + F5强制刷新一下呢,如果还是灰色方便反馈下ping出来的IP吗?
还是灰色的,PING的IP为:121.199.*.*
您用的哪个浏览器呢?
谷歌
好的,谢谢。回复很快哦,到时候我加您QQ再看下。
博客资源很丰富。
谢谢支持,好像您的网站打不开了,403错误。
前排支持。
博主,问你一个问题,我的新站刚上线遇到一个问题,我的网站没有去推广过,但是有10个ip左右,今天我到百度统计上面去查看这些ip,发现它们的入口页面是三个网站,而且做的和我的一模一样,我测试过只要我的网站内容一改变,它就跟着改变?怎么办?复制的内容一模一样,只有首页是它自己的,页面和分类目录这些内容一点还是跳回到我的网站上面来?怎么回事,急!!!!望回复,谢谢!
你的网站估计被他人恶意镜像了(反向代理),解决反法是在WEB上屏蔽对方服务器IP或者域名。
新人路过一下。
这个HTTP2.0是未来的趋势