What are the differences between webservers?

Apache

As the maturest and most flexible of available webservers, functionality is first developed for Apache. In some cases functionality can be ported to other webservers, in other cases not - e.g missing support for chunked transfer encoding in Lighttpd means that Live ingest is not supported in Lighttpd.

The following sections document these differences as well as outlining what can be ported, focusing on Apache and Nginx.

Configuration

The list of available Apache All virtual host related options (keywords to be used in the virtual host configuration file) is the following:

Configuration key

Description

UspLicenseKey

The USP license key, the default is to place this in /etc/usp-license.key.

UspHandleIsm

Set to 'on' to enable mod_smooth_streaming functionality.

UspHandleF4f

Set to 'on' to enable mod_f4fhttp functionality.

IsmProxyPass

Pass .ism to proxy (a virtual path and URL).

UspIssPassThrough

Set to 'on' to pass through MP4 fragments directly to Smooth Streaming.

UspPreferStatic

Set to 'on' to prefer static files over dynamically generated files.

UspEnableMMAP

Set to 'off' to disable use of memory-mapping.

UspSkipRewrite

Set to 'off' to enable the internal rewrite rules. (NOTE: this was 'off' by default in 1.10.25 and earlier, but in 1.10.26 and later it is now 'on' instead).

UspDynamicTimeShiftBufferDepth

Set to 'on' to update the @timeShiftBufferDepth attribute dynamically.

UspOutputFilter

Filter output through an external command.x

UspForceContentLength

Set to 'on' to force determining Content-Length even for dynamic content.

S3SecretKey

The AWS secret key.

S3AccessKey

The AWS access key.

S3Region

The AWS region. Required for AWS Signature v4.

S3SecurityToken

The AWS security token, if required; see Temporary security credentials in IAM. (Added in 1.11.13)

S3UseHeaders

Set to 'on' to use HTTP headers for AWS authentication, instead of query parameters.

Further, in Apache it's possible to have Custom HTTP Status codes (Apache):

Apache only functionality

The following functionality is available only in Apache:

The cause for this is how Apache structures resource management (RAM, file access etc).

Nginx

Configuration

The following configuration options are available:

Option

Description

usp_license_key

The USP license key, the default is to place this in /etc/usp-license.key.

usp_handle_ism

Enables mod_smooth_streaming functionality.

ism_proxy_pass

Pass .ism to proxy (a virtual path and URL).

usp_handle_f4f

Add to enable mod_f4fhttp functionality

usp_disable_mmap

Add to disable use of memory mapped I/O.

s3_secret_key

The AWS secret key.

s3_access_key

The AWS access key.

s3_region

The AWS region.

The status code mapping can be done with Lua in Nginx:

header_filter_by_lua "
    FMP4_FRAGMENT_MISSING = 404
    if ngx.status == FMP4_FRAGMENT_MISSING then
        ngx.status = 204
    end
";

Unavailable functionality

Due to how Nginx is structured internally, the following functionality is not available on Nginx:

  • Progressive download

  • Download to own

The use of ism_proxy_pass is limited in the sense that the reference may not be to Nginx itself. For background on this see What is the preferred webserver for media delivery?.

Lighttpd

For Lighttpd none of the options as listed for Apache are available.

Further, the following functionality is not available:

  • progressive download

  • download to own

  • live ingest

IIS 5/6/7/8

For IIS none of the options as listed for Apache are available.

Further, the following functionality is not available:

  • progressive download

  • download to own

  • live ingest (IIS 7/8)

Webserver Overview

The following table provides an overview of features available or not due to webserver internals:

Webserver

Progressive Download

Download to Own

Live ingest

Remix

Apache

y

y

y

y

Nginx

n

n

y

n

Lighttpd

n

n

n

n

IIS

n

n

n

n