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
";
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 |