ÔÚÊý×ÖÄÚÈݱ¬Õ¨µÄʱÆÚ£¬ÊÓÆµÒÔÆäÖ±¹Û¡¢»îÆÃµÄ¸öÐÔ£¬Ñ¸¿ì³ÉΪÐÅÏ¢´«²¼ºÍÓéÀÖÏûDzµÄÖ÷Á÷¡£ÎÞÂÛÊÇÖ±²¥»¥¶¯£¬»¹Êǵ㲥¹ÛÓ°£¬±³ºó¶¼Àë²»¿ª×³´ó¶ø¸ßЧµÄÊÓÆµÁ÷ýÌå·þÎñÆ÷¡£¶øNginx£¬Õâ¸öÒԸ߻úÄÜ¡¢¸ß²¢·¢Öø³ÆµÄWeb·þÎñÆ÷£¬ÔçÒѳ¬¹ýÁËÆä×î³õµÄ¶¨Î»£¬³ÉΪ¹¹½¨ÏÖ´ú»¯ÊÓÆµÁ÷ýÌå½â¾ö¹æ»®µÄ»ùʯ¡£
±¾ÎĽ«´ø?Äú×ß½øNginxµÄ?ÊÓÆµ²¥·ÅÊÀ½ç£¬´Ó»ù´¡¸ÅÏëµ½¸ß¼¶¼¼ÇÉ£¬È«Ãæ½âËøNginxÔÚÊÓÆµ·Ö·¢ÁìÓòµÄÎÞÏÞ¿ÉÄÜ¡£
ÔÚ»áÉÌNginxµÄ¾ßÌåÀûÓÃ֮ǰ£¬ÎÒÃÇÏÈÀ´Àí½âһϣ¬ÎªÊ²Ã´ËüÔÚÊÓÆµ²¥·ÅÁìÓòÈç´ËÊÜÓ½Ó¡£
¸ß»úÄÜÓë¸ß²¢·¢£ºNginxµÄÊÂÎñÇý¶¯¡¢Òì²½·Ç×èÈûµÄI/OÄ£ÐÍ£¬Ê¹ÆäÔÚ´¦Öú£Á¿²¢·¢ÏνÓʱ²û·¢½Ü³ö¡£Õâ¶ÔÓÚÊÓÆµÁ÷ýÌåÖÁ¹Ø³ÁÒª£¬ÓÉÓÚÓû§±ØÒª²»±ä¡¢Á÷³©µÄ?²¥·ÅÂÄÀú£¬¼´±ãÔÚ¶¥·åʱ¶Î£¬·þÎñÆ÷Ò²Ó¦ÄܽÓÊÜס¾Þ´óµÄÁ÷Á¿Ñ¹Á¦¡£½Ã½ÝÐÔÓë¿ÉÀ©´óÐÔ£ºNginxÕ¼Óзá˶µÄÄ£¿é»¯Éè¼Æ£¬Äܹ»Æ¾¾ÝÏÖʵÐèÒªÇáËÉÀ©´óÖ°ÄÜ¡£
ÕâΪÊÓÆµÁ÷ýÌåµÄ¶¨Ô컯ÐèÒªÌṩÁ˼«´óµÄ·½±ã£¬ÎÞÂÛÊÇÖ§³ÖºÎÖÖÁ÷ýÌåºÍ̸£¬»¹ÊÇʵÏÖ¸´ÔÓµÄתÂë¡¢¼øÈ¨Âß¼£¬Nginx¶¼ÄÜͨ¹ýºÏÀíµÄÅäÖûòµÚÈý·½Ä£¿éÀ´ÊµÏÖ¡£³É±¾Ð§Ò棺Ïà±Å×ÚһЩóÒ×»¯µÄÁ÷ýÌå·þÎñÆ÷½â¾ö¹æ»®£¬Nginx×ÔÉíÊÇ¿ªÔ´Ãâ·ÑµÄ£¬Õâ´ó´ó½µµÍÁËÊÓÆµ·Ö·¢µÄ³É±¾?¡£
Æä¸ßЧµÄ×ÊÔ´ÀûÓÃÂÊÒ²ÒâζןüµÍµÄÓ²¼þͶÈë¡£³ÉÊìµÄÉú̬ϵͳ£ºNginxÕ¼ÓÐÖØ´óµÄÓû§ÈºÌåºÍ»îÔ¾µÄÉçÇø£¬ÕâÒâζ×Å·á˶µÄÎĵµ¡¢½Ì³ÌºÍ½â¾öÎÊÌâµÄ¹æ»®¡£Óöµ½ÄÑÌâʱ£¬×ÜÄÜÕÒµ½ÏàÓ¦µÄÖ§³Ö¡£
ҪʵÏÖÊÓÆµµÄ˳³©?²¥·Å£¬Àë²»¿ª¸÷ÀàÁ÷ýÌåºÍ̸µÄÖ§³Ö?¡£Nginx¿ÉÄÜͨ¹ý·ÖÆçµÄÄ£¿éºÍÅäÖã¬Ö§³Ö¶àÖÖÖ÷Á÷ºÍ̸£º
RTMP(Real-TimeMessagingProtocol)£ºRTMPÊÇÒ»ÖÖ»ùÓÚTCPµÄÁ÷ýÌå´«ÊäºÍ̸£¬ÖØÒªÓÃÓÚÖ±²¥³¡¾°¡£Ëü¿ÉÄÜʵÏÖµÍÑÓ³¤µÄʵʱÒôÊÓÆµ´«Ê䣬¼«¶ÈÊʺÏÓÎÏ·Ö±²¥¡¢ÔÚÏß½ÌÓýµÈ¶ÔʵʱÐÔÒªÇ󼫸ߵÄÀûÓá£NginxÉçÇø°æ×ÔÉí²¢²»Ö±½ÓÖ§³ÖRTMPºÍ̸£¬µ«Í¨¹ý°²?×°nginx-rtmp-moduleÕâ¸öµÚÈý·½Ä£¿é£¬Nginx¾ÍÄÜÒ¡ÉíÒ»±ä£¬³ÉΪ׳´óµÄRTMP·þÎñÆ÷£¬³ÐÔØÖ±²¥ÍÆÁ÷ºÍ²¥·Å¡£
ÍÆÁ÷£ºÖ±²¥Ô´£¨ÈçOBS¡¢FFmpeg£©½«ÒôÊÓÆµÊý¾Ýͨ¹ýRTMPºÍÌ¸ÍÆË͵½Nginx·þÎñÆ÷¡£ÀÁ÷£º¹Û¶à¶ËµÄ²¥·ÅÆ÷£¨ÈçVLC¡¢JWPlayer£©Í¨¹ýRTMPºÍ̸´ÓNginx·þÎñÆ÷Àȡֱ²¥Á÷¡£
HLS(HTTPLiveStreaming)£ºHLSÊÇÆ»¹û¹«Ë¾ÍƳöµÄÒ»ÖÖ»ùÓÚHTTPµÄÁ÷ýÌå´«ÊäºÍ̸¡£Ëü½«ÊÓÆµÇзֳÉһϵÁÐÓ×µÄ.tsýÌ寬¶ÎÎļþ£¬²¢Ìṩһ¸ö.m3u8µÄ²¥·ÅÁбíÎļþ¡£HLSµÄÓÅÊÆÔÚÓÚÆä¼æÈÝÐÔÇ¿£¬ÏÕЩËùÓеÄÉ豸ºÍä¯ÀÀÆ÷¶¼Ö§³Ö¡£
ËüÀûÓÃHTTPºÍ̸´«Ê䣬Òò¶øÄܹ»ºÜºÃµØÀûÓÃÏÖÓеÄCDN£¨ContentDeliveryNetwork£©»ù´¡ÉèÊ©£¬ÊµÏÖÈ«ÇòÁìÓòÄڵļ±¾ç·Ö·¢¡£
·Ô쬣ºNginxÄܹ»Í¨¹ýngx_http_slice_module»òµÚÈý·½Ä£¿é£¨Èçnginx-http-flv-module¹²Í¬FFmpeg£©½«ÊÓÆµÇзֳÉ.tsÎļþ¡£²¥·ÅÁÐ±í£ºÌìÉú.m3u8Îļþ£¬Ö¸ÏòÕâЩ.tsÎļþ¡£
²¥·Å£º²¥·ÅÆ÷ͨ¹ýHTTPÒªÇó.m3u8Îļþ£¬¶øºó°¤´ÎÏÂÔØ.tsÎļþ½øÐв¥·Å¡£
DASH(DynamicAdaptiveStreamingoverHTTP)£ºDASHÊÇÒ»ÖÖÊ¢¿ª³ß¶ÈµÄ×ÔÊÊÓ¦±ÈÌØÂÊÁ÷ýÌåºÍ̸£¬ÓëHLSÀàËÆ£¬Ò²ÊÇ»ùÓÚHTTP¡£DASHµÄÖ÷Ìâ˼ÏëÊÇÆ¾¾ÝÍøÂç´ø¿íºÍÉ豸»úÄÜ£¬¶¯Ì¬µØÎªÓû§Ñ¡Ôñ×îÏàÒ˵ÄÊÓÆµÂëÂÊ£¬´Ó¶øÊµÏÖÁ÷³©µÄ²¥·ÅÂÄÀú£¬¼´±ãÔÚÍøÂçµßô¤µÄÇé¿öÏÂÒ²ÄÜÓÐЧԤ·À¿¨¶Ù¡£
·Ö¶Î£ºÀàËÆÓÚHLS£¬DASHÒ²½«ÊÓÆµÇзֳÉÓ׶Ρ£MPD(MediaPresentationDescription)£ºÒ»¸öXMLÎļþ£¬ÃèÊöÁËÊÓÆµµÄ¿ÉÓ÷ֱæÂÊ¡¢±ÈÌØÂÊ¡¢¹¦·òÐÅÏ¢µÈ¡£²¥·Å£º²¥·ÅÆ÷½âÎöMPDÎļþ£¬Æ¾¾ÝÍøÂçÇé¿ö¶¯Ì¬Ñ¡ÔñÏÂÔØ·ÖÆçÖÊÁ¿µÄ?ÊÓÆµÆ¬¶Î¡£
ÈÃÎÒÃÇ´Ó×î³£?¼ûÒ²ÊÇ×îÓдú±í?ÐÔµÄRTMPÖ±²¥ÆðÍ·£¬ÂÄÀúNginxµÄÊÓÆµ²¥·ÅÄÜÁ¦¡£
×°ÖÃNginx£ºÈ·±£ÄãµÄ·þÎñÆ÷ÉÏÒÑ×°ÖÃNginx¡£ÏÂÔØnginx-rtmp-module£ºÄã±ØÒª´ÓGitHubÏÂÔØnginx-rtmp-moduleµÄÔ´Âë¡£
ÏÂÔØNginxÔ´Â룺´ÓNginx¹ÙÍøÏÂÔØÄãÏëÒªµÄNginx°æ±¾ÔÂë¡£ÏÂÔØnginx-rtmp-module£º´ÓÆäGitHub²Ö¿âÏÂÔØ¡£½âѹ²¢±àÒ룺bashcd/path/to/nginx/source./configure--add-module=/path/to/nginx-rtmp-module--prefix=/usr/local/nginx...(ÆäËûÄã±ØÒªµÄ?ÅäÖÃÑ¡Ïî)makemakeinstall°ÑÎÈ£ºÈôÊÇÄãÒѾװÖÃÁËNginx£¬²¢ÇÒ²»½öÔ¸³ÁбàÒ룬Äܹ»Ë¼¿¼Ê¹ÓÃÔ¤±àÒëºÃµÄNginx°ü£¬»òÕß²éÕÒÖ§³Ö¶¯Ì¬¼ÓÔØRTMPÄ£¿éµÄ°æ±¾¡£
µ«ÔÚÏÖʵ³ö²ú»·¾³ÖУ¬´ÓÔ´Âë±àÒëͨ³£ÊÇ×î¼ÑÑ¡Ôñ£¬Äܹ»È·±£Ä£¿éµÄ¼æÈÝÐԺͲ»±äÐÔ¡£
±à×ëNginxµÄÖ÷ÅäÖÃÎļþ(nginx.conf)£¬Ôö³¤RTMPÄ£¿éµÄÅäÖãº
worker_processesauto;#ƾ¾ÝCPUÖ÷ÌâÊý×Ô¶¯ÉèÖÃevents{worker_connections1024;#ÿ¸öworker¹ý³ÌµÄ×î´óÏνÓÊý}http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;server{listen80;server_namelocalhost;location/{roothtml;indexindex.htmlindex.htm;}}}#RTMPÄ£¿éÅäÖÃrtmp{server{listen1935;#RTMPĬÈ϶˿Úchunk_size4096;applicationlive{liveon;#¿ªÆôÖ±²¥Ä£Ê½recordoff;#²»Â¼Ô죬ÈôÊDZØÒªÂ¼ÔìÖ±²¥Äܹ»ÉèΪonallowpublish127.0.0.1;#ÔÊÐí±¾?µØÍÆÁ÷denypublishall;#²»ÈÝÆäËûIPÍÆÁ÷£¨Æ¾¾ÝÏÖʵÐèÒªµ÷Õû£©allowplayall;#ÔÊÐíËùÓÐIP²¥·Å}}}
sudo/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf
ʹÓÃFFmpeg»òOBSµÈÍÆÁ÷¹¤¾ß£¬½«ÊÓÆµÁ÷ÍÆË͵½ÄãµÄNginxRTMP·þÎñÆ÷£º
FFmpegÍÆÁ÷ºÅÁîʾÀý£ºbashffmpeg-re-iinput.mp4-ccopy-fflvrtmp://your_server_ip/live/stream_keyÆäÖÐinput.mp4ÊÇÄãÒªÍÆÁ÷µÄÊÓÆµÎļþ£¬your_server_ipÊÇÄãµÄNginx·þÎñÆ÷IPµØÖ·£¬stream_keyÊÇÒ»¸ö×Ô½ç˵µÄÁ÷Ãû³Æ£¬ÀýÈçtest_stream¡£
ʹÓÃÖ§³ÖRTMPºÍ̸µÄ²¥·ÅÆ÷£¨ÈçVLC£©£¬ÔÚ²¥·ÅµØÖ·ÖÐÊäÈërtmp://your_server_ip/live/stream_key¼´¿ÉÅÔ¹ÛÖ±²¥¡£
ÖÁ´Ë?£¬ÎÒÃÇÒѾ³É¹¦´î½¨ÁËÒ»¸ö»ù´¡µÄNginxRTMPÖ±²¥?·þÎñÆ÷£¬²¢ÊµÏÖÁËÍÆÁ÷ºÍ²¥·ÅµÄ³õ²½²âÊÔ¡£Õâ½ö½öÊÇNginxÊÓÆµ²¥·ÅÄÜÁ¦µÄ±ùɽһ½Ç£¬±ÉÈËÒ»²¿ÃÅ£¬ÎÒÃǽ«Éî¿Ì̽ÇóNginxÔÚHLSºÍDASHºÍ̸ϵÄÀûÓã¬ÒÔ¼°ÈôºÎͨ¹ý¸÷ÀàÓÅ»¯¼¿Á©£¬½øÒ»²½ÌáÉýÊÓÆµ²¥·ÅµÄ»úÄܺÍÓû§ÂÄÀú¡£
ÔÚ°ÑÎÕÁËNginxRTMPµÄ»ù´¡´î½¨ºó£¬ÎÒÃǽøÒ»²½Éî¿Ì£¬Ë÷ÇóNginxÔÚHLSºÍDASHµÈHTTP-basedÁ÷ýÌåºÍ̸ÖеÄÀûÓ㬲¢½ø½¨ÈôºÎͨ¹ýһϵÁÐÓÅ»¯Õ½Êõ£¬´òÔì¸ü²»±ä¡¢¸ü¸ßЧ¡¢¸ü¾ßÓû§ÂÄÀúµÄÊÓÆµÁ÷ýÌåÆ½Ì¨¡£
ÓëRTMP·ÖÆç£¬HLSºÍDASHÀûÓÃHTTPºÍ̸½øÐд«Ê䣬ÕâʹµÃ?NginxµÄÔÓÐÓÅÊÆµÃÒÔ³ä·Ö²ûÑ²¢ÇÒ¿ÉÄÜÓëÏÖÓеÄWeb·þÎñÆ÷ºÍCDN»ù´¡ÉèÊ©Î޷켯³É¡£
ʵÏÖHLS/DASHÖ±²¥Í¨³£±ØÒªÒ»¸ö¡°Ã½Ìå·þÎñÆ÷¡±À´ÕƹÜÊÓÆµµÄ?תÂë¡¢·Ô쬺ʹò°ü¡£Nginx×ÔÉí²»Ö±½ÓÌṩ׳´óµÄתÂëÖ°ÄÜ£¬µ«ËüÄܹ»Í¨¹ýÓëFFmpegµÈ¹¤¾ßµÄ¹²Í¬£¬»òÕß¼¯³ÉרÃŵÄýÌå·þÎñÆ÷Ä£¿é£¨ÈçNginx-Media-Streaming-Module£©£¬À´ÊµÏÖHLS/DASHµÄÖ±²¥¡£
ÍÆÁ÷£ºÖ±²¥Ô´£¨ÈçOBS£©½«ÔʼÊÓÆµÁ÷ÍÆË͵½Nginx¡£×ªÂëÓë·Ô쬣¨¹Ø¼ü»·½Ú£©£º¹æ»®Ò»£ºNginx+FFmpeg¡£Nginx½Ó¹ÜRTMPÁ÷£¬¶øºóͨ¹ýexecÖ¸Áî»òngx_http_flv_moduleŲÓÃFFmpeg¶ÔRTMPÁ÷½øÐÐʵʱתÂë¡¢ÇÐÆ¬£¬²¢ÌìÉúHLS/DASHÌåʽµÄÎļþ£¨.tsË鯬ºÍ.m3u8/.mpdÁÐ±í£©¡£
¹æ»®¶þ£ºNginx+ýÌå·þÎñÆ÷¡£Nginx½Ó¹ÜRTMPÁ÷£¬×ª·¢¸ø×¨ÃŵÄýÌå·þÎñÆ÷£¨ÈçSRS,Wowza,Nginx-RTMP-Module¹²Í¬FFmpeg£©£¬ÓÉýÌå·þÎñÆ÷ʵÏÖתÂëºÍ·Ô쬣¬¶øºóNginxÔÙ½«ÌìÉúµÄÎļþͨ¹ýHTTP·þÎñÌṩ³öÈ¥¡£
HTTP·þÎñ£ºNginx×÷ΪWeb·þÎñÆ÷£¬ÕƹÜÌṩ.m3u8/.mpdÎļþÒÔ¼°.tsýÌ寬¶Î¡£ÀÁ÷£º¹Û¶à¶ËµÄ²¥·ÅÆ÷ͨ¹ýHTTPÒªÇó.m3u8/.mpdÎļþ£¬¶øºóƾ¾ÝÁÐ±í°¤´ÎÏÂÔØ.tsÎļþ½øÐв¥·Å¡£
Èç¹ûÎÒÃÇʹÓÃFFmpeg½«RTMPÁ÷תΪHLS£¬²¢½«HLSÎļþ´æ´¢ÔÚNginxµÄij¸öĿ¼Ï¡£
#...(httpÄ£¿éÅäÖÃ)...#Èç¹ûFFmpegÒÑÅäÖú㬽«RTMPÁ÷תΪHLSÎļþµ½/var/www/hls/#²¢ÇÒNginx¼à¿Ø¸ÃĿ¼ÒÔÌṩ·þÎñserver{listen80;server_nameyour_video_domain.com;location/hls{alias/var/www/hls;#HLSÎļþ´æ´¢?Ŀ¼add_headerCache-Controlno-cache;types{application/vnd.apple.mpegurlm3u8;video/mp2tts;}}#...ÆäËûÅäÖÃ...}#RTMPÄ£¿éÅäÖÃ(ÓÃÓÚ½Ó¹ÜÍÆÁ÷£¬²¢¿É¹²Í¬execŲÓÃFFmpeg)rtmp{server{listen1935;chunk_size4096;applicationlive{liveon;recordoff;allowpublish127.0.0.1;#ÔÊÐíÍÆÁ÷allowplayall;#¹²Í¬FFmpeg½«RTMPתΪHLS(ÕâÊÇÒ»¸ö¼ò»¯µÄʾÒ⣬ÏÖʵÅäÖûá¸ü¸´ÔÓ)#trigger_play_actionon;#¹²Í¬ffmpegʵʱתÂë#hlson;#hls_path/var/www/hls;#HLSÎļþÊäǰ·×Ó#hls_fragment5s;#HLSƬ¶Îʱ³¤#hls_playlist_length60s;#²¥·ÅÁÐ±í³¤¶È}}}
×¢Ã÷£ºÉÏÊöRTMPÅäÖÃÖеÄhlsonµÈÊÇnginx-rtmp-moduleÌṩHLSÖ±²¥µÄÖ°ÄÜ£¬Ëü»áÔÚºó¶ÜŲÓÃFFmpeg½øÐÐתÂëºÍÇÐÆ¬¡£ÈôÊÇʹÓÃ±í²¿FFmpeg¾ç±¾?£¬Ôò±ØÒª¸ü¾«ÃܵÄÅäÖá£
µã²¥?³¡¾°Ï£¬ÊÓÆµÎļþÒѾÌìÉú½áÊø£¬NginxµÄ½ÇÉ«¾Í¼ò»¯Îª¸ßЧµÄHTTPÎļþ·þÎñÆ÷¡£
ÊÓÆµ´æ´¢£º½«ÊÓÆµÎļþ£¨Èç.mp4£©ºÍ¶ÔÓ¦µÄHLS/DASHÌåʽÎļþ£¨.m3u8/.mpd+.ts/.mp4·Ô쬣©´æ´¢ÔÚNginx¿É½Ó¼ûµÄĿ¼Ï¡£
server{listen80;server_nameyour_vod_domain.com;location/vod/{alias/path/to/your/video/files/;#ÊÓÆµÎļþ´æ·ÅĿ¼autoindexon;#¿ÉÑ¡£¬¿ªÆôĿ¼ÁÐ±í£¬·½±ãµ÷ÊÔ#ΪHLS/DASHÅäÖÃMIMEÀàÐÍtypes{application/vnd.apple.mpegurlm3u8;video/mp2tts;application/dash+xmlmpd;video/mp4mp4;#ÈôÊÇÊÇDASHMp4»òÕßͨ³£mp4}#Õë¶ÔHLS/DASHµÄ»º´æÕ½Êõlocation~\.(m3u8|mpd)${add_headerCache-Controlno-cache;#²¥·ÅÁÐ±í²»½¨ÒéÇ¿»º´æ}location~\.(ts|mp4)${#ýÌ寬¶ÎÄܹ»Ë¼¿¼»º´æ£¬Æ¾¾ÝÏÖʵÇé¿öµ÷Õûexpires1d;add_headerCache-Controlpublic;}}}
ÎÞÂÛÊÇÔÚÖ±²¥»¹Êǵ㲥³¡¾°Ï£¬NginxµÄ»úÄܺÍÓû§ÂÄÀú¶¼Äܹ»Í¨¹ýÒÔϲß?ÂÔ½øÐдó·ùÌáÉý£º
ÓÅÊÆ£ºHTTP/2ºÍHTTP/3Ö§³Ö¶à·¸´Óã¨Multiplexing£©ºÍÍ·²¿Ñ¹Ëõ£¨HeaderCompression£©£¬¿ÉÄÜÏÔÖøÏ÷¼õ¼ÓÔØ¹¦·ò£¬ÓÈÆäÊÇÔÚ¼ÓÔØHLS/DASHµÄ´óÁ¿Ó×Îļþʱ¡£HTTP/3»¹ÒýÈëÁËQUICºÍ̸£¬½øÒ»²½½µµÍÁËÑÓ³¤?ºÍ¶ª°üÓ°Ïì¡£
ÅäÖãºnginxserver{listen443sslhttp2;#¿ªÆôHTTPSºÍHTTP/2#...SSLÖ¤ÊéÅäÖÃ...}HTTP/3±ØÒª¶î±íµÄÅäÖúÍÖ§³Ö£¬Í¨³£±ØÒªNginx±àÒëʱ¼¯³Éngtcp2»òquicheµÈ¿â¡£
ä¯ÀÀÆ÷»º´æ£º¶ÔÓÚ²»¶Ïʱ¸Ä¹ÛµÄ¾²Ì¬Îļþ£¨È粿Ãŵ㲥µÄýÌ寬¶Î£©£¬Äܹ»ÉèÖúÏÀíµÄexpiresºÍCache-ControlÍ·£¬ÈÃä¯ÀÀÆ÷»º´æÕâЩÎļþ£¬Ï÷¼õ³Á¸´ÏÂÔØ¡£CDN»º´æ£º½«Nginx×÷Ϊ»ØÔ´·þÎñÆ÷£¬½ÓÈëCDN¡£CDN¿ÉÄÜ»º´æÊÓÆµÎļþµ½È«Çò¸÷µØµÄ½Úµã£¬Óû§Äܹ»´ÓÀë×Ô¼º×î½üµÄ½Úµã»ñÈ¡ÄÚÈÝ£¬¼«´óµØ½µµÍÑÓ³¤?£¬·Ö¹ÜNginxµÄѹÁ¦¡£
NginxµÄÅäÖÃӦȷ±£»ØÔ´ÒªÇóµÄÕýÈ·ÐÔ£¬²¢ºÏÀíÉèÖÃCache-Control¡£
ÓÅÊÆ£º¶Ô.m3u8ºÍ.mpdµÈ?Îı¾Îļþ½øÐÐGzipѹËõ£¬Äܹ»¼õÓ×´«ÊäÌå»ý£¬¼Ó¿ìÎļþÏÂÔØ¿ìÂÊ¡£ÅäÖãºnginxgzipon;gzip_typestext/plaintext/cssapplication/jsonapplication/javascriptapplication/x-javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascriptimage/svg+xml;gzip_proxiedany;#¶Ô´úÀíµÄÏìÓ¦Ò²½øÐÐѹËõ
tcp_nodelayon;½ûÓÃNagleËã·¨£¬Ê¹µÃÓ×µÄÊý¾Ý°ü¿ÉÄܵ±¼´·¢ËÍ£¬¼õÓ×ÑÓ³¤£¬¶ÔʵʱÐÔÒªÇó¸ßµÄÖ±²¥?³¡¾°ÓÈÆäÓÐÒæ¡£tcp_nopushon;ÔÊÐí·¢ËÍÒ»¸ö´øº±¼û¾ÝµÄ×îºóÒ»¸öTCP¶Î£¬Ö®ºóÊÇ´øÓÐEOF±êÖ¾µÄÊý¾Ý°ü£¬ÕâÑùÄܹ»Ï÷¼õÍøÂç´«ÊäµÄ±¨ÎĶÎÊýÁ¿£¬Ìá¸ßЧÄÜ¡£
worker_processesauto;£ºÈÃNginxƾ¾ÝCPUÖ÷ÌâÊý×Ô¶¯µ÷Õû¹¤×÷¹ý³ÌÊýÁ¿¡£worker_connections1024;£ºÆ¾¾Ý·þÎñÆ÷ÄÚ´æºÍÏÖʵ²¢·¢ÐèÒªµ÷Õûÿ¸öworker¹ý³ÌµÄ×î´óÏνÓÊý¡£
client_body_buffer_size£ºÉèÖÿͻ§¶ËÒªÇóÌåµÄ?»º³åÇø´óÓ×£¬¶Ô´¦ÖôóÎļþÉÏ´«»òWebSocketÏνÓÓÐÓ°Ïì¡£proxy_buffer_sizeºÍproxy_buffers£ºÈôÊÇNginx×÷Ϊ·´Ïò´úÀí£¬±ØÒªºÏÀíÅäÖÃÕâЩ²ÎÊý£¬ÒÔÌá¸ßºó¶Ë·þÎñÆ÷µÄÏìÓ¦¿ìÂÊ¡£
¼øÈ¨£º¶ÔÓÚÖ±²¥»òµã²¥ÄÚÈÝ£¬Äܹ»ÊµÏÖURLÊðÃû¡¢TokenÈÏÖ¤µÈ»úÔ죬Ԥ·ÀµÁÁ´¡£½Ó¼û½ÚÔ죺ʹÓÃallowºÍdenyÖ¸ÁîÏÞ¶ÈÌØ¶¨IP»òÍøÂçµÄ½Ó¼û¡£HTTPS£ºÇ¿ÁÒ½¨ÒéʹÓÃHTTPS¼ÓÃÜ´«Ê䣬±£»¤Êý¾Ý°²È«ºÍÓû§ÒþÖÔ¡£
µ±ÊÓÆµÁ÷Á¿¼¤Ôöʱ£¬µ¥Ì¨Nginx·þÎñÆ÷½«ÄÑÒÔ½ÓÊÜ¡£Õâʱ£¬NginxÄܹ»×÷ΪCDNµÄ³ÁÒª×é³É²¿ÃÅ£º
±ßÔµ½Úµã£ºNginx²¿ÊðÔÚCDNµÄ¸÷¸ö±ßÔµ½Úµã£¬»º´æ´óÁ¿µÄÊÓÆµÄÚÈÝ¡£µ±Óû§ÌáÒéÒªÇóʱ£¬ÒªÇó»á·Óɵ½ÀëÓû§×î½üµÄ±ßÔµ½Úµã£¬´ÓNginx½ÚµãÖ±½Ó»ñÈ¡ÊÓÆµ£¬ÊµÏÖµÍÑÓ³¤¡¢¸ß¿ìÂʵIJ¥·Å¡£»ØÔ´£ºµ±±ßÔµ½Úµã»º´æÖÐûÓÐЧ»§±ØÒªµÄÊÓÆµÊ±£¬Nginx»áÏòÔ´Õ¾£¨¿ÉÄÜÒ²ÊÇÒ»¸öNginx¼¯Èº»òרÃŵĴ洢·þÎñÆ÷£©ÌáÒé»ØÔ´ÒªÇ󣬻ñÈ¡ÊÓÆµ²¢»º´æµ½±ßÔµ½Úµã£¬¶øºó·µ»Ø¸øÓû§¡£
¸ºÔØÆ½ºâ£ºNginxÒ²Äܹ»²¿ÊðÔÚÔ´Õ¾×÷Ϊ¸ºÔØÆ½ºâÆ÷£¬½«À´×ÔCDN±ßÔµ½ÚµãµÄÒªÇó·Ö·¢µ½ºó¶ËµÄ¶à¸öýÌå·þÎñÆ÷»ò´æ´¢·þÎñÆ÷£¬È·±£Ô´Õ¾µÄ²»±äÐԺ͸߿ÉÓÃÐÔ¡£
NginxÒÔÆä׿ԽµÄ»úÄÜ¡¢½Ã½ÝµÄÅäÖúÍ׳´ó?µÄ?ÉçÇøÖ§³Ö£¬ÔÚÊÓÆµÁ÷ýÌåÁìÓòչʾ³ö¾Þ´óµÄDZÁ¦¡£´Ó×î³õµÄRTMPÖ±²¥£¬µ½HLS¡¢DASHµÄ¿í·ºÀûÓã¬ÔÙµ½×÷ΪCDNÖ÷Ìâ½Úµã·Ö·¢º£Á¿ÊÓÆµ£¬NginxʼÖÕÊǹ¹½¨¸ßЧ¡¢²»±ä¡¢¿ÉÀ©´óÊÓÆµ²¥·Å½â¾ö¹æ»®?µÄÃÎÏëÑ¡Ôñ¡£
ͨ¹ýÉî¿ÌÀí½â¸÷ÀàÁ÷ýÌåºÍ̸£¬²¢½áºÏNginxµÄ¸÷ÀàÓÅ»¯Õ½Êõ£¬ÄúÄܹ»ÇáËÉ´òÔì³öÂú×ãÓû§ÐèÒª¡¢Ìṩ¼«Ö¹ÛÓ°ÂÄÀúµÄÊÓÆµÆ½Ì¨¡£ÎÞÂÛÊÇÓ×ÎÒ¿ª·¢Õß»¹ÊÇ´óÐÍÆóÒµ£¬Nginx¶¼ÄܳÉΪÄúÊÓÆµ·Ö·¢Ö®Â·ÉϵĵÃÁ¦¸±ÊÖ£¬ÖúÄú½âËøÊÓÆµ²¥·ÅмÍÔª¡£