We are pleased to announce this beta version of SPDY draft 2 module for nginx. This work has been sponsored by Automattic (http://automattic.com/). For more information about SPDY protocol specification please check http://www.chromium.org/spdy/spdy-protocol For SPDY Best Practices refer to http://dev.chromium.org/spdy/spdy-best-practices We are working on improving SPDY support with the goal of integrating it soon to the main nginx code. Expect frequent updates about this development, and please report your experiences, and send the feedback to nginx development mailing list nginx-devel@nginx.org (check http://mailman.nginx.org/mailman/listinfo/nginx-devel). Please always check CHANGES.txt before applying and deploying new version of SPDY patch. The nginx/spdy module is currently distributed as a patch for nginx 1.3.x development version. Known problems and limitations of this revision: - server push is not supported; - rate limiting is not supported for SPDY connections; Configuration and installation instructions are below. How to build nginx with SPDY: 1. Install OpenSSL 1.0.1+, it's required because SPDY module uses Next Protocol Negotiation TLS extension. 2. Download nginx 1.3.x tar-gzip package, visit http://nginx.org/en/download.html, or $ wget http://nginx.org/download/nginx-1.3.14.tar.gz 3. Unpack nginx-1.3 $ tar xvfz nginx-1.3.14.tar.gz $ cd nginx-1.3.14 4. Download and apply SPDY module patch from http://nginx.org/patches/spdy/ $ wget http://nginx.org/patches/spdy/patch.spdy.txt $ patch -p1 < patch.spdy.txt 5. Configure nginx build $ ./configure --with-http_ssl_module --with-http_spdy_module Use --with-openssl=/path/to/openssl-1.0.1, when building OpenSSL separately and statically linking. Use --with-cc-opt and --with-ld-opt accordingly, if OpenSSL is installed as an optional library, e.g. on Mac OS X $ ./configure --with-http_ssl_module \ --with-http_spdy_module \ --with-cc-opt="-I/opt/local/include" \ --with-ld-opt="-L/opt/local/lib" 6. Build nginx $ make To enable SPDY in nginx configuration, just add "spdy" and "ssl" parameters to the listen directive: server { listen 443 ssl spdy default_server; ssl_certificate server.crt; ssl_certificate_key server.key; ... } Optional SPDY configuration directives: - spdy_recv_buffer_size specifies the size of input buffer (per worker), 1MB by default; - spdy_max_concurrent_streams sets the maximum number of concurrent SPDY streams in a single connection, 100 by default; - spdy_streams_index_size configures the size of SPDY stream ID index, should be power of 2, default is 32; - spdy_recv_timeout defines timeout when expecting more data from the client, default is 30s; - spdy_keepalive_timeout sets the inactivity timeout after which connection is closed, default is 3m; - spdy_headers_comp defines header compression level (0 = no comp, 9 = max comp), default is 0; The default values are more or less optimized for generic use, there's normally no need to tweak them. SPDY variables: - $spdy version of SPDY protocol if the request came via SPDY (currently "2"), or empty value; - $spdy_request_priority priority of the stream, if the request came via SPDY. Disclaimer: use this code at your own risk, it is distributed under the 2-clause BSD-like license, and at nginx we are not responsible for any negative impact or effects that the usage of this code might cause. -- NGINX, Inc., http://nginx.com