ngx_http_spdy_module模块基本指令整理

原创文章,转载请指明出处并保留原文url地址

本文主要针对nginx的ngx_http_spdy_module模块做简单介绍,本文具体包括如下指令:spdy_headers_comp

 

ngx_http_spdy_module模块对SPDY协议提供了实验支持。当前,SPDY协议的草案2被实现。

这个模块不是内建模块,需要通过--with-http_spdy_module指令制定编译选项。

已知错误

该模块是实验目的,后果自负。

当前版本支持SPDY协议未实现“服务器推送”。

SPDY的连接请求不能速率限制。

Example Configuration

server {

listen 443 ssl spdy;

ssl_certificate server.crt;

ssl_certificate_key server.key;

...

}

注意为了再相同端口同时支持https及spdy协议,OpenSSL库应该支持“Next Protocol Negotiation” TLS扩展功能, 这个功能在OpenSSL以后开始支持。

Nginx原文:

The ngx_http_spdy_module module provides experimental support for SPDY. Currently, draft 2 of SPDY protocol is implemented.

This module is not built by default, it should be enabled with the --with-http_spdy_module configuration parameter.

Known Bugs

The module is experimental, caveat emptor applies.

Current implementation of SPDY protocol does not support “server push”.

Processing of requests from SPDY connections cannot be rate limited.

Example Configuration

server {

listen 443 ssl spdy;

ssl_certificate server.crt;

ssl_certificate_key server.key;

...

}

Note that in order to accept both HTTPS and SPDY connections simultaneously on the same port, OpenSSL library used should support “Next Protocol Negotiation” TLS extension, available since OpenSSL version 1.0.1.

1. spdy_headers_comp

syntax:spdy_headers_comp   level;
default:spdy_headers_comp 0;
context:http, server

设置相应头的压缩级别, 范围从1(速度最快,压缩最小)到9(压缩最慢, 压缩最好)。特定的值0关闭头部的压缩功能。

内嵌变量

ngx_http_spdy_module模块支持下面内置的变量

$spdy

SPDY连接SPDY协议版本,或空字符串

$spdy_request_priority

SPDY连接请求的优先级,或空字符串。

Nginx原文:

Sets a header compression level of a response in a range from 1 (fastest, less compression) to 9 (slowest, best compression). The special value 0 turns off header compression.

Embedded Variables

The ngx_http_spdy_module module supports the following embedded variables:

$spdy

SPDY protocol version for SPDY connections, or an empty string otherwise;

$spdy_request_priority

request priority for SPDY connections, or an empty string otherwise.

SPDY

SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级,以及HTTP包头压缩。谷歌已经开发一个网络服务器原型机,以及支持SPDY协议的Chrome浏览器版本。

谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。这一数据基于对全球25大网站的下载测试。目前SPDY团队已经开发了一个可使用的原型产品,谷歌决定开放这一项目,希望“网络社区能积极参与、提供反馈以及帮助”。

谷歌强调SPDY并不是用于替代HTTP的协议。该协议仍使用HTTP的方法和报头,只是对HTTP中负责连接管理和数据传输格式的部分进行了重写。谷歌表示,将很快发布开源的SPDY网络服务器。谷歌已经发布了支持SPDY协议版本的Chrome浏览器的源代码。

根据谷歌发布的SPDY白皮书,该项目的目标是将页面加载时间减少50%,最小化配置复杂度,并避免网站所有者对网站进行的调整影响SPDY。谷歌希望将所有的工作转移至用户端和网络服务器中。通过引入SPDY,谷歌还希望在一个TCP会话中支持多个并发的HTTP请求,并使SSL成为标准的传输协议。

业内人士认为,提升网络速度和安全性符合谷歌的利益。谷歌当初推出Chrome浏览器的目的就在于让所有开发者关注网络速度。相比Chrome,SPDY是一个更雄伟的目标。通过SPDY,谷歌希望对互联网最基础的协议之一进行改变。

SPDY是谷歌正在开发的一种新的网络协议,“SPDY”一词的发音同“speedy”,名称"SPDY"并不是一个缩写,而是从"speedy"这个单词而来,通过压缩来提高传输速度,是这个项目的一个关键目的。协议设计的初衷是为了提升网络速度,最小化网络延迟,优化用户的网络使用体验。SPDY并不是一种被设计用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级,以及HTTP报头压缩。谷歌已经开发出一个支持SPDY协议的网络服务器原型机,以及支持SPDY协议版本的Chrome浏览器。

SPDY的目的是减少网页加载时间,通过优先级和“复用”技术传输多个文件,而每个客户端只需一个连接。在设计上所有通讯数据都是通过TLS(安全传输层协议)加密的,并且通过gzip进行压缩(而HTTP 报文的头部则是选择性的进行压缩)。此外,服务器可能提示或者甚至向用户推送内容,而不是等待页面中的每个单独的请求。

SPDY会话在Chrome中可以通过特殊的URL来查看: chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active,谷歌承认在Chrome与谷歌的SSL开启的服务器之间通讯使用的是SPDY协议。

发表评论