ÔÚÊý×ÖÄÚÈݱ¬Õ¨µÄʱ´ú£¬ÊÓÆµÒÔÆäÖ±¹Û¡¢Éú¶¯µÄÌØÕ÷£¬Ñ¸ËÙ³ÉΪÐÅÏ¢Èö²¥ºÍÓéÀÖÏû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·þÎñÆ÷¡£ÀÁ÷£º¹ÛÖڶ˵IJ¥·ÅÆ÷£¨Èç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;#²»Â¼ÖÆ£¬ÈôÊÇÐèÒªÂ¼ÖÆÖ±²¥¿ÉÒÔÉèΪ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ýÌ寬¶Ï¡£ÀÁ÷£º¹ÛÖڶ˵IJ¥·ÅÆ÷ͨ¹ý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¶¼ÄܳÉΪÄúÊÓÆµ·Ö·¢Ö®Â·ÉϵĵÃÁ¦ÖúÊÖ£¬ÖúÄú½âËøÊÓÆµ²¥·ÅмÍÔª¡£