HTTP棺ڵ㲥Ƶͨexpiresadd_headerCache-ControlָƿͻĴĻսûٴλʱֱӴػĻڵ̭ѹ
ProxyCacheNginxΪƵݻ浽?شûƵʱNginxȼػ?ǻֱӷӦ
http{proxy_cache_path/var/cache/nginxlevels=1:2keys_zone=video_cache:10mmax_size=10ginactive=60m;server{location/{proxy_passhttp://backend_video_server;proxy_cachevideo_cache;proxy_cache_valid20030210m;#200302״̬Ӧ10proxy_cache_key"$scheme$request_method$host$request_uri";add_headerX-Cache-Status$upstream_cache_status;#黺״̬}}}
˳Ӧý壨HLS/DASHƶռƵԽԽҪӦԶĴHLSDASHЭӦ˶ܽƵļ֧СƬṩһļƾ֤Ŀ״̬ܵѡʵƵƬϾвӶʵ֡˳Ӧͨ
Nginx֧HLSDASHҲҪɫ
ִƵƽ̨NetflixYouTubeƵվĵ㲥?ֱ?ƣ˳Ӧǿ粨ʱҲṩͨIJڻ߷ַЧNginxҪ㣺HLSͨҪһýFFmpegNginx-RTMP-ModuleFFmpegԭʼƵתHLSã.m3u8ļ.tsƵƬϣ
Nginx潫ЩHLSļͨHTTPзַDASHHLSDASHҲҪƵƬ.mpdMediaPresentationDescriptionļNginxͬͨHTTPиЧַNginxΪַHLSվDASHNginxĽΪЧHTTPļ١ȹ̵ͻ˷ַЩСƵƬϺļ
ĻͲóͷʹHLS/DASHýַΪ
δһֽ̽NginxƵеŻԼCDNе
һʶNginxƵŵԨԴԼڵ㲥ֱ˳Ӧý巽ĻӦNginxܡ߲ĴóͷԼа?黯ܹѾΪƵ?ɻȱһҪʩչNginxƵеDZҪʶŻԼڸCDNݷַ磩ϵͳеĽɫ
NginxƵŻͨһ
ȻNginxԼԽٺƵʱϸ廯Żܹûͷѹ
õţNginxڴóͷʱʹûЩ̭I/OݴЧ
client_body_buffer_sizeͻľϸϴƵ漰شʱҪעproxy_buffer_sizeproxy_buffersNginxΪʱЩӺ˷ȡӦĻϸĿ
ƣӳʺʵʱ֧H.264?
NginxʾҪҪװônginx-rtmp-moduleNginx
#RTMPload_modulemodules/ngx_rtmp_module.so;http{#...(HTTP)...}rtmp{server{listen1935;#RTMPĬ϶˿chunk_size4096;applicationlive{liveon;recordoff;#Ƿ¼ֱallowpublish127.0.0.1;#allowplayall;#˲}}}
ԭֱˣOBSƵ͵NginxRTMPַrtmp://your_domain.com/live/stream_keyNginxյַԢĿԢĿ˿ʹ֧RTMPЭIJVLCPotPlayer߽RTMPתΪHTTP-FLV/HLS/DASHͨWebв
ÿһα벻ƵӰڵ?FlashƵڸ塢8Kֱ͵㲥Ƶݵռظǵ֧һеDZĬĬǿʢNginx֮Ƶո¶ͷԽ
߲?ʯNginx첽ձյI/OģʹܹԼ͵ԴĴóͷƵŶζȻгǧûͬʱԢĿNginxҲܴӦÿûܻͨIJֹٺӳ
ֱΪҪκһӳٶܵûĴ½
а黯ܹNginxӵǿʢ黯ζƾ֤ԼѡԵ?غֹЧƵζǿʹԭֵ֧HTTPЭҲͨװõָ֧רҵýЭRTMPHLSHTTPLiveStreamingDASHDynamicAdaptiveStreamingoverHTTP
аʹNginxܹ˳ӦشƵ
HTTPЭ?ȻƣƵǵ㲥ƵͨHTTPЭдNginxΪһHTTPȻ߱˴ЩƵļͨӵ?NginxܸЧؽƵļMP4MOVãֱӷͻ
ַڼܹʹHTTPЭĻһ?
ýЭļԣֻHTTPԴƵļֱҪϸ廯ƵƵRTMPHLSDASHýЭԵΪҪNginxͨװnginx-rtmp-moduleƷʵֶRTMPЭ֧Ӷֱ
HLSDASHNginxԭЧһЩҲܺܺõ֧Щ˳ӦýЭƾ֤û״̬̬ƵṩŵIJ
ؽڵ㣺CDNؽڵ㶼˸ܵWebNginxԽܺͳ̬CDNؽڵѡ滺ԴվƵЧطַܱûԴվNginxͨΪԴվǰñóͷڵûʹṷ̂ԺʵƵԴѹԴվѹ
ЭתijЩشCDNܹNginxΪЭתRTMPֱתΪHTTP-FLVHLSDASHԱWebƽ⣺Nginxĸƽ?ڽɵ̨NginxҲڽַ˵ĶƵóͷ洢ʵָ߿ԺͿչ
˽CDNض֯ҵʹNginxԼ˽CDNͨŶNginxڵŽDNSʹսʵڲĸЧƵַ
server{listen80;server_nameyour_domain.com;root/var/www/videos;#Ƶļ?Ŀ¼location/videos/{autoindexon;#Ŀ¼б}location~*\.(mp4|mov|avi)${expires30d;#ûʱadd_headerCache-Control"public,must-revalidate";}}
ԭûͨhttp://your_domain.com/videos/your_video.mp4Nginxƾ֤ҵӦļͨHTTPЭ齫䴫HTTPӦȲƵ
ֱRTMPҪʵʱֱRTMPReal-TimeMessagingProtocolӦձЭ֮һNginxͨnginx-rtmp-moduleҡһΪһЧǿʢRTMPý
Ϸֱֱ?Ͼۻֱֱ?
NginxƵӦѾӵHTTPļַ֧RTMPֱHLS/DASH˳ӦýͨCDNʵȫܵķַĸܡаԺǿʢ̬ϵͳʹܹӦشƵ
δƵյһֱ8K塢VR/ARƵӳֱWebRTC̬ķNginxҲݽͨһֱˢƵ??ȷNginxƵе?ԭŻκҪŻƵĿߺάְԱ˵һֵͶ
NginxΪƵĵͷܣ
ڹģƵʱ̨NginxԶԶʱNginxͳΪCDNContentDeliveryNetworkϵͳе?㡰ڵ㡱
CDNԭCDNĽͷȫģڰŴڵķڵ㣨PoPPointofPresenceûݣƵļֱ浽ûĽڵûʱDNSὫûCDNڵɸýڵֱṩ
Ƶһϴproxy_buffersproxy_buffer_sizeȷһԶȡ̭ƵԵI/Osendfileon;ָNginxֱӽļں˿ռ䷢͵ӿƹûռ̭CPUĺڴ濽?ڴļƵЧ
aiothreads;ҪϸI/OƵij˼첽I/OAIOaiothreadsָNginxworkerʹ̳߳óͷI/OڶCPU½һI/O
ƣΪ˱ò·кҪ
worker_connectionsÿworker̿ͬʱóͷlimit_conn_zonelimit_connͳһIPַͳһʱڿԽDDoSlimit_req_zonelimit_reqͳһIPַ
սԣNginxǿʢĻƵַҪ