当前位置: 首页 > 网站建设 > HTTPS相关 > Nginx使用HTTP/2与HTTPS跑分测试

Nginx使用HTTP/2与HTTPS跑分测试

发布于:2016-7-28 最后更新:2017-6-21 HTTPS相关 23条评论 28,006 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

HTTP 2.0即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组工作小组进行开发。详细说明请查看百科介绍:HTTP 2.0
http2_520
还没有使用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进行查看。

sp160728_215600

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博客对比截图:

httpspaofeq

未优化前(点击放大)

sp160728_221415

升级OpenSSL 1.0.2与优化后(点击放大)

总结

若您喜欢折腾可以考虑将OpenSSL升级到1.0.2,重要配置请自行备份。此外又拍云的CDN也已经支持HTTP/2了,若不想折腾的可以直接上又拍云CDN,前提是需要BA

此篇文章参考: 为什么我们应该尽快支持 ALPN?
关于 Nginx 开启 HTTP/2 的问题

标签: ,

回复 小z 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注


已有23条评论


  1. 博主的教程不错,但是跑分很不客观啊
    你那个F,分明是因为存在openssl漏洞造成的,开启HTTP2目前不会对ssllabs评分造成影响。为什么开HTTP2以后好了,是因为你在开启HTTP2的时候必须静态编译openssl1.0.2解决了旧版漏洞……何况ssllabs根本不能称作跑分,只能称作检测工具

    1. 只要配置文件中加入listen 443 ssl http2;就可以支持,只不过ALPN需要OpenSSL 1.0.2版本,那么您还得关注OpenSSL的版本。

  2. 有两个问题请教一下:
    1.阿帕奇服务器下访问http的文章链接(比如http://www.x.com/xxx)不能跳转成https链接,应该怎么设置。
    2.虚拟主机能不能提高ssl分数,还是要联系主机商?

    谢谢

    1. 您好,
      1.可以尝试在.htaccess文件中加入下面的规则,将http重定向到https试一下。

      RewriteCond %{SERVER_PORT} !^443$
      RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
      

      2.虚拟主机环境都是配置好的,用户权限有限,如果需要做额外的配置或修改只能联系主机商或者换VPS,另外分数大多是给自己看的,大可不必在意。
      感谢支持!

    1. 那有点奇怪了,我这边测试是蓝色的。Ctrl + F5强制刷新一下呢,如果还是灰色方便反馈下ping出来的IP吗?

  3. 博主,问你一个问题,我的新站刚上线遇到一个问题,我的网站没有去推广过,但是有10个ip左右,今天我到百度统计上面去查看这些ip,发现它们的入口页面是三个网站,而且做的和我的一模一样,我测试过只要我的网站内容一改变,它就跟着改变?怎么办?复制的内容一模一样,只有首页是它自己的,页面和分类目录这些内容一点还是跳回到我的网站上面来?怎么回事,急!!!!望回复,谢谢!

    1. 你的网站估计被他人恶意镜像了(反向代理),解决反法是在WEB上屏蔽对方服务器IP或者域名。