我在Ubuntu 10.04LTS上运行带有SSL的nginx。 当我检查证书时,Chrome给了我这个恼人的警告:
The connection is not compressed.
在响应中,它看起来像是正在发送gzipped:
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Connection:keep-alive Content-Encoding:gzip Content-Type:text/html; charset=utf-8 Date:Sun, 12 Feb 2012 09:00:38 GMT Expires:Thu, 19 Nov 1981 08:52:00 GMT Pragma:no-cache Server:nginx/1.0.5 Transfer-Encoding:chunked Vary:Accept-Encoding X-Powered-By:PHP/5.3.6-13ubuntu3.3`
The connection is not compressed. 与ssl压缩有关,而不是gzip。 既然你回应gzip压缩,没有必要在ssl级别启用压缩。
另见: http : //www.belshe.com/2010/11/18/ssl-compression-and-you/
自从问了这个问题,就发现了一个严重的安全漏洞(BEAST攻击), 如果SSL / TLS会话被压缩 ,就有可能破坏SSL / TLS会话 。 为了减轻这一点,服务器和浏览器都开始禁用压缩; 您将需要使用HTTP压缩,并且只需要谨慎地减轻另一个漏洞(CRIME攻击)。
Nginx有意禁用 SSL压缩。 显然,为了节省内存。 这可能是有道理的,因为Chrome是我所知道的支持SSL压缩的唯一浏览器。
我特别使用Apache来实现这个function,因为SSL压缩通过压缩整个双向stream而不仅仅是响应主体来节省大量的带宽。 在我的应用程序(ERP Web客户端)中,压缩的SSLstream使用的带宽比http压缩less30%到50%。 所以,只要求用户使用Chrome,就可以节省很多带宽。
如果您想切换到Apache,请查看我的问题 ,了解有关禁用http压缩以提高性能的信息。