nginx中文文档-ngx_http_mp4_module

ngx_http_mp4_module模块为MP4文件提供服务端伪流媒体支持。这些文件通常以.mp4、.m4v或.m4a扩展名结尾。

伪流媒体与兼容的Flash播放器一同工作。播放器发送给服务器一个带有指定开始时间的查询字符串参数(名称为start,定义为秒数)的请求,服务器响应指定查询开始时间的流,例如:
http://example.com/elephants_dream.mp4?start=238.88
这允许在任何时候执行随机搜索,或在时间线中间开始回放。
为了支持搜索,基于H.264格式存储媒体信息到一个所谓的“moov atom”中。这是文件中的一部分,保存整个文件的信息索引。
为了开始回放,播放器首先需要读取媒体信息。这需要发送一个带着start=0参数特殊的请求。很多编码软件将媒体信息插入到文件结尾。这对伪流媒体是不好的,因为播放器需要下载整个文件后才能播放。如果媒体信息在文件开头,对nginx来说就很方便的开始发送后面的文件内容。如果媒体信息放在文件结尾,nginx必须读取整个文件并准备一个新流,以便媒体信息出现在媒体数据之前。这涉及一些CPU内存及磁盘I/O的开销,所以建议提前为伪流媒体准备一个源文件,这样要比每个请求nginx去做这件事要好。
模块同时支持HTTP请求的end参数(1.5.13+),可以设置播放结束点。end参数可以同start定义也可以分开定义:
http://example.com/elephants_dream.mp4?start=238.88&end=555.55
为了匹配非零的start或end参数的请求,nginx将会从文件中读取媒体信息,准备含有请求时间段内的流,并发送给客户端。这与上面说的有同样的开销。
如果请求没有包含start和end参数,就没有额外开销,文件只是简单的作为静态资源发送。一些播放器还支持byte-range请求,因此不需要这个模块。
这个模块默认不会构建,需要通过–with-http_mp4_module参数开启。
如果第三方mp4模块之前使用过,该模块应该禁用。
简单的flv伪流媒体支持通过ngx_http_flv_module模块提供。

示例配置

location /video/ {
    mp4;
    mp4_buffer_size       1m;
    mp4_max_buffer_size   5m;
    mp4_limit_rate        on;
    mp4_limit_rate_after  30s;
}

mp4

语法:mp4
默认:—
上下文:location

在location块内开启模块功能。

mp4_buffer_size

语法:mp4_buffer_size size
默认:mp4_buffer_size 512K
上下文:http, server, location

设置用于处理MP4文件的初始缓冲区大小。

mp4_max_buffer_size

语法:mp4_max_buffer_size size
默认:mp4_max_buffer_size 10M
上下文:http, server, location

在处理媒体信息的过程中,一个更大的缓冲区是有必要的。它的大小不能超过指定的大小,否则nginx将返回500错误码,并记录下面的信息:

"/some/movie/file.mp4" mp4 moov atom is too large:
12583268, you may want to increase mp4_max_buffer_size

mp4_limit_rate

语法:mp4_limit_rate on | off | factor
默认:mp4_limit_rate off
上下文:http, server, location

限制传输给客户端响应的速率。这个限速基于MP4文件的平均比特率。为了计算这个速率,比特率会乘以定义的factor(因数)。特殊值“on”为因数1.1。特殊值“off”禁用限速。限制是针对每个请求的,所以如果客户端同时打开两个连接,则总速率为两倍设置的值。
该指令对商业版本可用。

mp4_limit_rate_after

语法:mp4_limit_rate_after time
默认:mp4_limit_rate_after 60s
上下文:http, server, location

设置初始的媒体数据大小(以时间为单位),超过这个值后响应将会被限速。
该指令对商业版本可用。

nginx中文文档-ngx_http_memcached_module

此页面版本:2016-06-08
ngx_http_memcached_module模块用于接收memcached服务器的响应。关键字设置在$memcached_key变量中。响应应该事先通过外部nginx放在memcached中。

示例配置

server {
    location / {
        set            $memcached_key "$uri?$args";
        memcached_pass host:11211;
        error_page     404 502 504 = @fallback;
    }

    location @fallback {
        proxy_pass     http://backend;
    }
}

memcached_bind

语法:memcached_bind address [transparent] | off
默认:—
上下文:http, server, location
版本:0.8.22+

指定的本地IP地址发起到memcached服务器建立外部连接。参数可包含变量(1.3.12+)。特殊值off(1.3.12+)取消继承于上层memcached_bind指令的影响,允许系统自动分配本地IP地址。
transparent参数(1.11.0+)从一个非本地IP地址发起到memcached服务器的外部连接,例如从一个真实的客户端IP地址:
memcached_bind $remote_addr transparent
为使该参数生效,需要以超级用户的身份运行nginx进程,并配置路由表阻断来自memcached服务器的网络流量。

memcached_buffer_size

语法:memcached_buffer_size size
默认:memcached_buffer_size 4k|8k
上下文:http, server, location

设置用于读取来自memcached服务器响应的缓冲区大小。响应会在接收后同步的传给客户端。

memcached_connect_timeout

语法:memcached_connect_timeout time
默认:memcached_connect_timeout 60s
上下文:http, server, location

定义与memcached服务器建立连接的超时时间。注意超时时间通常不超过75秒。

memcached_force_ranges

语法:memcached_force_ranges on | off
默认:memcached_force_ranges off
上下文:http, server, location
版本:1.7.7+

启用同时为缓存和不缓存的来自于memcached服务器的响应而忽略“Accept-Ranges”响应头域的byte-range功能支持。

memcached_gzip_flag

语法:memcached_gzip_flag flag
默认:—
上下文:http, server, location
版本:1.3.6+

启用测试flags的值,如果memcached服务器返回该值,则在响应头中添加“Content-Encoding”值“gzip”。

memcached_next_upstream

语法:memcached_next_upstream error | timeout | invalid_response | not_found | off …
默认:memcached_next_upstream error timeout
上下文:http, server, location

定义在哪种情况下请求会传给下一个服务器:
error
当与服务器建立连接、发送请求或读取响应头时出错

timeout
当与服务器建立连接、发送请求或读取响应头时超时

invalid_response
服务器返回响应空或无效的响应

not_found
响应在服务器上找不到

off
关闭传递给下一个服务器的功能

请求只有在还未传给客户端的情况下可以传到下一个服务器上。也就是说,当响应传输过程中发生错误或超时,是无法得到修正的。
指令同时定义了哪种情况会认为是与服务器连接不成功的尝试,error, timeout 和invalid_header总会被认为是不成功的尝试,即使它们没有定义在指令中。not_found从不会被认为是失败的尝试。

memcached_next_upstream_timeout

语法:memcached_next_upstream_timeout time
默认:memcached_next_upstream_timeout 0
上下文:http, server, location
版本:1.7.5+

设置时间限制,在此期间请求可以传给下一个服务器。0值关闭这个限制。

memcached_next_upstream_tries

语法:memcached_next_upstream_tries number
默认:memcached_next_upstream_tries 0
上下文:http, server, location
版本:1.7.5+

设置尝试传递请求到下一个服务器的次数限制。0值关闭这个限制。

memcached_pass

语法:memcached_pass address
默认:—
上下文:location, if in location

设置memcached服务器地址。地址可以定义为一个域名或IP和端口:
memcached_pass localhost:11211;
或UNIX-domain socket路径:
memcached_pass unix:/tmp/memcached.socket;
如果一个域名解析为多个地址,它们将通过轮询方式使用。另外地址可以定义为服务器组。

memcached_read_timeout

语法:memcached_read_timeout time
默认:memcached_read_timeout 60s
上下文:http, server, location

定义从memcached服务器读取响应的超时时间。超时的设置只应用于两个成功的读操作之间,并不是整个响应的传输。如果memcached服务器在此期间没有传送任何数据,连接将关闭。

memcached_send_timeout

语法:memcached_send_timeout time
默认:memcached_send_timeout 60s
上下文:http, server, location

设置传输请求到memcached服务器的超时时间。超时时间作用于两次成功的写操作,而不是整个请求的传输。如果memcached在此期间没有收到任何数据,连接将关闭。

内嵌变量


$memcached_key
定义一个关键字用于从memcached服务器接收响应。