> 博客 > 运维笔记 > 使用ssl_session_cache优化https下Nginx的性能

使用ssl_session_cache优化https下Nginx的性能

   2018-03-15  点击:2957次

nginx-ssl性能优化

众周所知网站启用https后,会加剧服务器的负担。传统的http使用TCP三次握手建立连接,而SSL和TLS在这个基础上还需要9个握手包,所以这个负担显而易见。

通过重用Session提高https的性能:

https存在一个缺点:每次新的TLS连续都需要握手,以便创建共享的加密密钥,在TCP三次握手之上还需要两个来回。

但是TLS有几个特点可以抵消额外的握手:重用一个Session。有两个标准会话重用机制:session IDs (RFC 5246) 和 session tickets (RFC 5077),使用其中一个技术,一个客户端可以重用之前创建的会话,这个会话是之前和服务器进行握手成功的,这样可以减少一次来回过程。基于SessionID的会话重用适合现代所有浏览器,FireFox和Chrome甚至还支持 session tickets。

Nginx之ssl_session_cache详解:

引用一下Nginx官网对ssl_session_cache选项的说明

ssl_session_cache

翻译过来:

Syntax:ssl_session_cache off | none | [builtin[:size]] [shared:name:size];


默认:

ssl_session_cache none;

Context:http, server


设置存储session参数的缓存的类型和大小。缓存可以是以下任何一种类型:


off

严禁使用session缓存:nginx明确告诉客户端session可能不会被重用。

none

session缓存的使用被禁止:nginx告诉客户端session可能会被重用,但实际上并不会将session参数存储在缓存中。

builtin

在OpenSSL中构建的缓存;仅由一个工作进程使用。缓存大小在session中指定。如果没有给出大小,则等于20480个会话。使用内置高速缓存可能导致内存碎片。

shared

所有工作进程之间共享缓存。缓存大小以字节为单位指定;一兆字节可以存储大约4000个session。每个共享缓存都应该有一个任意名称。具有相同名称的缓存可以用于多个虚拟服务器。


两种类型的缓存可以同时使用:配置案例:

ssl_session_cache builtin:1000 shared:SSL:10m;


但是只使用shared缓存,而不使用built-in缓存性能应该会更高。


Nginx配置ssl_session_cache:

目前使用较多的配置是built-in和shared同时使用:

ssl_session_cache builtin:1000 shared:SSL:10m;

但是Nginx官方说只使用shared,性能会更高,配置方法为:

ssl_session_cache shared:SSL:10m;


相关文章