检测到您启用了Adblock等屏蔽广告扩展,导致正常的内容图片无法显示,为了不影响阅读体验,建议您将www.xiaoz.me加入白名单。

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

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上看到一位网友分享的配置规则,实测跑分有明显提高,可以直接拿过来使用,如下几条规则:

1
2
3
4
5
6
7
8
9
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博客的完整规则,有需要的可以参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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://www.xiaoz.me$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 的问题

Tags:,
23 Comments

发表评论

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