网站启用https后,会加剧服务器的负担。每次新的TLS连续都需要握手,以便创建共享的加密密钥,在TCP三次握手之上还需要两个来回。传统的http使用TCP三次握手建立连接,而SSL和TLS在这个基础上还需要9个握手包,所以这个负担显而易见。不过,通过重用Session提高https的性能,TLS有几个特点可以抵消额外的握手:重用一个Session。有两个标准会话重用机制:session IDs (RFC 5246) 和 session tickets (RFC 5077),使用其中一个技术,一个客户端可以重用之前创建的会话,这个会话是之前和服务器进行握手成功的,这样可以减少一次来回过程。基于SessionID的会话重用适合现代所有浏览器,FireFox和Chrome甚至还支持 session tickets。

Nginx之ssl_session_cache详解:

 1Syntax:ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
 2默认:
 3ssl_session_cache none;
 4Context:http, server
 5设置存储session参数的缓存的类型和大小。缓存可以是以下任何一种类型:
 6off
 7严禁使用session缓存:nginx明确告诉客户端session可能不会被重用。
 8none
 9session缓存的使用被禁止:nginx告诉客户端session可能会被重用,但实际上并不会将session参数存储在缓存中。
10builtin
11在OpenSSL中构建的缓存;仅由一个工作进程使用。缓存大小在session中指定。如果没有给出大小,则等于20480个会话。使用内置高速缓存可能导致内存碎片。
12shared
13所有工作进程之间共享缓存。缓存大小以字节为单位指定;一兆字节可以存储大约4000个session。每个共享缓存都应该有一个任意名称。具有相同名称的缓存可以用于多个虚拟服务器。
14两种类型的缓存可以同时使用:配置案例:
15ssl_session_cache builtin:1000 shared:SSL:10m;
16但是只使用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;