Module ngx_http_slice_module

Known Issues
Example Configuration
Directives
     slice
Embedded Variables

The ngx_http_slice_module module (1.9.8) is a filter that splits a request into subrequests, each returning a certain range of response. The filter provides more effective caching of big responses.

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

Known Issues

Currently, the module does not work as expected in subrequests such as background cache update. In this case, a request is constructed without byte-range support.

Example Configuration

location / {
    slice             1m;
    proxy_cache       cache;
    proxy_cache_key   $uri$is_args$args$slice_range;
    proxy_set_header  Range $slice_range;
    proxy_cache_valid 200 206 1h;
    proxy_pass        http://localhost:8000;
}

In this example, the response is split into 1-megabyte cacheable slices.

Directives

Syntax: slice size;
Default:
slice 0;
Context: http, server, location

Sets the size of the slice. The zero value disables splitting responses into slices. Note that a too low value may result in excessive memory usage and opening a large number of files.

In order for a subrequest to return the required range, the $slice_range variable should be passed to the proxied server as the Range request header field. If caching is enabled, $slice_range should be added to the cache key and caching of responses with 206 status code should be enabled.

Embedded Variables

The ngx_http_slice_module module supports the following embedded variables:

$slice_range
the current slice range in HTTP byte range format, for example, bytes=0-1048575.