»Æ½ð³ÇÍøÕ¾

Nginx100%ÊÓÆµÐÔÄÜ£ºÊÍ·ÅÄúµÄÁ÷ýÌåDZÁ¦ £¬ÌåÑ鼫ÖÂÁ÷ͨ_10
ȪԴ£ºÖ¤È¯Ê±±¨Íø×÷ÕߣºÍõÄþ2026-03-05 11:22:35
wwwzqhsauikdwjbfkjabfwqr

nginx-rtmp-moduleµÄÓÅÊÆ£ºÕâ¸öÄ£¿éºÜÊÇǿʢ £¬ËüÔÊÐíNginx³äµ±RTMP·þÎñÆ÷ £¬Ö§³ÖÖ±²¥ÍÆÁ÷¡¢Ö±²¥µã²¥ £¬ÉõÖÁ»¹¿ÉÒÔÌìÉúHLSºÍDASHÁ÷£¨Ò»ÖÖ¡°À­Á÷×ªÍÆ¡±µÄ»ìÏýģʽ£© £¬½øÒ»²½À©Õ¹ÁËNginxÔÚÁ÷ýÌåÁìÓòµÄÓ¦Óá£RTMPÓÅ»¯£ºµ÷½â»º³åÇø£ºÍ¨¹ýrtmp_bufferºÍrtmp_max_bufferÖ¸Áî £¬¿ÉÒÔµ÷½âRTMPµÄ»º³åÇø¾Þϸ £¬ÒÔÓ¦¶ÔÍøÂ粨¶¯¡£

ÍÆÁ÷Óë»ØÔ´£ºÈôÊÇNginx×÷ΪRTMP·þÎñÆ÷ £¬ÐèÒª¹Ø×¢ÍÆÁ÷¶ËµÄ´ø¿íºÍÎȹÌÐÔ¡£ÈôÊÇ×÷ΪRTMP»ØÔ´ £¬ÔòÐèҪȷ±£Ô´Õ¾µÄRTMP·þÎñÎȹÌ¡£

½¹µãÓÅ»¯Õ½ÂÔËÄ£ºÏ꾡Èë΢µÄHTTPÉèÖà £¬½õÉÏÌí»¨£¡

³ýÁËÉÏÊö½¹µãÕ½ÂÔ £¬Ò»Ð©Ï꾡µÄHTTPÉèÖÃͬÑùÄÜΪÊÓÆµÓÅ»¯Ð¢Ë³Á¦Á¿¡£

Keep-AliveÅþÁ¬£ºÆôÓÃHTTPKeep-Alive£¨keepalive_timeoutÖ¸Á¿ÉÒÔ¸´ÓÃTCPÅþÁ¬ £¬ïÔÌ­TCPÈý´ÎÎÕÊֵĿªÏú £¬¹ØÓÚÆµÈÔµÄСÎļþ´«Ê䣨ÈçHLSµÄ.tsƬ¶Ï£©Ð§Âʼ«¸ß¡£HTTP/2ЭÒ飺ÈçǰËùÊö £¬HTTP/2µÄÒýÈëÊÇÊÓÆµ´«ÊäµÄÒ»´ó±¼ÌÚ¡£

HLS/DASHÓÅ»¯£º

»º´æÕ½ÂÔ£ºHLS/DASH½«ÊÓÆµÇзֳÉСµÄýÌ寬¶Ï£¨.ts»ò.mp4£©¡£Nginx¿ÉÒÔÓÐÓõػº´æÕâЩýÌ寬¶ÏÒÔ¼°²¥·ÅÁÐ±í£¨.m3u8»ò.mpd£©¡£Í¨¹ýexpiresÖ¸Áî»òproxy_cacheÖ¸Áî £¬¿ÉÒÔÉèÖúÏÀíµÄ»º´æÕ½ÂÔ £¬ÈÃÓû§Äܹ»¿ìËÙ»á¼ûµ½³£ÓõÄÊÓÆµÆ¬¶Ï¡£

GzipѹËõ£ºËäȻýÌåÎļþ±¾?Éíͨ³£ÒѾ­¾ÙÐÐÁ˱àÂëѹËõ £¬µ«²¥·ÅÁбíÎļþ£¨.m3u8/.mpd£©ºÍһЩԪÊý¾Ý¿ÉÒÔÆôÓÃGzipѹËõ £¬ÒÔ¼õС´«ÊäÌå»ý £¬Ìá¸ß¼ÓÔØËÙÂÊ¡£¿ÉÒÔÔÚhttp»òserver¿éÖÐÉèÖÃgzipon; £¬²¢Æ¾Ö¤ÐèÒªµ÷½âgzip_types¡£

HTTP/2Ö§³Ö£ºÆôÓÃHTTP/2ЭÒé¿ÉÒÔÏÔÖøÌáÉýHLS/DASHµÄÐÔÄÜ¡£HTTP/2Ö§³Ö¶à·¸´Óã¨Multiplexing£© £¬ÔÊÐíÔÚÒ»¸öTCPÅþÁ¬ÉÏͬʱ´«Êä¶à¸öÇëÇóºÍÏìÓ¦ £¬ïÔÌ­ÁËÒò¶à¸öýÌ寬¶ÏÐèÒª½¨Éè¶à¸öÅþÁ¬µÄ¿ªÏú £¬´ó´óÌá¸ßÁ˲¥·ÅЧÂÊ¡£

СÐò£ºÊÓÆµÊ±´úµÄÐÔÄÜÌôÕ½ÓëNginxµÄÒªº¦½ÇÉ«

ÎÒÃÇÕýÉí´¦Ò»¸öÐÅÏ¢±¬Õ¨µÄÊÓÆµÊ±´ú¡£ÎÞÂÛÊÇÓéÀÖ¡¢½ÌÓý¡¢ÊÂÇéÕÕ¾ÉÉç½» £¬ÊÓÆµÄÚÈÝÒÑÉøÍ¸µ½ÎÒÃÇÉúÑĵķ½·½ÃæÃæ¡£¶ÌÊÓÆµµÄáÈÆð¡¢¸ßÇåÄÚÈÝµÄÆÕ¼°ÒÔ¼°Ö±²¥µÄÅÉú³¤ £¬¶¼ÔÚÒÔØ¨¹ÅδÓеÄËÙÂÊÍÆ¶¯×ÅÊÓÆµÊÖÒÕµÄǰ½ø¡£ÔÚÕâ¹ÉÀ˳±Ö®Ï £¬ÊÓÆµ·þÎñÌṩÉ̺ÍÄÚÈÝ´´×÷ÕßÃÇÒ²ÃæÁÙ×ÅÑÏËàµÄÐÔÄÜÌôÕ½£ºÔõÑùÈ·±£º£Á¿Óû§Äܹ»Á÷ͨ¡¢Îȹ̵ØÔ¢Ä¿ÊÓÆµ£¿ÔõÑùÓ¦¶ÔÍ»ÈçÆäÀ´µÄÁ÷Á¿á¯Á룿ÔõÑù×îС»¯ÑÓ³Ù £¬Ìṩ¼´Ê±ÏìÓ¦µÄԢĿÌåÑ飿

ÔÚÖÚ¶àµÄ?½â¾ö¼Æ»®ÖÐ £¬Nginx×÷Ϊһ¿î¸ßÐÔÄܵÄWeb·þÎñÆ÷¡¢·´Ïò´úÀíºÍ¸ºÔØÆ½ºâÆ÷ £¬ÒÔÆä׿ԽµÄÐÔÄÜ¡¢ÎÞаµÄÉèÖúÍǿʢµÄ¹¦Ð§ £¬³ÉΪÁ˹¹½¨¸ßЧÊÓÆµ´«ÊäϵͳµÄ½¹µãÀûÆ÷¡£Ëü²»µ«Äܹ»´¦Öóͷ£´ó×ڵIJ¢·¢ÅþÁ¬ £¬¸üÄÜÔÚÊÓÆµÁ÷ýÌåµÄ´«ÊäÀú³ÌÖÐʩչÖÁ¹ØÖ÷ÒªµÄ×÷Óá£

±¾ÎĽ«ÉîÈë̽ÌÖNginxÔõÑùʵÏÖ¡°100%ÊÓÆµÐÔÄÜ¡± £¬´Ó»ù´¡ÉèÖõ½¸ß¼¶ÓÅ»¯ £¬È«·½Î»ÆÊÎöÆäÔÚÊÓÆµ·þÎñÖеÄÒªº¦×÷Óà £¬×ÊÖúÄú½âËøÁ÷ͨÊÓ½ç £¬³¹µ×Àë±ð¿¨¶Ù°ÃÄÕ¡£

tcp_nodelayon;£º´ËÖ¸Áî»á½ûÓÃNagleËã·¨ £¬ÔÊÐíNginxÁ¬Ã¦·¢ËÍСÊý¾Ý°ü £¬¹ØÓÚÐèÒªµÍÑӳٵij¡¾°£¨ÈçijЩÊÓÆµÁ÷µÄʵʱ¸üУ©ÓÐÒæ¡£µ÷ÓŽ¨Ò飺ͨ³£½¨Ò齫sendfileon; £¬tcp_nopushon;ºÍtcp_nodelayon;һͬÆôÓà £¬ÒÔ»ñµÃ×î¼ÑµÄ´«ÊäÐÔÄÜ¡£

3.ǿʢµÄ?»º´æÉèÖãºproxy_cache,location,expires

proxy_cache_path£º½ç˵»º´æÎļþµÄ´æ´¢Â·¾¶¡¢²ã¼¶½á¹¹¡¢¾ÞϸÏÞÖÆµÈ¡£proxy_cache£ºÆôÓûº´æ £¬²¢Ö¸¶¨»º´æÇøÓò¡£proxy_cache_valid£ºÉèÖòî±ðHTTPÏìÓ¦ÂëµÄ?»º´æÊ±¼ä¡£location¿éÄÚµÄÉèÖ㺿ÉÒÔÕë¶ÔÌØ¶¨URL·¾¶£¨Èç/videos/£©ÉèÖòî±ðµÄ»º´æÕ½ÂÔ £¬È·±£ÊÓÆµÄÚÈݱ»ÓÐÓûº´æ¡£

expires£ºÉèÖÃä¯ÀÀÆ÷»º´æ?ÓâÆÚʱ¼ä £¬ÈÃä¯ÀÀÆ÷Ò²ÄÜ»º´æÊÓÆµ×ÊÔ´ £¬ïÔÌ­·þÎñÆ÷µÄѹÁ¦¡£µ÷ÓŽ¨Ò飺ºÏÀíÍýÏ뻺´æÄ¿Â¼ºÍ¾Þϸ £¬Æ¾Ö¤ÊÓÆµÄÚÈݵÄ?¸üÐÂÆµÂÊÉèÖòî±ðµÄ»º´æÓÐÓÃÆÚ¡£¹ØÓÚ²»¾­³£¸üеÄÊÓÆµ £¬¿ÉÒÔÉèÖýϳ¤µÄ»º´æÊ±¼ä¡£

HTTP/2µÄ¶à·¸´ÓÃÓëÍ·²¿Ñ¹Ëõ£ºHTTP/2ÒýÈëÁ˶à·¸´Óã¨Multiplexing£©µÄ¿´·¨ £¬ÔÊÐíÔÚµ¥¸öTCPÅþÁ¬ÉÏͬʱ·¢ËͶà¸öÇëÇóºÍÏìÓ¦ £¬¶øÎÞÐèÏñHTTP/1.1ÄÇÑùÅÅ¶ÓÆÚ´ý¡£Õâ¹ØÓÚÊÓÆµ´«ÊäÓÈÆäÖ÷Òª £¬ÓÉÓÚÒ»²¿¸ßÇåÊÓÆµÍùÍùÓɶà¸öСÎļþ£¨ÈçÊÓÆµÖ¡¡¢ÒôƵ¿é£©×é³É¡£

¶à·¸´ÓÃÄܹ»ÏÔÖøïÔÌ­ÅþÁ¬½¨ÉèµÄ´ÎÊý £¬½µµÍÑÓ³Ù £¬ÌáÉý¼ÓÔØËÙÂÊ¡£HTTP/2µÄÍ·²¿Ñ¹Ëõ£¨HeaderCompression£©Ò²´ó?´óïÔÌ­ÁË´«ÊäµÄÊý¾ÝÁ¿ £¬½øÒ»²½¼ÓËÙÁËÊÓÆµµÄ¼ÓÔØÀú³Ì¡£Nginx×îа汾ͨÏ꾡Ä廯¹ÜÀíHTTP/2µÄÁ÷ £¬È·±£ÊÓÆµÊý¾ÝµÄ´«ÊäЧÂÊ×î´ó»¯¡£

HTTP/3µÄQUICЭÒ飺HTTP/3ÊÇÏÂÒ»´ú»¥ÁªÍøÐ­Òé £¬Ëü»ùÓÚQUICЭÒé¡£QUICЭÒéÔËÐÐÔÚUDPÖ®ÉÏ £¬½â¾öÁËTCPÔÚ´¦Öóͷ£¶ª°üºÍÅþÁ¬Ç¨áãʱµÄÐÔÄÜÆ¿¾±¡£¹ØÓÚÊÓÆµ´«ÊäÀ´Ëµ £¬ÕâÒâζ×Å×ÝÈ»ÔÚÍøÂç״̬²»¼ÑµÄÇéÐÎÏ £¬ÊÓÆµµÄ¿¨¶ÙÒ²»á´ó´óïÔÌ­ £¬ÑÓ³Ù¸üµÍ £¬ÅþÁ¬½¨Éè¸ü¿ì¡£

NginxÔÚ×îа汾ÖÐÆð¾¢Óµ±§HTTP/3 £¬ÎªÓû§ÌṩÁËÔ½·¢Îȹ̡¢¿É¿¿µÄÊÓÆµ´«?ÊäÌåÑé £¬ÕæÕýʵÏÖÁË¡°100%ÊÓÆµÓÅ»¯¡±µÄ¡°Ë¿»¬¡±¸ÐÊÜ¡£

3.¶¯Ì¬ÄÚÈݼÓËÙÓ뻺´æÕ½ÂÔµÄ?¾«½ø£ºÈÃÊÓÆµ¡°Ã롱µ½Óû§ÑÛǰ

²Ù×÷ϵͳ²ãÃæµÄÓÅ»¯£º

ÎļþÐÎò·ûÏÞÖÆ£ºÔöÌíϵͳ¼¶ºÍÓû§¼¶µÄÎļþÐÎò·ûÏÞÖÆ£¨ulimit-n£© £¬ÒÔÓ¦¶Ôº£Á¿²¢·¢ÅþÁ¬¡£ÍøÂ绺³åÇøµ÷ÓÅ£ºµ÷½âTCPÎüÊÕ»º³åÇø£¨net.core.rmem_max,net.ipv4.tcp_rmem£©ºÍ·¢ËÍ»º³åÇø£¨net.core.wmem_max,net.ipv4.tcp_wmem£© £¬ÒÔ¸üºÃµØË³Ó¦´ó´ø¿í¡¢µÍÑÓ³ÙµÄÍøÂçÇéÐΡ£

TCPÅþÁ¬²ÎÊý£ºÓÅ»¯net.ipv4.tcp_tw_reuse¡¢net.ipv4.tcp_fin_timeoutµÈ²ÎÊý £¬ÒÔ¸üÓÐÓõعÜÀíTCPÅþÁ¬µÄÉúÃüÖÜÆÚ £¬ïÔÌ­TIME_WAIT״̬µÄ×ÊÔ´Õ¼Óá£CPUÇ׺ÍÐÔÓëNUMA£º¹ØÓÚ¶àºËCPU·þÎñÆ÷ £¬½«NginxµÄÊÂÇéÀú³Ì°ó¶¨µ½Ìض¨µÄCPU½¹µã £¬²¢?˼Á¿NUMA¼Ü¹¹µÄÓÅ»¯ £¬¿ÉÒÔïÔÌ­CPU»º´æÊ§Ð§ºÍ¿ç½Úµã»á¼û £¬Ìá¸ßÐÔÄÜ¡£

Ò»¡¢CDN¼°±ßÑØÅÌË㣺ÈøßÇåÊÓÆµ´¥Êֿɼ°

Ëæ×ÅÊÓÆµÏûºÄµÄ±¬Õ¨Ê½ÔöÌí £¬¹Å°åµÄÖÐÐÄ»¯ÄÚÈÝ·Ö·¢Ä£Ê½ÃæÁÙÖØ´óÌôÕ½¡£NginxÔÚ¹¹½¨¸ßЧ¡¢µÍÑÓ³ÙµÄCDN£¨ÄÚÈÝ·Ö·¢ÍøÂ磩ÒÔ¼°Íƶ¯±ßÑØÅÌËãÓ¦Ó÷½Ãæ £¬°ç?ÑÝ×ÅÖÁ¹ØÖ÷ÒªµÄ½ÇÉ«¡£

¹¹½¨¸ßÐÔÄÜCDN½Úµã£ºNginxÒÀ¸½Æä¾«²ÊµÄ¸ºÔØÆ½ºâÄÜÁ¦¡¢¸ßЧµÄ»º´æ»úÖÆºÍÆÕ±éµÄЭÒéÖ§³Ö £¬Êǹ¹½¨CDN±ßÑØ½ÚµãµÄ²»¶þ֮ѡ¡£×îа汾½øÒ»²½ÔöÇ¿ÁËÆä×÷ΪCDN½ÚµãµÄÄÜÁ¦ £¬Äܹ»¸ü¸ßЧµØ»º´æº£Á¿ÊÓÆµÄÚÈÝ £¬²¢Í¨¹ýÖÇÄܵÄ·ÓÉÕ½ÂÔ £¬½«ÄÚÈÝ·Ö·¢µ½ÀëÓû§×î½üµÄ½Úµã¡£

Õâ´ó´óËõ¶ÌÁËÊÓÆµµÄ´«Êä·¾¶ £¬½µµÍÁËÑÓ³Ù £¬ÏÔÖøÌáÉýÁËÓû§Ô¢Ä¿¸ßÇåÊÓÆµµÄ?ÌåÑé £¬ÕæÕýʵÏÖ¡°100%ÊÓÆµ²¥·Å¡±¡£¸³ÄܱßÑØÅÌËã £¬ÊµÏÖÖÇÄÜ·Ö·¢£º±ßÑØÅÌËãÊÇδÀ´ÄÚÈÝ·Ö·¢µÄÖ÷ÒªÇ÷ÊÆ¡£Nginx×îа汾ͨ¹ýÓëLua¡¢JavaScriptµÈ¾ç±¾ÓïÑÔµÄϸ÷缯³É £¬ÒÔ¼°¶ÔWebAssemblyµÄÖ§³Ö £¬Ê¹µÃÔÚCDN±ßÑØ½ÚµãÖ´ÐÐÖØ´óµÄÓªÒµÂß¼­³ÉΪ¿ÉÄÜ¡£

ÕâÒâζ×Å £¬ÊÓÆµÄÚÈݵÄÔ¤´¦Öóͷ£¡¢×ªÂë¡¢¼ÓÃÜ¡¢Óû§ÐÐΪÆÊÎöµÈʹÃü £¬¶¼¿ÉÒÔÔÚÀëÓû§¸ü½üµÄ±ßÑØ·þÎñÆ÷ÉÏÍê³É £¬½øÒ»²½½µµÍÁËÖÐÐÄ»¯·þÎñÆ÷µÄѹÁ¦ £¬²¢ÎªÊµÏÖ¸ü¸öÐÔ»¯¡¢¸üÖÇÄÜ»¯µÄÊÓÆµÍƼöºÍÄÚÈÝ·þÎñÌṩÁË»ù´¡¡£ÀýÈç £¬¿ÉÒÔÔÚ±ßÑØ½ÚµãʵʱÆÊÎöÓû§Ô¢Ä¿Æ«ºÃ £¬¶¯Ì¬µ÷½âÊÓÆµÁ÷µÄ?ÇåÎú¶È»ò±àÂëÃûÌà £¬ÒÔµÖ´ï×î¼ÑµÄ²¥·ÅЧ¹û¡£

Nginx100%ÊÓÆµÁ÷Á¿£ºÊµ¼ùÖ¸ÄÏÓëδÀ´Õ¹Íû

ÔÚǰһ²¿·Ö £¬ÎÒÃÇÏêϸÆÊÎöÁËNginx×îа汾ÔÚÊÓÆµ´¦Öóͷ£ÄÜÁ¦ÉϵĽ¹µãÓÅÊÆ £¬°üÀ¨¼Ü¹¹Ë¢Ð¡¢Ð­ÒéÖ§³Ö¡¢Á÷ýÌåÄ£¿éÔöÇ¿ÒÔ¼°»º´æ»úÖÆµÄÉý¼¶¡£Ö½ÉÏ̸±ø?ÖÕ¾õdz £¬¾øÖª´ËÊÂÒª¹ªÐС£ÒªÕæÕýʵÏÖ¡°100%ÊÓÆµÁ÷Á¿¡±µÄÁ÷ͨÌåÑé £¬»¹ÐèÒªÔÚÏÖʵ°²ÅÅÖÐÔËÓÃÊʵ±?µÄÉèÖü¼ÇÉ £¬²¢?¹Ø×¢ÆäδÀ´µÄÉú³¤Ç÷ÊÆ¡£

±¾²¿·Ö½«ÎªÄúÌṩһÌ×ÏêʵµÄʵ¼ùÖ¸ÄÏ £¬²¢Õ¹ÍûNginxÔÚÊÓÆµÁìÓòµÄ×ÆË¸Î´À´¡£

Èý¡¢ÊµÕ½ÉèÖãºNginx100%ÊÓÆµÁ÷Á¿µÄµ÷ÓÅÃØóÅ

1.¸ß²¢·¢ÅþÁ¬µÄÓÅÑÅ´¦Öóͷ££ºworkerprocesses,workerconnections

worker_processes£º´Ë²ÎÊý¾öÒéÁËNginxÆô¶¯¼¸¶à¸öÊÂÇéÀú³Ì¡£Í¨³£ÉèÖÃΪCPU½¹µãÊý £¬ÒÔ³ä·ÖʹÓöàºË´¦Öóͷ£Æ÷µÄÄÜÁ¦¡£¹ØÓÚÊÓÆµ·þÎñ £¬¸ü¶àµÄworkerÀú³Ì?Òâζ×Å¿ÉÒÔͬʱ´¦Öóͷ£¸ü¶àµÄ?²¢·¢ÅþÁ¬ £¬´Ó¶ø¸üÓÐÓõØÓ¦¶Ôá¯ÁëÁ÷Á¿¡£worker_connections£ºÃ¿¸öÊÂÇéÀú³ÌÄܹ»´¦Öóͷ£µÄ×î´ó²¢·¢ÅþÁ¬Êý¡£

ʵÏÖ¡°100%ÊÓÆµÐÔÄÜ¡±£º½¹µãÉèÖÃÆÊÎö

workerprocessesºÍworkerconnections£ºÌáÉý²¢·¢´¦Öóͷ£ÄÜÁ¦

worker_processes£º½ç˵NginxÊÂÇéÀú³ÌµÄÊýÄ¿¡£Í¨³£ÉèÖÃΪCPU½¹µãÊý»òÁ½±¶CPU½¹µãÊý £¬ÒÔ³ä·ÖʹÓöàºË´¦Öóͷ£Æ÷µÄÓÅÊÆ¡£worker_connections£ºÉèÖÃÿ¸öÊÂÇéÀú³ÌÄܹ»´¦Öóͷ£µÄ×î´ó²¢·¢ÅþÁ¬Êý¡£Õâ¸öÖµÐèҪƾ֤·þÎñÆ÷µÄÏÖʵÄÚ´æºÍ´¦Öóͷ£ÄÜÁ¦¾ÙÐе÷½â £¬µ«¹ØÓÚÊÓÆµ·þÎñ¶øÑÔ £¬ÄþÔ¸ÉèÖõøßһЩ £¬Ò²²»ÒªÈÃÅþÁ¬Êý³ÉΪƿ¾±¡£

keepalivetimeoutºÍkeepaliverequests£ºÓÅ»¯ÅþÁ¬¸´ÓÃ

keepalive_timeout£ºÖ¸¶¨¿Í»§¶ËÅþÁ¬µÄ³¬Ê±Ê±¼ä¡£Êʵ±ÑÓÉì¸ÃÖµ¿ÉÒÔÃãÀø¿Í»§¶Ë¸´ÓÃÒѽ¨ÉèµÄÅþÁ¬ £¬ïÔÌ­ÅþÁ¬½¨ÉèºÍÏú»ÙµÄ¿ªÏú¡£keepalive_requests£ºÉèÖÃÒ»¸ö³¤ÆÚÅþÁ¬ÉÏÔÊÐíµÄ×î¶àÇëÇóÊý¡£ºÏÀíµÄÉèÖÿÉÒÔÆ½ºâÅþÁ¬¸´ÓúͷþÎñÆ÷×ÊÔ´Õ¼Óá£

sendfileºÍtcpnopush/tcpnodelay£º¼ÓËÙÎļþ´«Êä

ngxhttpflv_module(¿ÉÑ¡):¹ØÓÚÐèÒªÖ±²¥?ÍÆÁ÷ºÍµã²¥·þÎñµÄ³¡¾° £¬NginxµÄngx_http_flv_moduleÄ£¿é¿ÉÒÔÌṩFLV·â×°ºÍ·Ö·¢ÄÜÁ¦ £¬µ«¹ØÓÚHLS/DASHÕâÖÖ¸üÏÖ´ú¡¢¸üͨÓõÄЭÒé £¬Í¨³£ÊÇÊ×Ñ¡¡£

1.5»º´æÕ½ÂÔ£ºÁôסӢ»ª £¬¼ÓËÙ»á¼û»º´æÊÇNginxÓÅ»¯ÊÓÆµÁ÷ýÌåÐÔÄܵÄÁíÒ»¸ö½¹µã»·½Ú¡£Í¨¹ýºÏÀíµØ»º´æÊÓÆµÇÐÆ¬ºÍ²¥·ÅÁбí £¬¿ÉÒÔÏÔÖøïÔÌ­»ØÔ´ÇëÇó £¬½µµÍ´ø¿í±¾Ç® £¬²¢ÌáÉýÓû§µÄ»á¼ûËÙÂÊ¡£

proxy_cacheÖ¸Áî:NginxµÄproxy_cacheÖ¸Áî¿ÉÒÔÓÃÀ´»º´æÀ´×ÔÉÏÓηþÎñÆ÷µÄÏìÓ¦¡£¹ØÓÚÊÓÆµµã²¥·þÎñ £¬¿ÉÒÔ½«ÊÓÆµÇÐÆ¬»º´æµ½Nginx·þÎñÆ÷µÄÍâµØ´ÅÅÌÉÏ¡£proxy_cache_path/data/nginx/cachelevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;(½ç˵»º´æÂ·¾¶¡¢ÇøÓò¡¢¾ÞϸºÍʧЧʱ¼ä)proxy_cachemy_cache;(ÔÚlocation¿éÖÐÆôÓûº´æ)expiresÖ¸Áî:ÉèÖÃHTTPÏìӦͷÖеÄExpiresºÍCache-Control £¬Ö¸µ¼ä¯ÀÀÆ÷»òCDN½Úµã¾ÙÐÐÍâµØ»º´æ¡£

ÐÔÄÜ¼à¿ØÓëµ÷ÓÅ£º³Ö?ÐøË¢ÐÂ

¡°100%ÊÓÆµÐÔÄÜ¡±²»ÊÇÒ»õí¶ø¾ÍµÄ £¬ÐèÒªÒ»Á¬µÄ¼à¿ØºÍµ÷ÓÅ¡£

NginxStatusÄ£¿é£ºÆôÓÃNginxµÄstub_statusÄ£¿é £¬¿ÉÒÔʵʱÉó²éNginxµÄÅþÁ¬Êý¡¢ÇëÇóÊýµÈÒªº¦Ö¸±ê¡£µÚÈý·½¼à¿Ø¹¤¾ß£º¼¯³ÉPrometheus¡¢Grafana¡¢ELK(Elasticsearch,Logstash,Kibana)µÈ¹¤¾ß £¬¶ÔNginxµÄÐÔÄÜÖ¸±ê¡¢¹ýʧÈÕÖ¾¡¢»á¼ûÈÕÖ¾¾ÙÐÐÖÜÈ«µÄÍøÂç¡¢ÆÊÎöºÍ¿ÉÊÓ»¯ £¬ÊµÊ±·¢Ã÷ÐÔÄÜÆ¿¾±¡£

ѹÁ¦²âÊÔ£º°´ÆÚ¾ÙÐÐѹÁ¦²âÊÔ £¬Ä£ÄâÕæÊÊÓû§³¡¾° £¬ÕÒ³öNginxÔڸ߸ºÔØÏµÄÐÔÄܼ«ÏÞ £¬²¢Æ¾Ö¤²âÊÔЧ¹û¾ÙÐвÎÊýµ÷½â¡£

proxy_passhttp://origin_server;(ÉèÖûØÔ´µØ?Ö·)proxy_cache_key"$scheme$request_method$host$request_uri";(½ç˵»º´æ¼ü £¬È·±£²î±ðÇëÇóµÄ»º´æ¸ôÀë)proxy_cache_valid20030210m;proxy_cache_valid4041m;(Ϊ²î±ðÏìÓ¦ÂëÉèÖòî±ðµÄ»º´æÓÐÓÃÆÚ)ÓÅ»¯»ØÔ´Õ½ÂÔ:proxy_next_upstream:ÉèÖõ±Ô´·þÎñÆ÷·ºÆð¹ýʧ£¨ÈçÅþÁ¬³¬Ê±¡¢HTTP¹ýʧ£©Ê± £¬NginxÊÇ·ñʵÑéÅþÁ¬ÏÂÒ»¸öÉÏÓηþÎñÆ÷¡£

proxy_connect_timeout,proxy_send_timeout,proxy_read_timeout:ϸÄåµ÷½âÅþÁ¬¡¢·¢ËͺͶÁÈ¡³¬Ê±Ê±¼ä £¬ÒÔÓ¦¶ÔÍøÂç²»Îȹ̵ÄÇéÐÎ £¬×èÖ¹²»ÐëÒªµÄÅþÁ¬ÖÐÖ¹¡£CDN½Úµã¼äµÄЭͬ:ÔÚ¸üÖØ´óµÄCDN¼Ü¹¹ÖÐ £¬Nginx»¹¿ÉÒÔͨ¹ýproxy_cache_revalidateºÍproxy_cache_min_usesµÈÖ¸Áî £¬ÊµÏÖ½Úµã¼äµÄ»º´æÍ¬²½ºÍÓÐÓÃÐÔУÑé £¬½øÒ»²½Ìá¸ßÕûÌ建´æÖÀÖÐÂÊ¡£

µ«?¹ØÓÚÏÖʵµÄÔËÓªÕß¶øÑÔ £¬¹âÓÐǿʢµÄÊÖÒÕÊÇÔ¶Ô¶²»·óµÄ £¬ÔõÑù½«Æäת»¯Îª¿´µÃ¼ûµÄÐÔÄÜÌáÉý £¬ÔõÑùͨ¹ý¾«ÃîµÄÉèÖÃÈ÷þÎñÆ÷ʩչ×î´óЧÄÜ £¬²ÅÊÇÒªº¦ËùÔÚ¡£±¾²¿·Ö½«¾Û½¹ÓÚNginx×îа汾ÔÚÏÖʵӦÓÃÖеÄÉèÖÃÕ½ÂÔºÍÐÔÄܱ¼ÌÚ £¬×ÊÖúÄú½âËøÊÓÆµ·þÎñµÄмÍÔª¡£

Ò»¡¢Ï¸Ä廯ÉèÖ㺽«NginxµÄ¡°100%ÊÓÆµÓÅ»¯¡±±äΪÏÖʵ

NginxµÄǿʢ֮´¦ £¬²»µ«ÔÚÓÚÆäµ×²ã¼Ü¹¹ £¬¸üÔÚÓÚÆä¸ß¶ÈÎÞаµÄÉèÖÃÄÜÁ¦¡£ÒªÊµÏÖ¡°100%ÊÓÆµÓÅ»¯¡± £¬ÐèÒª¶ÔNginx¾ÙÐÐһϵÁÐϸÄ廯µÄÉèÖà £¬ÒÔ³ä·ÖÑéÕ¹ÆäÔÚÊÓÆµ´«Êä·½ÃæµÄDZÄÜ¡£

1.ÓÅ»¯ÅþÁ¬Ó뻺³åÇøÉèÖãºÎªÊÓÆµÊý¾ÝÁ÷¡°ÆÌƽõè¾¶¡±

worker_connections£ºÕâ¸ö²ÎÊý¾öÒéÁËÿ¸öNginxÊÂÇéÀú³ÌÄܹ»Í¬Ê±´¦Öóͷ£µÄ×î´óÅþÁ¬Êý¡£¹ØÓÚÊÓÆµ·þÎñÆ÷¶øÑÔ £¬Í¨³£ÐèÒª´¦?Àí´ó×ڵIJ¢·¢ÅþÁ¬ £¬Òò´ËÐèҪƾ֤·þÎñÆ÷µÄÓ²¼þ×ÊÔ´ºÍÏÖʵµÄ²¢·¢ÐèÇó £¬ºÏÀíÉèÖÃworker_connectionsµÄÖµ¡£

Ò»Ñùƽ³£¶øÑÔ £¬½«ÆäÉèÖÃΪһ¸ö½Ï´óµÄÊýÖµ £¬Èç1024¡¢4096ÉõÖÁ¸ü¸ß £¬Äܹ»ÓÐÓÃÌáÉý·þÎñÆ÷Ôڸ߲¢·¢³¡¾°ÏµĴ¦Öóͷ£ÄÜÁ¦¡£

»º³åÇøÓÅ»¯£ºNginxʹÓûº³åÇøÀ´´¦Öóͷ£ÇëÇóºÍÏìÓ¦Êý¾Ý¡£¹ØÓÚÊÓÆµÕâÖÖ´óÊý¾ÝÁ¿µÄ´«Êä £¬ºÏÀíµÄ»º³åÇøÉèÖÃÖÁ¹ØÖ÷Òª¡£

Ò»¡¢Àë±ð¿¨¶Ù£ºNginxÔõÑù³ÉΪÊÓÆµÓÅ»¯µÄ¡°ËÙÂʼÌÐø?¡±

ÔÚµ±½ñÐÅÏ¢±¬Õ¨µÄʱ´ú £¬ÊÓÆµÒѾ­³ÉΪ×îÊܽӴýµÄÄÚÈÝÏûºÄÐÎʽ֮һ¡£ÎÞÂÛÊǾ«²ÊµÄÈüÊÂÖ±²¥¡¢ÒýÈËÈëʤµÄÓ°ÊӾ缯 £¬ÕÕ¾ÉÉú¶¯ÓÐȤµÄ?½Ìѧ¶ÌƬ £¬Á÷ͨµÄԢĿÌåÑéÊÇÓû§×î»ù±¾Ò²ÊÇ×îÖ÷ÒªµÄÐèÇó¡£·þÎñÆ÷´ø¿íȱ·¦¡¢ÍøÂçÑÓ³Ù¡¢²¢·¢Óû§¹ý¶àµÈÎÊÌâ £¬¾­³£ÈÃÓû§ÔÚԢĿÊÓÆµÊ±±¥ÊÜ¿¨¶Ù¡¢¼ÓÔØ»ºÂýÖ®¿à¡£

ÐÒÔ˵ÄÊÇ £¬Nginx £¬Õâ¸öÒÔ¸ßÐÔÄÜ¡¢¸ß²¢·¢Öø³ÆµÄWeb·þÎñÆ÷ £¬ÒÀ¸½ÆäǿʢµÄ¹¦Ð§ºÍÎÞаµÄÉèÖà £¬Äܹ»³ÉΪ½â¾öÊÓÆµÓÅ»¯ÄÑÌâµÄ¡°ËÙÂʼÌÐø¡±¡£

NginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµÓÅ»¯ÁìÓò´ó·ÅÒì²Ê £¬Àë²»¿ªÆä¾«ÃîµÄ¼Ü¹¹Éè¼ÆºÍһϵÁиßЧµÄÄ£¿é¡£Nginx½ÓÄÉÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄÊÂÇéģʽ £¬ÕâÒâζ×ÅËü¿ÉÒÔͬʱ´¦Öóͷ£³ÉǧÉÏÍò¸ö²¢·¢ÅþÁ¬ £¬¶ø²»»áÏñ¹Å°åµÄApache·þÎñÆ÷ÄÇÑùΪÿ¸öÅþÁ¬½¨ÉèÒ»¸ö×ÔÁ¦µÄÀú³Ì»òÏß³Ì £¬´Ó¶ø¼«´óµØ½µµÍÁË·þÎñÆ÷µÄ×ÊÔ´ÏûºÄ £¬ÌáÉýÁË´¦Öóͷ£ÄÜÁ¦¡£

¹ØÓÚÊÓÆµÕâÖÖÐèÒªÒ»Á¬¡¢´ó×ÚÊý¾Ý´«ÊäµÄÓ¦Óó¡¾°¶øÑÔ £¬ÕâÖÖ¸ßЧµÄ²¢·¢´¦Öóͷ£ÄÜÁ¦ÊÇÖÁ¹ØÖ÷ÒªµÄ¡£

5.Çå¾²¼Ó¹Ì£ºÌá·ÀDDoS¹¥»÷ÓëÄÚÈݵÁ?Á´

ËÙÂÊÏÞÖÆ£ºÊ¹ÓÃlimit_reqÄ£¿éÏÞÖÆÀ´×ÔͳһIPµØÖ·µÄÇëÇóËÙÂÊ £¬ÓÐÓ÷ÀÓùDDoS¹¥»÷¡£HTTPBasicAuthentication/JWTÈÏÖ¤£º¹ØÓÚÐèÒª»á¼û¿ØÖƵÄÊÓÆµÄÚÈÝ £¬¿ÉÒÔ¼¯³ÉÈÏÖ¤»úÖÆ¡£Referer¼ì²é£ºÍ¨¹ývalid_referersÖ¸Áî £¬ÏÞÖÆÖ»ÓÐÀ´×ÔÌØ¶¨ÓòÃûµÄÇëÇó²Å»ª»á¼ûÊÓÆµ×ÊÔ´ £¬±ÜÃâÄÚÈݱ»µÁÁ´¡£

IP°×Ãûµ¥/ºÚÃûµ¥£º½øÒ»²½Ï¸Ä廯»á¼û¿ØÖÆ¡£µ÷ÓŽ¨Ò飺Çå¾²ÓëÐÔÄÜÖ®¼äÐèҪȨºâ¡£¹ýÓÚÑÏ¿áµÄÇå¾²Õ½ÂÔ¿ÉÄÜ»áÓ°ÏìÕý³£Óû§µÄ»á¼ûÌåÑé £¬ÐèҪƾ֤ÏÖʵӪҵ³¡¾°¾ÙÐÐÆ½ºâ¡£

HTTP/2ºÍQUIC£º¼ÓËÙЭÒé²ãÃæµÄÓÅ»¯

HTTP/2£ºÆôÓÃHTTP/2ЭÒé¿ÉÒÔÏÔÖøÌáÉýÊÓÆµ´«ÊäЧÂÊ¡£HTTP/2Ö§³Ö¶à·¸´Óã¨Multiplexing£© £¬ÔÊÐíÔÚÒ»¸öTCPÅþÁ¬ÉÏͬʱ´«Êä¶à¸öHTTPÇëÇóºÍÏìÓ¦ £¬×èÖ¹ÁËHTTP/1.1µÄ¶ÓÍ·ÛÕ±ÕÎÊÌâ¡£Õâ¹ØÓڷֶδ«ÊäµÄHLS/DASHÓÈΪÖ÷Òª¡£

ÔÚNginxÉèÖÃÖÐ £¬Ö»ÐèÔÚlistenÖ¸ÁîÖÐÌí¼Óhttp2²ÎÊý¼´¿ÉÆôÓá£QUIC£¨HTTP/3£©£ºÖ»¹ÜNginx¶ÔQUICµÄÔ­ÉúÖ§³ÖÈÔÔÚÉú³¤ÖÐ £¬µ«Í¨¹ýµÚÈý·½Ä£¿é»òδÀ´µÄ¹Ù·½¸üР£¬QUICЭÒéÓÐÍû³ÉΪÏÂÒ»´ú?ÊÓÆµ´«ÊäµÄÀûÆ÷¡£

QUIC»ùÓÚUDP £¬½øÒ»²½½â¾öÁËTCPµÄ¶ÓÍ·ÛÕ±ÕÎÊÌâ £¬²¢ÇÒÄÚÖÃÁËTLS¼ÓÃÜ £¬ÌṩÁ˸üµÍµÄÅþÁ¬Ñӳٺ͸ü¸ßµÄ´«ÊäЧÂÊ¡£

½âËø¼«ÖÂÁ÷ͨ£ºNginxÊÓÆµÓÅ»¯µÄǰ¶ËÒÕÊõ

ÔÚµ±½ñÕâ¸öÄÚÈÝΪÍõµÄʱ´ú £¬ÊÓÆµÒÑÈ»³ÉΪÐÅϢת´ïºÍÓéÀÖÏûºÄµÄÖ÷Á÷ÐÎʽ¡£´Ó¶ÌÊÓÆµµÄË鯬»¯ÓéÀÖ £¬µ½¸ßÇ峤ƬµÄÌÕ×íʽÌåÑé £¬Óû§¶ÔÊÓÆµ²¥·ÅµÄÁ÷ͨ¶ÈºÍÎȹÌÐÔÓÐ׎üºõ¿Á¿ÌµÄÒªÇó¡£Ò»µ©·ºÆð¼ÓÔØ»ºÂý¡¢¿¨¶Ù¡¢ÉõÖÁ²¥·Åʧ°Ü £¬Óû§µÄÄÍÐıã»áѸËÙÏûÄ¥ £¬½ø¶øÑ¡ÔñÍÑÀë¡£×÷Ϊ¸ßÐÔÄܵÄWeb·þÎñÆ÷ £¬NginxÒÔÆä׿ԽµÄ?²¢·¢´¦Öóͷ£ÄÜÁ¦ºÍÎÞаµÄÉèÖÃÑ¡Ïî £¬³ÉΪÁËÊÓÆµÓÅ»¯ÁìÓò²»¿É»òȱµÄÀûÆ÷¡£

½ñÌì £¬ÎÒÃǾÍÀ´Ò»ÆðÉîÈë̽Ë÷NginxÔõÑùʵÏÖ100%µÄÊÓÆµÓÅ»¯ £¬ÎªÄúµÄƽ̨עÈëÇ¿¾¢µÄ¶¯Á¦ £¬ÈÃÿһ´ÎÊÓÆµ²¥·Å¶¼³ÉΪһ´ÎÓäÔõÄÏíÊÜ¡£

Ò»¡¢NginxµÄ½¹µãÓÅÊÆ£ºÎªºÎËüÊÇÊÓÆµÓÅ»¯µÄ²»¶þ֮ѡ£¿

ÔÚÉîÈëNginxµÄ?ÏêϸÓÅ»¯¼¼ÇÉ֮ǰ £¬ÎÒÃÇÎÞ·ÁÏÈÃ÷È·Ò»ÏÂËüΪºÎÔÚÊÓÆµÁìÓòÔÆÔÆÊܽӴý¡£NginxµÄ½¹µã¾ºÕùÁ¦ÔÚÓÚÆäÊÂÎñÇý¶¯¡¢Òì²½·ÇÛձյļܹ¹¡£Óë¹Å°åµÄÏß³ÌÄ£×Ó²î±ð £¬NginxʹÓÃÉÙÁ¿µÄÀú³ÌºÍÊÂÎñÑ­»·À´´¦Öóͷ£´ó×Ú²¢·¢ÅþÁ¬¡£ÕâÒâζ×Å £¬×ÝÈ»ÔÚÃæÁÙº£Á¿Óû§Í¬Ê±ÇëÇóÊÓÆµ×ÊԴʱ £¬NginxÒ²Äܼá³Ö¼«µÍµÄ×ÊÔ´ÏûºÄºÍ¼«¸ßµÄÏìÓ¦ËÙÂÊ¡£

4.ǿʢµÄ»º´æ»úÖÆ£ºïÔÌ­»ØÔ´ £¬ÌáÉýÏìÓ¦ËÙÂÊ

»º´æÊÇNginx´¦Öóͷ£¸ßÁ÷Á¿µÄÒªº¦¡£×îа汾ÔÚ»º´æ»úÖÆ·½Ãæ¾ÙÐÐÁËÉý¼¶ £¬ÓÈÆäÊÇÔÚ´¦Öóͷ£ÊÓÆµÎļþÕâÖÖ¸ÅÂÔ»ýÊý¾Ýʱ £¬ÌåÏÖÔ½·¢¾«²Ê¡£

ϸÄ廯µÄ»º´æ¿ØÖÆ£ºNginxÌṩÁ˸»ºñµÄ»º´æÖ¸Áî £¬¿ÉÒÔÆ¾Ö¤URL¡¢ÇëÇóÍ·¡¢ÏìӦͷµÈ¶àÖÖÌõ¼þ £¬¶ÔÊÓÆµÄÚÈݾÙÐÐϸÄ廯µÄ?»º´æÕ½ÂÔÉèÖá£×îа汾ÔÚ»º´æµÄ²éÕÒ¡¢Ð´ÈëºÍʧЧ»úÖÆÉϾÙÐÐÁËÓÅ»¯ £¬ïÔÌ­Á˲»ÐëÒªµÄ´ÅÅÌI/O £¬Ìá¸ßÁË»º´æµÄʹÓÃÂÊ¡£Äڴ滺´æÓë´ÅÅÌ»º´æµÄЭͬ£º¹ØÓÚÆµÈÔ»á¼ûµÄСÐÍÊÓÆµÆ¬¶Ï»òÔªÊý¾Ý £¬Nginx¿ÉÒÔʹÓÃÄÚ´æ¾ÙÐлº´æ? £¬ÊµÏÖºÁÃë¼¶µÄÏìÓ¦¡£

¶ø¹ØÓÚ´óÐÍÊÓÆµÎļþ £¬Ôò¿ÉÒÔÓÐÓõØÊ¹ÓôÅÅÌ»º´æ¡£×îа汾ÔÚÄڴ滺´æºÍ´ÅÅÌ»º´æµÄЭͬÊÂÇéÉÏÔ½·¢¸ßЧ £¬Äܹ»Æ¾Ö¤×ÊÔ´ÇéÐÎÖÇÄܵØÑ¡Ôñ»º´æ½éÖÊ £¬È·±£ÊÓÆµÄÚÈݵĿìËÙ»á¼û¡£CDN±ßÑØ½ÚµãµÄ?ÓÅ»¯£ºÔÚCDN¼Ü¹¹ÖÐ £¬Nginx¾­³£×÷Ϊ±ßÑØ½Úµã £¬¼ç¸º?ן£Á¿ÊÓÆµÄÚÈݵĻº´æºÍ·Ö·¢Ê¹Ãü¡£

×îа汾ÔÚ±ßÑØ½ÚµãÉϵÄ?ÐÔÄÜÌåÏÖ £¬Ö±½Ó¾öÒéÁËÓû§»á¼ûµÄÏìÓ¦ËÙÂÊ¡£Í¨¹ý¸ü¿ìµÄ»º´æÖÀÖÐÂʺ͸üµÍµÄ»ØÔ´Á÷Á¿ £¬NginxÄܹ»ÏÔÖø½µµÍCDNÕûÌåµÄÔËÓª³É?±¾ £¬²¢ÎªÓû§Ìṩ½üºõÁãÑÓ³ÙµÄԢĿÌåÑé¡£

7.Çå¾²Óë»á¼û¿ØÖÆ£º°ü¹ÜÊÓÆµÄÚÈݵÄÎȹÌÓë°²?È«

ÔÚÌṩÁ÷ͨÊÓÆµÌåÑéµÄ°ü¹ÜÊÓÆµÄÚÈݵÄÇå¾²ºÍÎȹ̻á¼ûͬÑùÖ÷Òª¡£NginxÌṩÁËǿʢµÄÇå¾²¹¦Ð§¡£

HTTPS¼ÓÃÜ£ºÊ¹ÓÃSSL/TLSÖ¤ÊéΪÊÓÆµÁ÷ÌṩHTTPS¼ÓÃÜ £¬±£»¤Êý¾ÝÔÚ´«ÊäÀú³ÌÖеÄÇå¾² £¬±ÜÃâÇÔÌýºÍ´Û?p¡£NginxµÄSSL/TLSÉèÖÃÊÇʵÏÖÕâÒ»µãµÄÒªº¦¡£»á¼û¿ØÖÆ£ºÍ¨¹ýallow¡¢denyÖ¸Áî £¬»òÕßÓëµÚÈý·½ÈÏ֤ϵͳ¼¯³É £¬¿ÉÒÔÏÞÖÆ¶ÔÌØ¶¨ÊÓÆµÄÚÈݵĻá¼û £¬±ÜÃâδ¾­ÊÚȨµÄÏÂÔØ»ò·Ö·¢¡£

DDoS·À»¤£ºNginxµÄlimit_conn¡¢limit_reqÒÔ¼°Ò»Ð©Ç徲ģ¿é £¬¿ÉÒÔ×ÊÖúµÖÓùDDoS¹¥»÷ £¬È·±£ÊÓÆµ·þÎñµÄ¿ÉÓÃÐÔ¡£

ÔÚpart1ÖÐ £¬ÎÒÃÇÉîÈëÏàʶÁËNginxµÄ½¹µãÓÅÊÆ £¬ÒÔ¼°ËüΪºÎÄܹ»³ÉΪÊÓÆµÈö²¥ÊäÁìÓòµÄ?ٮٮÕß¡£ÏÖÔÚ £¬ÊÇʱ¼ä½«ÀíÂÛ¸¶Öîʵ¼ù £¬¿´¿´Nginx100ÊÓÆµÊÇÔõÑùÔÚÕæÊµ³¡¾°Öдó·ÅÒì²ÊµÄ¡£´ÓÖ±²¥?ÍÆÁ÷µ½µã²¥·þÎñ £¬´ÓCDN±ßÑØ½Úµãµ½±ßÑØÅÌËã £¬NginxÒÀ¸½ÆäǿʢµÄ¹¦Ð§ºÍÎÞаÐÔ £¬ÕýÔÚÖØËÜ×ÅÊÓÆµÄÚÈݵĴ«Êä·½·¨ £¬ÎªÓû§´øÀ´Ø¨¹ÅδÓеÄÁ÷ͨ¡¢Îȹ̡¢¸ßÖÊÁ¿µÄԢĿÌåÑé¡£

Ö±²¥ÍÆÁ÷ÓëתÂ룺Nginx´î½¨RTMPÖ±²¥·þÎñÆ÷µÄ»Æ½ð´î?µµ?

¹ØÓÚÐí¶àÖ±²¥?ƽ̨¶øÑÔ £¬RTMPЭÒéÒÀÈ»ÊÇÖ÷ÒªµÄÍÆÁ÷·½·¨¡£NginxÅäºÏnginx-rtmp-module £¬¿ÉÒÔÇáËɴһ¸ö¸ßÐÔÄܵÄRTMP·þÎñÆ÷ £¬ÎüÊÕÀ´×ÔÖ÷²¥µÄÍÆÁ÷¡£¸üÁîÈËÐ˷ܵÄÊÇ £¬Nginx»¹¿ÉÒÔʹÓÃÆäǿʢµÄ?´¦Öóͷ£ÄÜÁ¦ £¬ÊµÏÖÊÓÆµÁ÷µÄʵʱתÂë¡£

ÏëÏóһϠ£¬Ö÷²¥Ê¹ÓÃÒ»Ì×±àÂë²ÎÊýÍÆÁ÷ £¬¶ø¹ÛÖÚÔò¿ÉÄÜʹÓÃÖݪֲî±ðµÄ×°±¸ºÍÍøÂçÇéÐÎԢĿ¡£ÎªÁËÖª×ã²î±ðÓû§µÄÐèÇó £¬ÎÒÃÇÐèÒª½«Ô­Ê¼ÊÓÆµÁ÷תÂë³É¶àÖÖÂëÂÊ¡¢Çø·ÖÂʵÄHLS»òDASHÇÐÆ¬¡£NginxÍŽáFFmpegµÈ¹¤¾ß £¬¿ÉÒÔʵÏÖÕâÒ»Àú³Ì£º

½áÂÛ£ºNginx´òÔ켫ÖÂÊÓÆµÌåÑéµÄÎÞÏÞ¿ÉÄÜ

NginxÖ®ÒÔÊÇÄܹ»ÊµÏÖ¡°100%ÊÓÆµÐÔÄÜ¡± £¬²¢·ÇÒ»¸ö¼òÆÓµÄ±êÇ© £¬¶øÊÇÆä±³ºóǿʢ?ÊÖÒռܹ¹¡¢ÎÞаµÄÄ£¿é»¯Éè¼ÆÒÔ¼°Ï¸Ä廯µ÷ÓŵÄЧ¹û¡£´Ó¸ßЧ´¦Öóͷ£º£Á¿²¢·¢ÅþÁ¬ £¬µ½ÖÇÄÜ»¯µÄ»º´æÕ½ÂÔ £¬ÔÙµ½¶ÔRTMP¡¢HLS¡¢DASHµÈÁ÷ýÌåЭÒéµÄÓÐÁ¦Ö§³Ö £¬NginxΪÊÓÆµ·Ö·¢ÁìÓòÌṩÁ˼áʵµÄ»ù´¡¡£

ͨ¹ý½«Nginx°²ÅÅÔÚCDN±ßÑØ½Úµã £¬²¢ÍŽáÆäǿʢµÄÁ÷ýÌå´¦Öóͷ£ÄÜÁ¦ºÍÒ»Á¬µÄÐÔÄܵ÷ÓÅ £¬ÎÒÃÇ¿ÉÒÔ¹¹½¨³öÕæÕý×öµ½µÍÑÓ³Ù¡¢¸ß¿ÉÓᢸßÍÌÍÂÁ¿µÄÊÓÆµ·Ö·¢ÏµÍ³¡£ÎÞÂÛÄúÊÇÐèÒª´î½¨Ò»¸öÃæÏòÈ«ÇòÓû§µÄ?ÊÓÆµµã²¥Æ½Ì¨ £¬ÕÕ¾ÉÒ»¸öʵʱ»¥¶¯µÄÖ±²¥·þÎñ £¬Nginx¶¼½«ÊÇÄúʵÏÖÁ÷ͨ¡¢×¿Ô½ÊÓÆµÌåÑéµÄµÃÁ¦ÖúÊÖ £¬ÎªÄúÕ¹ÏÖ²¢ÊµÏÖÊÓÆµÐÔÄܵÄÎÞÏÞ¿ÉÄÜ¡£

Ò»¡¢Nginx½¹µãÉèÖÃÓÅ»¯£ºº»ÊµÐÔÄÜ»ù´¡

workerÀú³ÌÊýÓëworker_connections£ºÕâÊÇNginxÐÔÄÜÓÅ»¯µÄ½¹µã²ÎÊý¡£worker_processes¿ØÖÆNginxÊÂÇéÀú³ÌµÄÊýÄ¿ £¬Í¨³£½¨ÒéÉèÖÃΪCPU½¹µãÊýµÄÁ½±¶ £¬ÒÔ³ä·ÖʹÓöàºËCPUµÄ²¢Ðд¦Öóͷ£ÄÜÁ¦¡£

worker_connections½ç˵ÁËÿ¸öÊÂÇéÀú³ÌÄÜͬʱ´¦Öóͷ£µÄ×î´óÅþÁ¬Êý¡£ÔÚÊÓÆµÁ÷ýÌ峡¾°Ï £¬Óû§¿ÉÄܳ¤Ê±¼ä¼á³ÖÅþÁ¬ £¬Òò´ËÐèÒª½«worker_connectionsÉèÖÃΪһ¸öÏà¶Ô½Ï´óµÄÖµ £¬ÀýÈç4096»ò¸ü¸ß £¬ÏêϸÊýÖµÐèҪƾ֤·þÎñÆ÷µÄÄÚ´æºÍÏÖʵ²âÊÔÇéÐÎÀ´È·¶¨¡£

sendfileon;£ºÕâÊÇÒ»¸öÖÁ¹ØÖ÷ÒªµÄ?Ö¸Áî £¬ËüÔÊÐíNginxÖ±½Ó´Ó?ÎļþϵͳÖжÁÈ¡Êý¾Ý²¢½«Æä·¢Ë͵½ÍøÂçÌ×½Ó×Ö £¬¶øÎÞÐ轫Êý¾Ý¿½±´µ½Óû§¿Õ¼äºÍÄں˿ռäÖ®¼ä¡£Õâ´ó´óïÔÌ­ÁËCPUºÍÄÚ´æµÄ¿ªÏú £¬ÏÔÖøÌá¸ßÁ˾²Ì¬Îļþ´«ÊäµÄЧÂÊ £¬¹ØÓÚÊÓÆµ´«Êä¶øÑÔ £¬ÆäÐÔÄÜÌáÉýÊǾªÈ˵Ä¡£

tcp_nopushon;Óëtcp_nodelayon;£º

Nginx£ºÊÓÆµ´«ÊäµÄÐÔÄÜÍõÕß £¬100%ЧÂʵĻùʯ

ÔÚµ±½ñÐÅÏ¢±¬Õ¨µÄʱ´ú £¬ÊÓÆµÒѳÉΪÈËÃÇ»ñÊØÐÅÏ¢¡¢ÓéÀÖÐÝÏеÄ?Ö÷Á÷·½·¨¡£´Ó¶ÌÊÓÆµµÄ?ÐËÆðµ½¸ßÇå¡¢4KÉõÖÁ8KÊÓÆµµÄÆÕ¼° £¬Óû§¶ÔÊÓÆµ²¥·ÅµÄÁ÷ͨ¶È¡¢¼ÓÔØËÙÂÊÌá³öÁËØ¨¹ÅδÓеĸßÒªÇó¡£Ã¿Ò»´Î¿¨¶Ù¡¢Ã¿Ò»´ÎÂþ³¤µÄ¼ÓÔØ £¬¶¼¿ÉÄܵ¼ÖÂÓû§Á÷ʧ £¬Ëðº¦Æ·ÅÆÐÎÏó¡£ÔÚÕâÑùµÄÅä¾°Ï £¬Ò»¸öǿʢ¡¢¸ßЧµÄÊÓÆµ´«Êä½â¾ö¼Æ»®ÖÁ¹ØÖ÷Òª¡£

¶øNginx £¬Õâ¸öÒÔ¸ßÐÔÄÜ¡¢¸ß²¢·¢Öø³ÆµÄWeb·þÎñÆ÷ £¬ÕýÒÔÆä׿ԽµÄÄÜÁ¦ £¬³ÉΪÎÞÊýÁ÷ýÌåÆ½Ì¨ºÍÊÓÆµ·þÎñÉ̵ÄÊ×Ñ¡ £¬ÎªÊµÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÄÄ¿µÄµÓÚ¨Á˼áʵ»ù´¡¡£

HTTPµã²¥·þÎñÆ÷´î½¨

¹ØÓÚÊÓÆµµã²¥ £¬NginxµÄ?Ô­ÉúHTTP¹¦Ð§¼´¿ÉʤÈΡ£Ö»Ð轫ÊÓÆµÎļþ·ÅÔÚNginxµÄrootĿ¼Ï £¬²¢È·±£sendfileºÍtcp_nopushµÈÖ¸Áî±»ÆôÓãº

http{sendfileon;tcp_nopushon;tcp_nodelayon;keepalive_timeout65;server{listen80;server_nameyour_domain.com;root/var/www/html/videos;#´æ·ÅÊÓÆµÎļþµÄĿ¼location/{autoindexon;#¿ÉÑ¡ £¬ÓÃÓÚչʾÎļþÁбí}#Õë¶ÔÌØ¶¨ÊÓÆµÃûÌõÄÓÅ»¯(¿ÉÑ¡)location~*\.(mp4|mov|avi)${add_headerCache-Controlpublic;add_headerExpires1y;}}}

ÕâÑù £¬Óû§¾Í¿ÉÒÔͨ¹ýhttp://your_domain.com/your_video.mp4À´»á¼ûÊÓÆµ¡£

¶þ¡¢Ö±²¥ÊÖÒÕˢУºµÍÑÓ³Ù¡¢¸ß²¢·¢µÄʵʱ»¥¶¯ÌåÑé

Ö±²¥×÷ΪÊÓÆµÁìÓòµÄÖ÷Òª·ÖÖ§ £¬¶ÔÑӳٺͲ¢·¢ÄÜÁ¦ÓÐ׿«ÆäÑÏ¿ÁµÄÒªÇó¡£Nginx×îа汾ͨ¹ýһϵÁÐÊÖÒÕÉý¼¶ £¬ÎªÊµÏÖµÍÑÓ³Ù¡¢¸ß²¢·¢µÄÖ±²¥ÌåÑéÌṩÁËǿʢµÄ?Ö§³Ö¡£

RTMP/HLS/DASHµÈЭÒéµÄÉî¶ÈÖ§³ÖÓëÓÅ»¯£ºNginxÒÀ¸½ÆäǿʢµÄ?Ä£¿é»¯¼Ü¹¹ £¬Äܹ»ÇáËɼ¯³ÉÖÖÖÖÁ÷ýÌåЭÒé¡£×îа汾ÔÚ¶ÔRTMP£¨Real-TimeMessagingProtocol£©¡¢HLS£¨HTTPLiveStreaming£©ºÍDASH£¨DynamicAdaptiveStreamingoverHTTP£©µÈÖ÷Á÷Ö±²¥Ð­ÒéµÄÖ§³ÖÉϾÙÐÐÁ˽øÒ»²½ÓÅ»¯¡£

ͨÏ꾡Ä廯µÄ»º³åÇø¹ÜÀíºÍ¸ßЧµÄ?Á÷ýÌå·Ö·¢»úÖÆ £¬NginxÄܹ»×î´óÏ޶ȵؽµµÍÖ±²¥ÑÓ³Ù £¬È·±£¹ÛÖÚÄܹ»ÊµÊ±µØÎüÊÕµ½»­ÃæºÍÉùÒô £¬ÊµÏÖ¡°100%ÊÓÆµ²¥·Å¡±µÄ?¼´Ê±ÐÔ¡£WebRTCµÄÕûºÏÓëÓ¦ÓãºNginxÆð¾¢Ì½Ë÷WebRTC£¨WebReal-TimeCommunication£©µÈÇ°ÑØÊÖÒÕ £¬²¢ÌṩÁËÏà¹ØµÄ¼¯³É¼Æ»®¡£

NginxÉèÖÃÎļþ²ãÃæµÄÓÅ»¯£º

worker_processesÓëworker_connections£ººÏÀíÉèÖÃÊÂÇéÀú³ÌÊýÄ¿£¨Í¨³£ÓëCPU½¹µãÊýÏàµÈ£©ºÍÿ¸öÀú³Ì?µÄ×î´óÅþÁ¬Êý¡£Keep-aliveÉèÖãºkeepalive_timeoutºÍkeepalive_requests²ÎÊýµÄµ÷½â £¬ÓÃÓÚ¿ØÖƿͻ§¶ËÅþÁ¬µÄ¸´Óà £¬ïÔÌ­TCPÎÕÊÖ¿ªÏú¡£

»º³åÇøÓ뻺´æ£ºclient_body_buffer_size¡¢proxy_buffer_size¡¢proxy_buffersµÈ²ÎÊýµÄÉèÖà £¬¹ØÓÚ´óÎļþ´«ÊäºÍ´úÀí³¡¾°ÖÁ¹ØÖ÷Òª¡£open_file_cacheÖ¸Áî¿ÉÒÔ»º´æ?·­¿ªµÄÎļþÐÎò·ûºÍÔªÊý¾Ý £¬ÏÔÖøÌá¸ß¾²Ì¬Îļþ·þÎñµÄÐÔÄÜ¡£

SSL/TLSÓÅ»¯£ºÆôÓÃssl_session_cacheºÍssl_session_timeout £¬ÒÔ¼°Ñ¡Ôñ¸üÓŵÄSSLÃÜÂëÌ×¼þ £¬¿ÉÒÔ½µµÍSSL/TLSÎÕÊֵĿªÏú¡£HTTP/2ºÍHTTP/3£¨QUIC£©µÄÒýÈë £¬¸üÊÇΪÊÓÆµ´«Êä´øÀ´ÁËȫеÄ?ËÙÂʺÍЧÂÊÌáÉý¡£

SSL/TLS¼ÓÃÜ£ºÎªÁ˰ü¹ÜÊÓÆµ´«ÊäµÄÇå¾²ÐÔºÍÓû§Òþ˽ £¬SSL/TLS¼ÓÃÜÊDZز»?¿ÉÉٵġ£NginxÖ§³Ö¸ßЧµÄ?SSL/TLSÖ¤ÊéÉèÖúͼÓÃÜÅþÁ¬´¦Öóͷ£¡£ºÏÀíÉèÖÃssl_certificate¡¢ssl_certificate_keyµÈ²ÎÊý £¬²¢ÆôÓÃssl_session_cacheµÈ»úÖÆ £¬¿ÉÒÔÈ·±£?¼ÓÃÜÅþÁ¬µÄ?¸ßЧÐÔ¡£

¼à¿ØÓëÈÕÖ¾ÆÊÎö£ºÎªÁËʵʱ·¢Ã÷Ï¢Õù¾öÐÔÄÜÆ¿¾± £¬¶ÔNginxµÄÔËÐÐ״̬¾ÙÐÐ¼à¿ØºÍÈÕÖ¾ÆÊÎöÖÁ¹ØÖ÷Òª¡£NginxµÄstub_statusÄ£¿é¿ÉÒÔÌṩʵʱµÄÅþÁ¬Êý¡¢ÇëÇóÊýµÈÒªº¦Ö¸±ê¡£¶ÔNginxµÄ»á¼ûÈÕÖ¾¾ÙÐÐÆÊÎö £¬¿ÉÒÔÏàʶÓû§»á¼ûģʽ¡¢Ê¶±ðÂýÇëÇó £¬²¢¾Ý´Ë½øÒ»²½ÓÅ»¯ÉèÖá£

¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±²¢·ÇÒ»¸öÐé»ÃµÄ¿´·¨ £¬¶øÊÇͨ¹ý¶ÔNginx½¹µã¼Ü¹¹µÄÉî¿ÌÃ÷È· £¬ÍŽáÏ꾡Èë΢µÄÉèÖõ÷ÓÅ £¬ÒÔ¼°ÔÚÊÓÆµÁ÷ýÌåÁìÓòרÏîÓÅ»¯¼¼ÇɵÄÓ¦Óà £¬ÍêÈ«¿ÉÒÔʵÏÖµÄ׿ԽĿµÄ¡£´Ó?Ö±²¥µ½µã²¥ £¬´ÓCDNµ½APIÍø¹Ø £¬NginxµÄǿʢ?ÉíÓ°¹á´®ÓÚÕû¸öÁ÷ýÌå·þÎñµÄ?ÉúÃüÖÜÆÚ¡£

ÕÆÎÕNginxµÄ¾«Ëè £¬Äú½«Äܹ»¹¹½¨³öÎȹ̡¢¸ßЧ¡¢¿ÉÀ©Õ¹µÄÊÓÆµÁ÷ýÌåÆ½Ì¨ £¬ÎªÓû§ÌṩÎÞÓëÂױȵÄԢĿÌåÑé £¬ÕæÕý½âËøÄúµÄÁ÷ýÌåмÍÔª¡£

Nginx×÷ΪCDN»ØÔ´£º

ÉèÖÃoriginserver£ºÔÚCDNÉèÖÃÖÐ £¬Nginx·þÎñÆ÷³äµ±×Å¡°Ô´Õ¾¡±µÄ½ÇÉ«¡£CDN½Úµã»á½«Óû§ÇëÇóµÄÊÓÆµÄÚÈÝ»º´æµ½ÍâµØ £¬µ±Óû§»á¼ûʱ £¬Ê×ÏÈ´Ó?¾Í½üµÄCDN½Úµã»ñÈ¡¡£ÈôÊÇCDN½ÚµãûÓлº´æ £¬Ôò»áÏòNginxÔ´Õ¾Ìᳫ»ØÔ´ÇëÇó £¬NginxÎüÊÕµ½ÇëÇóºó £¬½«ÊÓÆµÎļþ´«Ê䏸CDN½Úµã £¬CDN½ÚµãÔÙ½«ÄÚÈÝ·µ»Ø¸øÓû§¡£

proxy_cacheµÄÃîÓãºÔڴ˳¡¾°Ï £¬NginxµÄproxy_cache¹¦Ð§±äµÃÓÈΪÖ÷Òª¡£Í¨¹ýÉèÖÃproxy_cache £¬Nginx¿ÉÒÔ»º´æÀ´×ÔCDNµÄ?ÇëÇó £¬½øÒ»²½?ïÔ̭ԴվѹÁ¦ £¬²¢¼ÓËÙCDN½ÚµãµÄ»ØÔ´ËÙÂÊ¡£

Îļþ¾ä±úÏÞÖÆ£¨ulimit£©£ºNginxµÄÊÂÇéÀú³ÌÐèÒª·­¿ª´ó×ÚµÄÎļþ¾ä±úÀ´´¦Öóͷ£ÍøÂçÅþÁ¬ºÍÎļþ¶Áд¡£ÔÚLinuxϵͳÖÐ £¬ÐèҪͨ¹ýulimit-nÏÂÁîÀ´Ìá¸ßÿ¸öÀú³ÌÄܹ»·­¿ªµÄ×î´óÎļþ¾ä±úÊý¡£Í¨³£½¨Ò齫ÆäÉèÖÃΪһ¸ö½Ï´ó?µÄÖµ £¬ÀýÈç65535»ò¸ü¸ß £¬ÒÔ×èÖ¹ÒòÎļþ¾ä±úºÄ¾¡¶øµ¼ÖµÄÅþÁ¬Ê§°Ü¡£

Õâͨ³£ÐèÒªÔÚ/etc/security/limits.confÎļþÖоÙÐÐÉèÖà £¬²¢È·±£NginxÆô¶¯Óû§Äܹ»¼ÌÐøÕâЩÉèÖá£

ÆôÓÃkeepalive£ºkeepalive_timeoutºÍkeepalive_requests²ÎÊý¹ØÓÚïÔÌ­TCPÅþÁ¬µÄ½¨ÉèºÍ¹Ø±Õ¿ªÏúÖÁ¹ØÖ÷Òª¡£¹ØÓÚÊÓÆµÁ÷ýÌå £¬±£?³ÖÅþÁ¬µÄ»îÔ¾ÐÔ¿ÉÒÔÏÔÖøÌá¸ßЧÂÊ¡£keepalive_timeoutÉèÖÃÁ˿ͻ§¶ËÅþÁ¬µÄ¼á³Öʱ¼ä £¬¶økeepalive_requestsÔòÏÞÖÆÁËÒ»¸öÅþÁ¬ÔÚ±»¹Ø±Õ?ǰ¿ÉÒÔ´¦Öóͷ£µÄ×î´óÇëÇóÊý¡£

ÔÚÊÓÆµ²¥·Å³¡¾°Ï £¬Êʵ±ÑÓÉìkeepalive_timeout¿ÉÒÔÓÐÓÃïÔÌ­ÖØ¸´ÅþÁ¬µÄ¿ªÏú £¬ÌáÉýÕûÌåÍÌÍÂÁ¿¡£

¸ßЧµÄЭÒéÑ¡ÔñÓëÉèÖãº

RTMP£ºÈ·±£RTMPÄ£¿éÉèÖúÏÀí £¬ÀýÈçÉèÖÃÊʵ±µÄchunk_size¡¢bufferµÈ²ÎÊý £¬ÒÔÆ¥ÅäÍÆÁ÷¶ËºÍ²¥·Å¶ËµÄÍøÂç״̬¡£HLS/DASH£ºNginx-rtmp-moduleÖ§³Ö½«RTMPÁ÷ת»»ÎªHLS/DASH £¬ÕâÁ½ÖÖЭÒéʹÓÃHTTP¾ÙÐд«Êä £¬¸üÒ×ÓÚ´©Í¸·À»ðǽ £¬ÇÒ¾ßÓÐÓÅÒìµÄ×Ô˳ӦÂëÂÊÄÜÁ¦¡£

Òªº¦ÔÚÓÚÉèÖúÃÇÐÆ¬Ê±³¤¡¢±àÂë²ÎÊýÒÔ¼°´ò°ü¾àÀë £¬ÒÔÆ½ºâ²¥·ÅµÄÁ÷ͨÐÔºÍʵʱÐÔ¡£HTTPµã²¥?£º¹ØÓÚMP4µÈÎļþ £¬Ö±½ÓʹÓÃNginxµÄHTTP·þÎñ £¬ÅäºÏsendfileon;¡¢tcp_nopushon;¡¢tcp_nodelayon;µÈÖ¸Áî £¬¿ÉÒÔÏÔÖøÌáÉý´«ÊäЧÂÊ¡£

ÄÚ´æÓ뻺³åÇøµÄϸÄåµ÷ÓÅ£ºNginxµÄclient_body_buffer_size¡¢proxy_buffer_size¡¢proxy_buffersµÈ?²ÎÊý £¬ÒÔ¼°RTMPÄ£¿éµÄbuffer¡¢max_chunk_sizeµÈ £¬¶¼ÐèҪƾ֤ÏÖʵÁ÷Á¿ºÍÊÓÆµÌØÕ÷¾ÙÐе÷½â¡£

¹ýСµÄ»º³åÇø¿ÉÄܵ¼ÖÂÆµÈÔµÄI/O²Ù×÷ £¬¹ý´óµÄ»º³åÇøÔò¿ÉÄÜÆÌÕÅÄÚ´æ¡£

Îå¡¢Çå¾²Óë¼à¿Ø£º°ü¹ÜÊÓÆµ·þÎñµÄÎȹÌÔËÐÐ

SSL/TLS¼ÓÃÜ£ºÎªÊÓÆµ´«ÊäÆôÓÃSSL/TLS¼ÓÃÜ £¬±£»¤Óû§Êý¾ÝÇå¾² £¬½¨ÉèÐÅÈΡ£»á¼û¿ØÖÆ£ºÉèÖÃIP»á¼ûÏÞÖÆ¡¢Referer¼ì²éµÈ £¬±ÜÃâδ¾­ÊÚȨµÄ»á¼ûºÍµÁÁ´¡£¼à¿ØÓëÈÕÖ¾£ºÊ¹ÓÃNginxµÄ»á¼ûÈÕÖ¾ºÍ¹ýʧÈÕÖ¾ £¬ÍŽáµÚÈý·½¼à¿Ø¹¤¾ß(ÈçPrometheus,Grafana) £¬ÊµÊ±¼à¿Ø·þÎñÆ÷ÐÔÄÜ¡¢ÅþÁ¬Êý¡¢Á÷Á¿µÈÒªº¦Ö¸±ê £¬ÊµÊ±·¢Ã÷Ï¢Õù¾öDZÔÚÎÊÌâ¡£

ngx_http_vhost_traffic_status_moduleÄ£¿é¿ÉÒÔÌṩÏêϸµÄÁ÷Á¿Í³¼ÆÐÅÏ¢¡£

ͨ¹ýÒÔÉÏ¶à·½ÃæµÄϸÄ廯ÉèÖúÍÓÅ»¯ £¬NginxÄܹ»ÕæÕýÊÍ·ÅÆäÔÚÊÓÆµ´«ÊäÁìÓòµÄËùÓÐDZÁ¦ £¬ÊµÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÄÄ¿µÄ¡£´Ó»ù´¡¼Ü¹¹µ½½¹µã¹¦Ð§ £¬ÔÙµ½¸ß¼¶ÓÅ»¯Õ½ÂÔ £¬NginxΪ¹¹½¨¸ßÐÔÄÜ¡¢¸ß¿ÉÓᢿÉÀ©Õ¹µÄÁ÷ýÌåÆ½Ì¨ÌṩÁËǿʢµÄÊÖÒÕÖ§³Ö £¬ÈÃÓû§¾¡ÏíË¿»¬Á÷ͨµÄ?³¬·²ÊÓÆµÌåÑé¡£

Õâ²»µ«½öÊÇÊÖÒÕµÄʤÀû £¬¸üÊǶÔÓû§ÌåÑ鼫ÖÂ×·ÇóµÄÌåÏÖ¡£

client_body_buffer_size£ºÓÃÓÚ´æ´¢¿Í»§¶ËÇëÇóÌå¡£¹ØÓÚÊÓÆµÉÏ´«³¡¾° £¬ÐèÒªÊʵ±Ôö´ó´ËÖµ¡£proxy_buffer_sizeºÍproxy_buffers£ºµ±Nginx×÷Ϊ·´Ïò´úÀíʱ £¬ÓÃÓÚ´æ´¢´ÓÉÏÓηþÎñÆ÷ÎüÊÕµ½µÄÏìÓ¦Êý¾Ý¡£

¹ØÓÚÊÓÆµÁ÷ £¬ÐèÒªÉèÖÃ×ã¹»´óµÄ»º³åÇø¾ÞϸºÍÊýÄ¿ £¬ÒÔ×èÖ¹Êý¾ÝÔÚ´«ÊäÀú³ÌÖб»½Ø¶Ï»òƵÈԵؾÙÐдÅÅÌI/O £¬È·±£Á÷ýÌåµÄÒ»Á¬ÐÔ¡£ÀýÈç £¬¿ÉÒÔÉèÖÃproxy_buffer_size128k;proxy_buffers4256k;À´Ìṩ¸ü´óµÄ»º³åÇø¿Õ¼ä¡£

sendfileºÍtcp_nopush/tcp_nodelay£ºsendfileon;¿ÉÒÔÈÃNginxÖ±½Ó½«Îļþ´Ó´ÅÅÌ´«Êäµ½ÍøÂç½Ó¿Ú £¬×èÖ¹ÁËÔÚÓû§¿Õ¼äºÍÄں˿ռäÖ®¼ä¸´ÖÆÊý¾ÝµÄ¿ªÏú £¬¼«´óµØ?ÌáÉýÁËÎļþ´«ÊäЧÂÊ £¬ÓÈÆä¶ÔÊÓÆµÎļþ´«?ÊäÓÐÏÔÖøÐ§¹û¡£

tcp_nopushon;ºÍtcp_nodelayon;ÔòÓÃÓÚÓÅ»¯TCP·¢ËÍÊý¾ÝµÄ·½·¨ £¬ïÔÌ­ÑÓ³Ù £¬ÌáÉýÍÌÍÂÁ¿¡£

2.ÉîÈëÃ÷È·Á÷ýÌåЭÒéÉèÖãºHLSºÍDASHµÄ×î¼Ñʵ¼ù

ËÄ¡¢Ð­ÒéÑ¡ÔñÓëÓÅ»¯

HTTP-basedÊÓÆµÁ÷£¨HLS/DASH£©£ºNginx¶ÔHTTPЭÒéÓÐ×Å׿ԽµÄÖ§³Ö?¡£Í¨¹ýnginx-rtmp-module»òÆäËûµÚÈý·½Ä£¿é £¬Nginx¿ÉÒÔÇáËɵؽ«RTMPÖ±²¥Á÷ת»»ÎªHLS»òDASHÃûÌà £¬ÒÔ±ãÔÚWeb¶Ëͨ¹ýHTTPЭÒé¾ÙÐв¥·Å¡£

HLSºÍDASHЭÒé¾ßÓÐ×Ô˳ӦÂëÂʵÄÄÜÁ¦ £¬¿ÉÒÔÆ¾Ö¤Óû§µÄÍøÂç״̬×Ô¶¯µ÷½âÊÓÆµÖÊÁ¿ £¬Ìṩ¸üÁ÷ͨ?µÄԢĿÌåÑé¡£

HTTP/2ºÍHTTP/3£ºÉý¼¶µ½HTTP/2ÉõÖÁHTTP/3ЭÒé £¬¿ÉÒÔ½øÒ»²½ÌáÉýÊÓÆµ´«ÊäµÄЧÂÊ¡£HTTP/2ͨ¹ý¶à·¸´Óá¢Í·²¿Ñ¹ËõµÈÊÖÒÕ £¬ïÔÌ­ÁËÅþÁ¬¿ªÏúºÍÑÓ³Ù¡£HTTP/3»ùÓÚQUICЭÒé £¬ÔÚÈõÍøÇéÐÎÏÂÌåÏÖ¸ü¼Ñ £¬Äܹ»ÓÐÓýµµÍÊÓÆµ¿¨¶ÙµÄ¸ÅÂÊ¡£

Nginx¶ÔÕâЩÐÂЭÒéµÄÖ§³Ö £¬ÎªÊµÏÖ¼«ÖÂÁ÷ͨµÄÊÓÆµÌåÑéÌṩÁ˸üÇ¿µÄÊÖÒÕ°ü¹Ü¡£

Õ¹ÍûδÀ´£ºNginxÔÚÊÓÆµÊ±´úµÄÎÞÏÞ¿ÉÄÜ

Nginx100%ÊÓÆµ´«?Êä £¬²¢·ÇÒ»¸öÖյ㠣¬¶øÊÇÒ»¸öÒ»Á¬½ø»¯µÄÀú³Ì¡£Ëæ×Å5G¡¢Wi-Fi6µÈÐÂÒ»´úÍøÂçµÄÆÕ¼° £¬ÒÔ¼°8KÇø·ÖÂÊ¡¢VR/ARµÈÐÂÐÎ̬ÄÚÈݵķºÆð £¬¶ÔÊÓÆµ´«ÊäµÄÒªÇó½«Ò»Ö±ÌáÉý¡£NginxÒÀ¸½Æä¿ª·Å¡¢ÎÞа¡¢¸ßÐÔÄܵÄÌØµã £¬±Ø½«¼ÌÐøÔÚÕâÒ»ÁìÓòÊÎÑÝÒªº¦½ÇÉ«¡£

´Ó¸üÖÇÄܵÄÁ÷ýÌåЭÒéÖ§³Ö £¬µ½¸üÉî¶ÈµÄ±ßÑØÅÌË㼯³É £¬ÔÙµ½?ÓëÐÂÐËÄÚÈÝÃûÌõÄÍêÉÆÆõºÏ £¬Nginx½«Ò»Á¬½âËøÊÓÆµ´«ÊäµÄ?¼«ÖÂÌåÑé £¬ÒýÁìÎÒÃÇ×ßÏòÒ»¸öÔ½·¢Á÷ͨ¡¢ÌÕ×íµÄÊý×ÖÌìÏ¡£

ÔÚNginxǿʢµÄ»º´æÄÜÁ¦»ù´¡ÉÏ £¬ÎÒÃÇ»¹ÐèÒª¹Ø×¢ÊÓÆµÁ÷ýÌå´«ÊäµÄЧÂʺÍЭÒéµÄÓÅ»¯ £¬ÒÔÈ·±£ÊÓÆµÔÚÍøÂçÖеĴ«ÊäÀú³ÌͬÑù˳³©ÎÞ×è¡£

HTTP/2ºÍHTTP/3µÄ¸³ÄÜ£º¹Å°åµÄHTTP/1.1ЭÒéÔÚ´¦Öóͷ£´ó×ÚСÎļþÇëÇóʱ±£´æÐÔÄÜÆ¿¾± £¬ÀýÈç¶à·¸´ÓÃЧÂʲ»¸ß¡¢ÇëÇóÍ·¿ªÏú´óµÈ¡£¶øHTTP/2ЭÒéµÄÒýÈë £¬Í¨¹ýÍ·²¿Ñ¹Ëõ¡¢¶à·¸´ÓᢷþÎñÆ÷ÍÆË͵ÈÌØÕ÷ £¬¼«´óµØÌáÉýÁËWeb×ÊÔ´µÄ´«ÊäЧÂÊ £¬¹ØÓÚÊÓÆµÁ÷ýÌåÖÐÆµÈÔµÄСÎļþÇëÇó£¨ÈçHLSµÄts·ÖƬ£©ÓÐÏÔÖøµÄÐÔÄÜÌáÉý¡£

Nginx¶ÔHTTP/2µÄÖ§³ÖºÜÊdzÉÊì £¬Ö»Ðè¼òÆÓµÄÉèÖü´¿ÉÆôÓá£

ÉèÖÃÒªµã£ºÔÚlistenÖ¸ÁîÖÐÌí¼Óhttp2²ÎÊý¡£È·±£SSLÖ¤ÊéÉèÖÃ׼ȷ £¬ÓÉÓÚHTTP/2ͨ³£ÔÚHTTPSÇéÐÎÏÂʹÓá£http2_max_concurrent_streams£ºÉèÖÃÿ¸öTCPÅþÁ¬ÉÏÔÊÐíµÄ×î´ó²¢·¢Á÷Êý £¬¿Éƾ֤·þÎñÆ÷ÄÜÁ¦¾ÙÐе÷½â¡£

http2_push£º¿ªÆô·þÎñÆ÷ÍÆË͹¦Ð§ £¬¿ÉÒÔÌáǰ½«Óû§¿ÉÄÜÐèÒªµÄ×ÊÔ´£¨ÈçCSS¡¢JS£©ÍÆË͵½¿Í»§¶Ë £¬ïÔÌ­ºóÐøÇëÇó¡£

2.2ÖÇÄÜÁ÷Á¿µ÷ÀíÓë¸ºÔØÆ½ºâ£ºÓ¦¶Ô·åÖµ £¬°ü¹Ü¿ÉÓÃÐÔÊÓÆµ·þÎñµÄÁ÷Á¿ÍùÍù¾ßÓÐÍ»·¢ÐÔ £¬ÓÈÆäÊÇÔÚÈÈÃÅÈüÊÂÖ±²¥»òÖ÷ÒªÊÂÎñÐû²¼Ê±¡£NginxµÄ¸ºÔØÆ½ºâÄÜÁ¦Äܹ»ÓÐÓõؽ«Á÷Á¿ÊèÉ¢µ½¶à¸öºó¶Ë·þÎñÆ÷ £¬×èÖ¹µ¥µã¹ýÔØ £¬È·±£?·þÎñµÄÎȹ̿ÉÓá£

¶àÖÖ¸ºÔØÆ½ºâËã·¨:NginxÖ§³Ö¶àÖÖ¸ºÔØÆ½ºâËã·¨ £¬ÈçÂÖѯ(round-robin)¡¢¼ÓȨÂÖѯ(weight)¡¢IP¹þÏ£(ip_hash)µÈ¡£upstreambackend_servers{server192.168.1.10;server192.168.1.11weight=3;}¿µ½¡¼ì²é:Nginx¿ÉÒÔÉèÖÿµ½¡¼ì²é»úÖÆ £¬×Ô¶¯ÌÞ³ý²»¿µ½¡µÄºó¶Ë·þÎñÆ÷ £¬²¢½«Á÷Á¿µ¼Ïò¿µ½¡µÄ·þÎñÆ÷ £¬Ìá¸ßÁËϵͳµÄ½áʵÐÔ¡£

health_checkinterval=5sfails=3passes=2uri=/health;(ÐèÒªngx_http_upstream_hc_module)»ùÓÚµØÀíλÖõĵ÷Àí:ͨ¹ýÅäºÏGeoIPÄ£¿é»òÍⲿ·þÎñ £¬Nginx¿ÉÒÔʵÏÖ»ùÓÚÓû§µØÀíλÖõÄÁ÷Á¿µ÷Àí £¬½«Óû§Ö¸µ¼ÖÁµØÀíλÖÃ×î½ü¡¢ÍøÂç×îÓŵķþÎñÆ÷¼¯Èº £¬½øÒ»²½½µµÍÑÓ³Ù¡£

Õ¹ÍûδÀ´ £¬HTTP/3»ùÓÚQUICЭÒé £¬½øÒ»²½½â¾öÁËTCPµÄ?¶ÓÍ·ÛÕ±ÕÎÊÌâ £¬ÌṩÁ˸üµÍµÄÅþÁ¬½¨ÉèÑӳٺ͸üÇ¿µÄ¿¹¶ª°üÄÜÁ¦ £¬¹ØÓÚ²»?Îȹ̵ÄÍøÂçÇéÐÎϵÄÊÓÆµ´«Ê佫´øÀ´¸ü¼ÑµÄÌåÑé¡£NginxÒ²ÔÚÆð¾¢Óµ±§HTTP/3 £¬Í¨¹ýÉèÖú͵ÚÈý·½Ä£¿é £¬¿ÉÒÔÖð²½¹ý¶Éµ½?ÕâÒ»¸üÏȽøµÄЭÒé¡£

HLSºÍDASHµÄÉî¶ÈÓÅ»¯£ºNginxÔÚ´¦Öóͷ£HLSºÍDASHÕâÁ½ÖÖÖ÷Á÷µÄ×Ô˳ӦÁ÷ýÌåЭÒéʱ £¬ÐèÒªÌØÊâ¹Ø×¢Æä¶Ô´ó×ÚСÎļþµÄ´¦Öóͷ£ÄÜÁ¦¡£

HLS(HTTPLiveStreaming)£ºHLSЭÒ齫ÊÓÆµÖ§½â³ÉһϵÁÐСµÄtsÎļþ £¬²¢?ͨ¹ýÒ»¸öm3u8Ë÷ÒýÎļþÀ´ÐÎòÕâЩƬ¶ÏµÄ²¥·Å˳Ðò¡£NginxÐèÒªÄܹ»¸ßЧµØ»º´æºÍÌṩÕâЩ´ó×ÚµÄtsÎļþ¡£

ÓÅ»¯Õ½ÂÔ£º´óÎļþ·ÖƬ´«?Ê䣺ËäÈ»HLS×Ô¼ºÊÇ·ÖÆ¬´«Êä £¬µ«Nginx¿ÉÒÔͨ¹ýsendfileon;ºÍtcp_nopushon;µÈ?Ö¸ÁîÓÅ»¯ÎļþµÄ¶ÁÈ¡ºÍ·¢ËÍЧÂÊ¡£WorkerÀú³ÌÓëÎļþÐÎò·û£ºÈ·±£NginxµÄworker_processesÊýÄ¿ºÍworker_connectionsÉèÖúÏÀí £¬ÒÔÓ¦¶Ôº£Á¿Ð¡ÎļþµÄ²¢·¢ÇëÇó¡£

Ò»¡¢»ù´¡ÉèÖÃÓÅ»¯£ºÎªÐÔÄܵÓÚ¨¼áʵ»ù´¡

×ÝÈ»ÊÇĬÈÏÉèÖà £¬NginxµÄÐÔÄÜÒ²ÒÑÏ൱¾«²Ê £¬µ«Í¨¹ýһЩ»ù´¡µÄ²ÎÊýµ÷½â £¬¿ÉÒÔÏÔÖøÌáÉýÆäÔÚÊÓÆµÁ÷ýÌ峡¾°ÏµÄÌåÏÖ¡£

WorkerÀú³ÌÓëCPU½¹µãµÄÓ³É䣺NginxµÄworker_processes²ÎÊý¾öÒéÁËÊÂÇéÀú³ÌµÄÊýÄ¿¡£Í¨³£½¨Ò齫ÆäÉèÖÃΪÓë·þÎñÆ÷CPU½¹µãÊýÒ»Ö £¬»òÕßÂÔÉÙÓÚCPU½¹µãÊý¡£ÕâÑù¿ÉÒÔ³ä·ÖʹÓöàºËCPUµÄ²¢Ðд¦Öóͷ£ÄÜÁ¦ £¬×èÖ¹ÒòÀú³ÌÊý¹ý¶àµ¼ÖµÄÉÏÏÂÎÄÇл»¿ªÏú¡£

ÀýÈç £¬ÈôÊÇÄúµÄ·þÎñÆ÷ÓÐ8¸öCPU½¹µã £¬¿ÉÒÔÉèÖÃworker_processes8;¡£

WorkerÅþÁ¬Êý£ºworker_connections²ÎÊý½ç˵ÁËÿ¸öÊÂÇéÀú³ÌÄܹ»´¦?ÀíµÄ×î´ó²¢·¢ÅþÁ¬Êý¡£Õâ¸öÖµÐèҪƾ֤ÄúµÄ·þÎñÆ÷ÄÚ´æºÍÏÖʵµÄ²¢·¢ÐèÇóÀ´É趨¡£Ò»¸ö½Ï¸ßµÄworker_connectionsÖµÒâζ×Åÿ¸öÊÂÇéÀú³Ì¿ÉÒÔͬʱ¹ÜÀí¸ü¶àµÄÅþÁ¬ £¬µ«Ò²Òª×¢ÖØÄÚ´æÏûºÄ¡£

¹ØÓÚÊÓÆµÁ÷ýÌå £¬Ë¼Á¿µ½?ÿ¸öÅþÁ¬¿ÉÄÜÐèÒª½Ï³¤Ê±¼äµÄ¼á³Ö£¨ÓÈÆäÊÇÔÚÖ±²¥ÖУ© £¬ÉèÖÃÒ»¸öºÏÀíµÄÖµºÜÊÇÖ÷Òª¡£¹«Ê½max_clients=worker_processes*worker_connections¿ÉÒÔ×ÊÖúÄú¹ÀËãÕû¸ö·þÎñÆ÷Äܹ»Ö§³ÖµÄ×î´ó²¢·¢ÅþÁ¬Êý¡£

ÉèÖÃʾÀý£º

http{#...otherhttpconfigurations...open_file_cachemax=2000inactive=20s;open_file_cache_valid30s;open_file_cache_min_uses2;open_file_cache_errorson;}max£º»º´æÖпÉÒÔ´æ´¢µÄ?×î´óÎļþÐÎò·ûÊýÄ¿¡£

inactive£ºÈôÊÇÒ»¸öÎļþÐÎò·ûÔÚָ׼ʱ¼äÄÚûÓб»»á¼û £¬½«±»´Ó»º´æÖÐɾ³ý¡£open_file_cache_valid£º¼ì²é»º´æÖÐÎļþÐÎò·ûµÄÓÐÓÃÐÔ¾àÀë¡£open_file_cache_min_uses£ºÎļþÐÎò·ûÖÁÉÙÐèÒª±»»á¼û¼¸¶à´Î²Å»ª±»»º´æ¡£

SendfileºÍtcpnopush/tcpnodelay£º

sendfileon;£ºÆôÓÃÄÚ´æÁ㿽±´¡£ÈçǰËùÊö £¬ÕâÄܼ«´óµØÌáÉýÎļþ´«ÊäЧÂÊ¡£tcp_nopushon;£ºÔÚNginx·¢ËÍÏìӦͷ֮ºó £¬²»Á¬Ã¦·¢ËÍÊ£ÓàµÄÊý¾Ý £¬¶øÊÇÆÚ´ýÎļþÊý¾Ý×¼±¸ºÃºó £¬Ò»´ÎÐÔ·¢ËÍ¡£Õâ¿ÉÒÔïÔÌ­TCP±¨ÎĵÄÊýÄ¿ £¬Ìá¸ß´«ÊäЧÂÊ¡£

NginxͬÑùÐèÒª¸ßЧµØ´¦Öóͷ£ÕâЩýÌ寬¶Ï¡£

ÓÅ»¯Õ½ÂÔ£ºRangeÇëÇó´¦Öóͷ££ºDASHЭÒéÆÕ±éʹÓÃHTTPµÄRangeÇëÇóÀ´»ñȡýÌ寬¶ÏµÄÌØ¶¨²¿·Ö¡£NginxÄܹ»¸ßЧµØ´¦Öóͷ£RangeÇëÇó £¬È·±£Ö»´«ÊäÓû§ËùÐèµÄÊý¾Ý¡£Content-TypeÉèÖãº×¼È·ÉèÖÃContent-Type £¬È·±£?ä¯ÀÀÆ÷Äܹ»×¼È·ÆÊÎö.mp4¡¢.webmµÈýÌåÎļþ¡£

MIMEÀàÐÍÉèÖãºÔÚmime.typesÎļþÖÐÈ·±£ËùÓÐýÌåÃûÌö¼ÓÐ׼ȷµÄMIMEÀàÐÍ¡£

Ö±²¥ÍÆÁ÷Óë·Ö·¢£º¹ØÓÚʵʱֱ²¥³¡¾° £¬Nginxͨ³£?×÷Ϊ½ÓÈë²ãºÍ·Ö·¢²ã¡£

RTMP/SRTÄ£¿é£ºNginx¿ÉÒÔͨ¹ýµÚÈý·½Ä£¿é£¨Èçnginx-rtmp-module»ònginx-srt-module£©Ö§³ÖRTMP»òSRTµÈÖ±²¥ÍÆÁ÷ЭÒé £¬ÎüÊÕÀ´×ÔÖ±²¥Ô´µÄÊÓÆµÁ÷ £¬È»ºó½«ÆäתÂëΪHLS»òDASHÃûÌà £¬ÔÙͨ¹ýHTTPЭÒé·Ö·¢¸øÖÕ¶ËÓû§ £¬ÊµÏÖ¡°ÍÆÁ÷-תÂë-·Ö·¢¡±µÄÒ»Ì廯Á÷³Ì¡£

µÍÑÓ³ÙÖ±²¥£ºÍŽáHTTP/3µÄQUICЭÒé»òµÍÑÓ³ÙHLS£¨LL-HLS£©µÈÊÖÒÕ £¬Nginx¿ÉÒÔ½øÒ»²½½µµÍÖ±²¥µÄÑÓ³Ù? £¬¿¿½üʵʱ»¥¶¯ÌåÑé¡£

½áÓNginx £¬Á÷ýÌåδÀ´µÄÇý¶¯Á¦

¡°Nginx100%ÊÓÆµÓÅ»¯¡±²¢·ÇÒ»¸ö¼òÆÓµÄÉèÖÃÏî £¬¶øÊÇÒ»¸öº­¸ÇÁË·þÎñÆ÷ÐÔÄܵ÷ÓÅ¡¢ÍøÂçЭÒéÉý¼¶¡¢ÄÚÈÝ·Ö·¢Õ½ÂÔÒÔ¼°Çå¾²°ü¹ÜµÄϵͳÐÔ¹¤³Ì¡£Í¨¹ýÉîÈëÃ÷È·NginxǿʢµÄ?»º´æ»úÖÆ¡¢Ï¸Ä廯µÄÁ÷Á¿¿ØÖÆ¡¢¶ÔHTTP/2ºÍHTTP/3£¨QUIC£©µÄÖ§³Ö £¬ÒÔ¼°Óë±ßÑØÅÌËãµÄÍŽá £¬ÎÒÃÇ¿ÉÒÔ¹¹½¨³öÕæÕý¸ßЧ¡¢Îȹ̡¢µÍÑÓ³ÙµÄÊÓÆµÁ÷ýÌå·þÎñ¡£

Nginx²»µ«½öÊÇÒ»¸öWeb·þÎñÆ÷ £¬¸üÊÇÇý¶¯Î´À´Á÷ýÌåÊÖÒÕÉú³¤µÄÖ÷ÒªÒýÇæ £¬ËüÕýÔÚ×ÊÖúÎÒÃÇÍ»ÆÆÍøÂç±ÚÀÝ £¬ÊµÏÖØ¨¹ÅδÓеÄÁ÷ͨ?¹ÛÓ°ÌåÑé £¬ÈÃÿһ¸ö¾«²Ê˲¼ä £¬¶¼ÄÜ´¥´ï?Óû§ £¬²»ÁôÒź¶¡£

µ±Ä³Ì¨ºó¶Ë·þÎñÆ÷±¬·¢¹ÊÕÏʱ £¬NginxÄܹ»ÖÇÄܵؽ«Á÷Á¿Çл»µ½ÆäËû¿µ½¡·þÎñÆ÷ £¬°ü¹Ü·þÎñµÄÒ»Á¬ÐÔ £¬ÈÃÓû§ÏÕЩ¸ÐÊܲ»µ½ÈκÎÖÐÖ¹¡£

ÓÅÒìµÄ¾²Ì¬Îļþ´¦Öóͷ£ÄÜÁ¦£ºÊÓÆµÎļþʵÖÊÉÏÊǾ²Ì¬×ÊÔ´¡£NginxÔÚ´¦Öóͷ£¾²Ì¬Îļþ·½ÃæÓÐ×ÅÎÞÓëÂױȵÄЧÂÊ £¬ËüÄܹ»Ö±½Ó´ÓÎļþϵͳÖжÁÈ¡Îļþ²¢·¢Ë͸ø¿Í»§¶Ë £¬ÎÞÐè¾­ÓÉÖØ´óµÄÓ¦Óò㴦Öóͷ£ £¬´ó´ó?Ìá¸ßÁË´«ÊäËÙÂÊ¡£¹ØÓڵ㲥?ÊÓÆµ £¬Nginx¿ÉÒÔÖ±½Ó×÷ΪÎļþ·þÎñÆ÷ £¬ÎªÓû§Ìṩ¸ßËÙµÄÏÂÔØºÍ²¥·Å·þÎñ¡£

ÎÞаµÄÄ£¿é»¯Éè¼ÆÓ븻ºñµÄµÚÈý·½Ä£¿é£ºNginxÓµÓÐǿʢµÄÄ£¿é»¯¼Ü¹¹ £¬¿ÉÒÔÆ¾Ö¤ÐèÇó¼ÓÔØ»òÒÆ³ý²î±ðµÄ¹¦Ð§Ä£¿é¡£ÕâʹµÃNginx¼«¾ß¿ÉÀ©Õ¹ÐÔ¡£ÀýÈç £¬ngx_http_flv_module¡¢ngx_http_mp4_moduleµÈÄ£¿éÄܹ»×ÊÖúNginx¸ü¸ßЧµØ´¦Öóͷ£Ìض¨µÄÊÓÆµÃûÌã»¶øngx_http_vhost_traffic_status_moduleÔò¿ÉÒÔÌṩʵʱµÄ?Á÷Á¿¼à¿ØÐÅÏ¢ £¬×ÊÖú¹ÜÀíԱʵʱ·¢Ã÷Ï¢Õù¾öÎÊÌâ¡£

ÉçÇø»¹¿ª·¢ÁËÐí¶àÓÅÒìµÄµÚ?Èý·½Ä£¿é £¬ÎªNginxÔöÌíÁ˸ü¶àǿʢµÄ¹¦Ð§ £¬ÈçÊÓÆµ×ªÂ롢ˮӡÌí¼ÓµÈ £¬½øÒ»²½¸»ºñÁËÆäÔÚÊÓÆµÁìÓòµÄÓ¦Óó¡¾°¡£

Èý¡¢¸ß¼¶ÓÅ»¯£º¾«µñϸ×Á £¬×·Çó¼«ÖÂÐÔÄÜ

HTTP/2ºÍHTTP/3µÄÓ¦ÓãºËæ×ÅÍøÂçÊÖÒÕµÄÉú³¤ £¬HTTP/2ºÍHTTP/3ЭÒéµÄ·ºÆðΪÊÓÆµ´«Êä´øÀ´Á˸ïÃüÐÔµÄˢС£HTTP/2ÒýÈëÁ˶à·¸´Óá¢Í·²¿Ñ¹Ëõ¡¢·þÎñÆ÷ÍÆË͵ÈÌØÕ÷ £¬ÏÔÖøïÔÌ­ÁËÍøÂçÑÓ³Ù £¬Ìá¸ßÁË´«ÊäЧÂÊ¡£HTTP/3¸üÊÇ»ùÓÚQUICЭÒé £¬½â¾öÁËTCPÔÚ¶ª°ü³¡¾°ÏµĶӱßÛÕ±ÕÎÊÌâ £¬½øÒ»²½ÌáÉýÁËÔÚ²»ÎȹÌÍøÂçÇéÐÎϵÄÊÓÆµ²¥·ÅÌåÑé¡£

ÔÚNginxÖÐÆôÓÃHTTP/2»òHTTP/3 £¬¿ÉÒÔÏÔÖøÌáÉýÊÓÆµ¼ÓÔØËÙÂʺͲ¥·ÅÁ÷ͨ¶È £¬ÓÈÆäÊÇÔÚÍøÂçÖÊÁ¿²»¼ÑµÄÇéÐÎÏ¡£

ÆôÓÃTCPNODELAYºÍTCPNOPUSH£ºtcp_nodelayon;²ÎÊý¿ÉÒÔ½ûÓÃNagleËã·¨ £¬Ëü»áʵÑ齫СµÄÊý¾Ý°ü¾ÛºÏÆðÀ´Ò»Æð·¢ËÍ £¬ÕâÔÚÍøÂçÑӳٽϸßʱ¿ÉÄܵ¼ÖÂÐÂÎÅÑÓ³Ù¡£¹ØÓÚÊÓÆµÁ÷ £¬×ÝÈ»ÊÇСµÄÊý¾Ý¿éÒ²ÐèÒª¾¡¿ì·¢ËÍ £¬ÒÔ°ü¹ÜʵʱÐÔ¡£

tcp_nopushon;ÔòÔÊÐíNginxÔÚ·¢ËÍÎļþÄÚÈÝ֮ǰ £¬¾¡¿ÉÄÜ¶àµØ½«ÏìӦͷһ´ÎÐÔ·¢ËͳöÈ¥ £¬ÕâÒ²ÄÜÓÅ»¯ÐÔÄÜ¡£

¶þ¡¢ÊÓÆµÁ÷ýÌåרÏîÓÅ»¯£ºHLS/DASHÓëRTMPµÄÉî¶ÈÕûºÏ

¹ØÓÚÊÓÆµÁ÷ýÌå £¬NginxµÄÉèÖû¹ÐèÒªÕë¶ÔÐÔµØË¼Á¿HLS/DASHºÍRTMPµÈЭÒéµÄÌØµã¾ÙÐÐÓÅ»¯¡£

4.HTTP/3ÓëQUICЭÒ飺Ç㸲ÐԵĴ«Êä¸ïÃü

HTTP/3ÊÇHTTPЭÒéµÄ×îÐÂÒ»´ú £¬Ëü×îÏÔÖøµÄÌØµãÊǽÓÄÉÁËQUIC£¨QuickUDPInternetConnections£©×÷ΪÆä´«Êä²ãЭÒé £¬È¡´úÁËTCP¡£QUICЭÒé»ùÓÚUDP £¬´øÀ´ÁËÖî¶à¸ïÃüÐÔµÄˢР£¬¹ØÓÚÊÓÆµÁ÷ýÌå¶øÑÔ £¬ÆäÓÅÊÆÓÈΪͻ³ö¡£

½â¾öTCP¶ÓÍ·ÛÕ±Õ(Head-of-LineBlocking)£ºÔÚHTTP/1.1ºÍHTTP/2ÖÐ £¬ÈôÊÇÒ»¸öTCPÅþÁ¬ÉϵÄij¸öÊý¾Ý°üɥʧ £¬Õû¸öÅþÁ¬ÉϵÄËùÓÐÊý¾Ý´«Êä¶¼»áÊܵ½Ó°Ïì £¬Ö±µ½¸ÃÊý¾Ý°ü±»ÖØ´«¡£¶øQUICÔÚÓ¦ÓòãʵÏÖÁ˿ɿ¿ÐÔ´«Êä £¬×ÝȻһ¸öÁ÷ÖеÄÊý¾Ý°üɥʧ £¬Ò²²»?»áÛÕ±ÕÆäËû×ÔÁ¦Á÷µÄÊý¾Ý´«Êä¡£

ÕâÒâζ×Å £¬ÔÚÒ»¸öÊÓÆµÁ÷·ÖƬ´«ÊäÀú³ÌÖÐ £¬×ÝȻij¸öÇÐÆ¬µÄÊý¾Ý°üɥʧ £¬ÆäËûÇÐÆ¬µÄÏÂÔØÒ²ÄܼÌÐø¾ÙÐÐ £¬¼«´óµØÌá¸ßÁËÊÓÆµ²¥·ÅµÄÎȹÌÐÔ £¬ÓÈÆäÊÇÔÚ²»Îȹ̵ÄÍøÂçÇéÐÎÏ¡£¸ü¿ìµÄÅþÁ¬½¨É裺QUICЭÒéÄܹ»ÔÚ0-RTT£¨0Round-TripTime£©»ò1-RTTµÄÑÓ³ÙÄÚ½¨ÉèÅþÁ¬ £¬ÏÔÖø¿ìÓÚTCPµÄ3-wayhandshake£¨Í¨³£ÐèÒª2-3¸öRTT£©¡£

5.±ßÑØÅÌËãÓëÖÇÄÜ·Ö·¢£º½«ÅÌËãÓëÄÚÈÝÍÆÏòÓû§²à

Ëæ×ÅÎïÁªÍøºÍ5GÊÖÒÕµÄÉú³¤ £¬±ßÑØÅÌË㣨EdgeComputing£©ÕýÖð½¥³ÉΪÏÂÒ»´úÍøÂç¼Ü¹¹µÄÖ÷Òª×é³É²¿·Ö¡£½«ÅÌËãÄÜÁ¦ºÍÄÚÈÝ·Ö·¢ÄÜÁ¦ÍÆÏòÍøÂç±ßÑØ £¬¿¿½üÓû§ £¬Äܹ»½øÒ»²½½µµÍÑÓ³Ù £¬ÌáÉýÏìÓ¦ËÙÂÊ¡£

NginxEdgeServer£ºNginx¿ÉÒÔ×÷Ϊ±ßÑØ·þÎñÆ÷ £¬°²ÅÅÔÚÔËÓªÉÌÍøÂç±ßÑØ»ò¿¿½üÓû§µÄÊý¾ÝÖÐÐÄ¡£Ëü²»µ«¿ÉÒÔ»º´æÊÓÆµÄÚÈÝ £¬»¹¿ÉÒÔÖ´ÐÐһЩÇáÁ¿¼¶µÄÅÌËãʹÃü £¬ÀýÈ磺ÖÇÄÜ»º´æÕ½ÂÔ£º»ùÓÚÓû§ÐÐΪ¡¢µØÀíλÖá¢Ê±¼äµÈÒòËØ £¬¶¯Ì¬µ÷½â»º´æÕ½ÂÔ £¬½«×î¿ÉÄܱ»Óû§»á¼ûµÄ?ÄÚÈÝÔ¤ÏȼÓÔØµ½±ßÑØ½Úµã¡£

ÄÚÈÝתÂëÓë·â×°£ºÔÚ±ß??Ôµ¾ÙÐÐÊÓÆµµÄ?תÂë¡¢ÇÐÆ¬£¨ÈçHLS,DASH£© £¬Ê¹Æä˳Ӧ²î±ð×°±¸ºÍÍøÂçÌõ¼þ £¬Ö±½ÓΪÓû§Ìṩ×îÓÅ»¯µÄÊÓÆµÃûÌá£Á÷Á¿ÕûÐÎÓëQoS£ºÔÚ±ßÑØ¾ÙÐиüϸÄ廯µÄÁ÷Á¿¿ØÖƺÍÖÊÁ¿°ü¹Ü £¬ÓÅÏȰü¹ÜÖ±²¥»ò¸ßÓÅÏȼ¶ÊÓÆµµÄÁ÷ͨ²¥·Å¡£µÍÑÓ³ÙÖ±²¥£º±ßÑØÅÌËãÓÈÆäÊʺϵÍÑÓ³ÙÖ±²¥³¡¾°¡£

ͨ¹ý½«Ö±²¥Á÷ÍÆË͵½±ßÑØ½Úµã £¬Óû§¿ÉÒÔÖ±½Ó´Ó×î½üµÄ±ßÑØ·þÎñÆ÷»ñȡֱ²¥»­Ãæ £¬×î´óÏ޶ȵØïÔÌ­ÑÓ³Ù £¬ÊµÏÖ¿¿½üʵʱµÄԢĿÌåÑé¡£NginxÔÚ´ËÀú³ÌÖÐ £¬¿ÉÒԼ縺Á÷µÄ½ÓÈë¡¢·Ö·¢¡¢»º´æºÍתÂëµÈÒªº¦Ê¹Ãü¡£

½¹µãÓÅ»¯Õ½ÂÔÈý£ºÓµ±§Á÷ýÌåЭÒé £¬ÊµÏÖÎÞ·ì²¥·Å£¡

ÏÖ´úÁ÷ýÌå²¥·ÅÔçÒѲ»ÊǼòÆÓµÄÎļþÏÂÔØ £¬¶øÊÇ»ùÓÚһϵÁÐÓÅ»¯µÄЭÒéÀ´ÊµÏֵġ£NginxÒÀ¸½ÆäǿʢµÄÄ£¿é»¯Éè¼ÆºÍÎÞаÐÔ £¬Äܹ»ÍêÉÆÖ§³ÖÖ÷Á÷µÄÁ÷ýÌåЭÒé £¬ÎªÓû§Ìṩ¸ü¼ÑµÄ²¥·ÅÌåÑé¡£

HTTPLiveStreaming(HLS)£ºHLSÊÇÓÉAppleÌá³öµÄÁ÷ýÌå´«ÊäЭÒé £¬Ëü½«ÊÓÆµÄÚÈÝÖ§½â³ÉһϵÁÐСµÄ¡¢»ùÓÚHTTPµÄ.tsýÌåÎļþ £¬²¢Î¬»¤Ò»¸ö.m3u8µÄ²¥·ÅÁбíÎļþ¡£Nginx¿ÉÒÔºÜÊǸßЧµØ·Ö·¢ÕâЩ.tsÎļþºÍ.m3u8Îļþ¡£

NginxµÄHLSÖ§³Ö£ºNginx×Ô¼º²¢²»Ö±½ÓÌṩHLS´ò°ü¹¦Ð§£¨Õâͨ³£ÔÚÊÓÆµ×ªÂë·þÎñÆ÷ÉÏÍê³É£© £¬µ«ËüÈ´ÊÇ·Ö·¢HLSÁ÷µÄÀíÏë·þÎñÆ÷¡£Äã¿ÉÒÔ½«×ªÂëºóµÄHLSÎļþ´æ·ÅÔÚNginxÄܹ»»á¼ûµÄĿ¼ £¬È»ºóͨ¹ýNginx¾ÙÐиßЧÂʵÄHTTP´«Êä¡£ÓÅ»¯HLS´«Ê䣺»º´æÕ½ÂÔ£º¶Ô.m3u8²¥·ÅÁбíÎļþºÍ.tsýÌåÎļþÉèÖúÏÀíµÄ»º´æÕ½ÂÔÖÁ¹ØÖ÷Òª¡£

.m3u8Îļþͨ³£×ª±ä½Ï¿ì £¬¿ÉÒÔÉèÖý϶̵Ļº´æÊ±¼ä £¬¶ø.tsÎļþÔòת±ä½ÏÉÙ £¬¿ÉÒÔÉèÖýϳ¤µÄ»º´æÊ±¼ä¡£NginxµÄ?proxy_cacheÖ¸Áî¿ÉÒԺܺõØÖª×ãÕâÖÖÐèÇó¡£·ÖƬ´«ÊäÓÅ»¯£ºHLSµÄÓÅÊÆÔÚÓÚÆä·ÖƬ´«?Êä £¬×ÝÈ»µ¥¸ö.tsÎļþ´«Êäʧ°Ü £¬²¥·ÅÆ÷Ò²¿ÉÒÔ³¢?ÊÔÇëÇóÏÂÒ»¸ö¡£

Nginx×îа汾ÒÔÆäÔÚCDN¡¢±ßÑØÅÌËã¡¢Ö±²¥ÊÖÒÕ¡¢ÊÓÆµ´¦Öóͷ£µÈ¶à¸öά¶ÈµÄÖÜÈ«Í»ÆÆ £¬ÕæÕýʵÏÖÁË¡°100%ÊÓÆµ²¥·Å100%¡±µÄÔÊÐí¡£Ëü²»µ«ÎªÓû§´øÀ´ÁËØ¨¹ÅδÓеÄÁ÷ͨ¹ÛÓ°ÌåÑé £¬¸üΪ¿ª·¢ÕߺÍÄÚÈÝÌṩÉÌÌṩÁ˹¹½¨ÏÂÒ»´úÊÓÆµÓ¦ÓõÄǿʢƽ̨¡£ÎÞÂÛÄúÊÇÖÂÁ¦ÓÚÌṩ³¬¸ßÇåµã²¥·þÎñ £¬Õվɹ¹½¨ÊµÊ±»¥¶¯Ö±²¥Æ½Ì¨ £¬Òà»òÊÇ̽Ë÷ÊÓÆµÄÚÈÝ´¦Öóͷ£µÄÐÂģʽ £¬Nginx×îа汾¶¼½«ÊÇÄú²»¿É»òȱµÄǿʢÖúÁ¦ £¬ÒýÁìÄúÂõÏòÊÓÆµÊÖÒÕÓ¦ÓõÄȫмÍÔª¡£

TURN/STUN·þÎñÆ÷µÄ°²ÅÅ£ºÔÚÖØ´óµÄÍøÂçÇéÐÎÖÐ £¬Ö±½ÓµÄP2PÅþÁ¬¿ÉÄÜÊÜÏÞÓÚNAT£¨NetworkAddressTranslation£©ºÍ·À»ðǽ¡£Nginx¿ÉÒÔ×÷ΪSTUN£¨SessionTraversalUtilitiesforNAT£©·þÎñÆ÷ £¬×ÊÖú¿Í»§¶Ë·¢Ã÷Æä¹«ÍøIPµØÖ·ºÍ¶Ë¿Ú¡£

¸üÖ÷ÒªµÄÊÇ £¬Nginx¿ÉÒÔ°²ÅÅTURN£¨TraversalUsingRelaysaroundNAT£©·þÎñÆ÷ £¬×÷ΪýÌåÁ÷µÄÖÐ¼Ì £¬È·±£Í¨Ñ¶µÄ¿É¿¿ÐÔ¡£Í¨¹ýÉèÖÃNginxµÄ·´Ïò´úÀíÄÜÁ¦ £¬¿ÉÒÔÇáËɵؽ«STUN/TURNЭÒéµÄÁ÷Á¿×ª·¢µ½×¨ÃŵÄýÌå·þÎñÆ÷¡£

ÐÔÄÜÓëÇå¾²ÐÔ£ºNginxµÄ¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦ £¬Ê¹ÆäÄܹ»Îȹ̵ØÖ§³Ö´ó¹æÄ£Óû§Í¬Ê±¾ÙÐÐWebRTCͨѶ¡£NginxµÄSSL/TLS¼ÓÃÜÄÜÁ¦ £¬Ò²ÄÜΪWebRTCͨѶÌṩ¶Ëµ½¶ËµÄÇå¾²°ü¹Ü¡£

Nginx£ºÊÓÆµÁ÷ýÌåÁìÓòµÄÐÔÄÜÍõÕß

ÔÚÐÅÏ¢±¬?Õ¨µÄʱ´ú £¬ÊÓÆµÒѾ­³ÉΪÎÒÃÇÉúÑÄÖв»¿É»òȱµÄÒ»²¿·Ö¡£ÎÞÂÛÊǾ«²ÊµÄÓ°Ï·¡¢Éú¶¯µÄÖ±²¥ £¬Õվɸ»ÓнÌÓýÒâÒåµÄ½ÌѧÊÓÆµ £¬Á÷ͨµÄԢĿÌåÑé¶¼ÖÁ¹ØÖ÷Òª¡£ÊÓÆµÁ÷ýÌå·þÎñµÄ±³ºó £¬ÍùÍùÒþ²Ø×ÅÖØ´óµÄÊÖÒÕÌôÕ½¡£ÔõÑùÔڸ߲¢·¢»á¼ûϱ£?Ö¤ÊÓÆµµÄÁ÷ͨ²¥·Å£¿ÔõÑùÓÐÓýµµÍ·þÎñÆ÷ѹÁ¦ £¬½ÚÔ¼±¾Ç®£¿Nginx £¬×÷Ϊһ¿î¸ßÐÔÄܵÄWeb·þÎñÆ÷ºÍ·´Ïò´úÀí·þÎñÆ÷ £¬ÒÀ¸½Æä׿ԽµÄÐÔÄܺÍÎÞаµÄÉèÖà £¬³ÉΪÏàʶ¾öÕâЩÎÊÌâµÄÀûÆ÷ £¬ÎªÊµÏÖ¡°Nginx100%ÊÓÆµ £¬100%ÐÔÄÜ¡±µÄÄ¿µÄÌṩÁ˼áʵµÄÊÖÒÕÖ§³Ö¡£

Ò»¡¢NginxµÄ½¹µãÓÅÊÆ£ºÎªÊ²Ã´Ñ¡ÔñËüÀ´´¦Öóͷ£ÊÓÆµ£¿

NginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµÁ÷ýÌåÁìÓòÍÑÓ±¶ø³ö £¬Ô´ÓÚÆäÆæÒìµÄÉè¼ÆÀíÄîºÍǿʢµÄ¹¦Ð§¼¯¡£

ÊÂÎñÇý¶¯ £¬Òì²½·ÇÛÕ±ÕI/OÄ£×Ó£ºÕâÊÇNginxÐÔÄÜ׿ԽµÄ»ùʯ¡£¹Å°åµÄWeb·þÎñÆ÷£¨ÈçApache£©½ÓÄÉÀú³Ì»òÏß³ÌÄ£×Ó £¬Ã¿¸öÇëÇó¶¼»áÏûºÄÒ»¸öÀú³Ì»òÏß³Ì £¬Ôڸ߲¢·¢³¡¾°ÏÂÈÝÒ×Ôì³É×ÊÔ´ºÄ¾¡ £¬ÐÔÄÜÆ¿¾±Í¹ÏÔ¡£¶øNginx½ÓÄÉÊÂÎñÇý¶¯Ä£×Ó £¬Ê¹ÓÃepoll¡¢kqueueµÈ¸ßЧµÄI/O¶à·¸´ÓÃÊÖÒÕ £¬Äܹ»ÓÃÉÙÉÙµÄ?Àú³ÌºÍÏ̴߳¦Öóͷ£º£Á¿²¢·¢ÅþÁ¬¡£

NginxµÄ½¹µãÓÅÊÆ£ºÎªÊÓÆµÁ÷Á¿Éí´òÔìµÄ¼Ü¹¹

NginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµÈö²¥ÊäÁìÓòÍÑÓ±¶ø³ö? £¬ÓëÆäÆæÒìµÄÉè¼Æ¼Ü¹¹Ãܲ»¿É·Ö¡£Óë¹Å°åµÄ»ùÓÚÀú³Ì?µÄWeb·þÎñÆ÷²î±ð £¬Nginx½ÓÄÉÁËÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄI/OÄ£×Ó¡£ÕâÒâζ×ÅNginx¿ÉÒÔÓÃÉÙÉÙµÄÀú³Ì?´¦Öóͷ£³ÉǧÉÏÍòµÄ²¢·¢ÅþÁ¬ £¬²¢ÇÒÿһ¸öÅþÁ¬ÔÚÆÚ´ýI/O²Ù×÷ʱ £¬²¢²»»áÛÕ±ÕÕû¸öÀú³Ì £¬¶øÊÇ¿ÉÒÔ¼ÌÐø´¦Öóͷ£ÆäËûÅþÁ¬µÄÇëÇó¡£

¹ØÓÚÊÓÆµÁ÷À´Ëµ £¬Õâ¼òÖ±ÊÇÁ¿Éí¶¨ÖÆ¡£ÊÓÆµÁ÷ÊÇÒ»Á¬µÄ¡¢¸ß´ø¿íµÄ´«Êä £¬¶¯éüÐèҪά³ÖÊýǧÉõÖÁÊýÍò¸ö³¤ÅþÁ¬¡£ÈôÊÇʹÓùŰåµÄ»ùÓÚÀú³ÌµÄ?Ä£×Ó £¬Ã¿¸öÊÓÆµÅþÁ¬¶¼¿ÉÄÜÏûºÄÒ»¸öÀú³Ì £¬ºÜ¿ì¾Í»áºÄ¾¡·þÎñÆ÷×ÊÔ´ £¬µ¼ÖÂÐÔÄÜÆ¿¾±¡£¶øNginxµÄÊÂÎñÇý¶¯Ä£×Ó £¬Äܹ»ÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄ £¬ÇáËÉÓ¦¶Ôº£Á¿ÊÓÆµÅþÁ¬¡£

ÏëÏóһϠ£¬Ò»¸öNginxÀú³Ì¾ÍÏñÒ»¸ö¸ßЧµÄ?Ö¸»Ó¹Ù £¬Äܹ»Í¬Ê±´¦Öóͷ£³ÉǧÉÏÍò¸öÊ¿±ø?£¨ÅþÁ¬£©µÄÖ¸Áî £¬¶ø²»?»áÓÉÓÚij¸öÊ¿±øµÄÐÝÏ¢¶øÕϰ­²»Ç°¡£

ÕâÒâζ×ÅNginx¿ÉÒÔ¾ø²»¼èÐÁµØ´¦Öóͷ£º£Á¿ÊÓÆµÎļþµÄ¿ìËÙ·Ö·¢¡£Ç¿Ê¢µÄ»º´æ»úÖÆ£º¹ØÓÚÆµÈÔ»á¼ûµÄÈÈÃÅÊÓÆµÄÚÈÝ £¬NginxµÄ»º´æ¹¦Ð§ÊÇÌáÉýÐÔÄܵÄÒªº¦¡£Í¨¹ýÉèÖÃproxy_cache»òfastcgi_cacheµÈÄ£¿é £¬¿ÉÒÔ½«ÊÓÆµÎļþ»º±£´æÄÚ´æ»ò´ÅÅÌÉÏ¡£

µ±Óû§ÔÙ´ÎÇëÇóÏàͬµÄÊÓÆµÊ± £¬Nginx¿ÉÒÔÖ±½Ó´Ó»º´æ?ÖÐÌṩ·þÎñ £¬ÎÞÐèÔٴδÓÔ´·þÎñÆ÷¶ÁÈ¡ £¬´Ó¶ø´ó´ó?½µµÍÁËÔ´·þÎñÆ÷µÄѹÁ¦ £¬Ëõ¶ÌÁËÏìӦʱ¼ä £¬ÊµÏÖÁ˽üºõ˲ʱµÄ»á¼ûÌåÑé¡£¸ßЧµÄGzipѹËõ£ºËäÈ»ÊÓÆµÎļþ×Ô¼ºÍ¨³£ÒѾ­¾­Óɸ߶ÈѹËõ £¬µ«¹ØÓÚһЩ¸¨ÖúÎļþ£¨ÈçÊÓÆµ²¥·ÅÆ÷ÉèÖÃÎļþ¡¢×ÖÄ»ÎļþµÈ£© £¬GzipѹËõÈÔÈ»ÄÜÆðµ½Ò»¶¨µÄ¼ÓËÙ×÷Óá£

NginxÄÚÖõÄGzipÄ£¿é¿ÉÒÔ¶ÔÕâЩÎı¾ÀàÊý¾Ý¾ÙÐÐʵʱѹËõ £¬ïÔÌ­´«ÊäÁ÷Á¿ £¬Ìá¸ß¼ÓÔØËÙÂÊ¡£HTTP/2&HTTP/3Ö§³Ö£ºËæ×Å»¥ÁªÍøÊÖÒÕµÄÉú³¤ £¬HTTP/2ºÍHTTP/3ЭÒéµÄ·ºÆðΪÊÓÆµ´«Êä´øÀ´ÁËеÄÊï¹â¡£Nginx¶ÔÕâЩÐÂЭÒéÌṩÁËÓÅÒìµÄÖ§³Ö¡£

HTTP/2µÄ¶à·¸´ÓÃÌØÕ÷¿ÉÒÔÏÔÖøïÔÌ­ÅþÁ¬Êý £¬½µµÍÑÓ³Ù£»HTTP/3Ôò»ùÓÚQUICЭÒé £¬½øÒ»²½ÓÅ»¯ÁËTCPÔÚ²»ÎȹÌÍøÂçϵÄÐÔÄÜ £¬ïÔÌ­Á˶ª°üÖØ´«´øÀ´µÄÓ°Ïì £¬¹ØÓÚÊÓÆµÁ÷µÄÎȹÌÐÔÖÁ¹ØÖ÷Òª¡£

Nginx»¹ÌṩÁËÁ÷Á¿¿ØÖÆ£¨RateLimiting£©¹¦Ð§ £¬ÕâÔÚÊÓÆµ·Ö·¢³¡¾°ÏÂÓÈΪÖ÷Òª¡£Í¨¹ýÉèÖÃlimit_req_zoneºÍlimit_reqÖ¸Áî £¬ÎÒÃÇ¿ÉÒÔÏÞÖÆµ¥Î»Ê±¼äÄÚÀ´×ÔͳһIPµØÖ·µÄÇëÇóÊýÄ¿ £¬ÓÐÓñÜÃâÒò¶ñÒâÅÀ³æ»òÍ»·¢Á÷Á¿¹¥»÷µ¼Ö·þÎñÆ÷¹ýÔØ £¬´Ó¶ø°ü¹ÜÕý³£Óû§Äܹ»»ñµÃÎȹÌÁ÷ͨ?µÄԢĿÌåÑé¡£

ϸÄåµÄ?Á÷Á¿¿ØÖÆÒ²¿ÉÒÔ×ÊÖúÔËÓªÉ̸üºÃµØ¹ÜÀí´ø¿í×ÊÔ´ £¬×èֹijЩÓû§Ì«¹ýÏûºÄ´ø¿í¶øÓ°ÏìÆäËûÓû§µÄ·þÎñÖÊÁ¿¡£

NginxÔÚHTTPS¼ÓÃÜ·½ÃæµÄÖ§³ÖÒ²ÊÇÊÓÆµÓÅ»¯µÄÒ»¸öÖ÷Òª×é³É²¿·Ö¡£ËäÈ»¼ÓÃÜ»á´øÀ´Ò»¶¨µÄÐÔÄÜ¿ªÏú £¬µ«¹ØÓÚ±£»¤Óû§Òþ˽ºÍÊý¾ÝÇå¾²ÖÁ¹ØÖ÷Òª¡£NginxÄܹ»¸ßЧµØ´¦Öóͷ£TLS/SSLÎÕÊÖ £¬²¢Í¨¹ýÖîÈçOCSPStapling¡¢SessionResumptionµÈÊÖÒÕÀ´ÓÅ»¯HTTPSµÄÐÔÄÜ £¬×î´óÏ޶ȵØïÔÌ­¼ÓÃÜ´øÀ´µÄÑÓ³Ù £¬È·±£ÊÓÆµ´«ÊäµÄÇå¾²Óë¸ßЧ¡£

×ܶøÑÔÖ® £¬Nginxͨ¹ýÆäÊÂÎñÇý¶¯¼Ü¹¹¡¢Ç¿Ê¢µÄ»º´æ»úÖÆ¡¢¶Ô×îÐÂHTTPЭÒéµÄÖ§³Ö¡¢¸ßЧµÄѹËõËã·¨¡¢Ï¸ÄåµÄÁ÷Á¿¿ØÖÆÒÔ¼°ÓÅ»¯µÄHTTPSʵÏÖ £¬Äܹ»ÖÜÈ«ÌáÉýÊÓÆµÄÚÈݵÄ?´«ÊäЧÂʺÍÓû§ÌåÑé £¬ÊÇʵÏÖ¡°Nginx100%ÊÓÆµÓÅ»¯¡±²»¿É»òȱµÄÀûÆ÷¡£

½ø½×֮·£ºNginxÊÓÆµÓÅ»¯µÄ?Éî¶È̽Ë÷Óëʵս

ÔÚǰһ²¿·Ö £¬ÎÒÃÇÒѾ­ÎªNginxÊÓÆµÓÅ»¯´òÏÂÁ˼áʵµÄ»ù´¡ £¬ÏàʶÁËÆä½¹µãÓÅÊÆºÍ»ù´¡ÉèÖü¼ÇÉ¡£ÒªÊµÏÖÕæÕýÒâÒåÉϵġ°100%ÊÓÆµÓÅ»¯¡± £¬½ö½öÍ£ÁôÔÚ»ù´¡?²ãÃæÊÇÔ¶Ô¶²»·óµÄ¡£ÊÓÆµÁ÷µÄ´«ÊäÉæ¼°µ½ÍøÂç¡¢·þÎñÆ÷¡¢¿Í»§¶ËµÈ¶à¸ö»·½Ú £¬ÈκÎÒ»¸ö»·½ÚµÄÆ¿¾±¶¼¿ÉÄܵ¼ÖÂÓû§ÌåÑéµÄϽµ¡£

Òò´Ë £¬ÎÒÃÇÐèÒª½øÒ»²½ÉîÈë £¬Ì½Ë÷NginxÔÚCDN¼¯³É¡¢Á÷ýÌåЭÒéÓÅ»¯¡¢ÐÔÄÜ¼à¿ØÒÔ¼°Çå¾²·À»¤µÈ·½ÃæµÄ½ø½×Ó¦Óá£

¸ºÔØÆ½ºâÓ뿵½¡¼ì²é£º¹¹½¨¸ß¿ÉÓÃÊÓÆµÆ½Ì¨

¹ØÓÚ´óÐÍÊÓÆµÆ½Ì¨¶øÑÔ £¬µ¥Ì¨Nginx·þÎñÆ÷ÄÑÒÔ³Ð?ÊÜÖØ´óµÄÁ÷Á¿¡£´Ëʱ £¬NginxµÄ¸ºÔØÆ½ºâ¹¦Ð§¾ÍÏÔµÃÓÈΪҪº¦¡£

¸ºÔØÆ½ºâÕ½ÂÔ£ºNginxÖ§³Ö¶àÖÖ¸ºÔØÆ½ºâËã·¨ £¬ÈçÂÖѯ(round-robin)¡¢×îÉÙÅþÁ¬(leastconn)¡¢IP¹þÏ£(iphash)µÈ¡£¹ØÓÚÊÓÆµ·þÎñ £¬least_connͨ³£ÊǸüÓŵÄÑ¡Ôñ £¬ÓÉÓÚËüÄܽ«ÇëÇó·ÖÅɸøÄ¿½ñÅþÁ¬Êý×îÉٵĺó¶Ë·þÎñÆ÷ £¬¸üÔȳƵØÊèÉ¢¸ºÔØ¡£

¿µ½¡¼ì²é£ºNginx¿ÉÒÔÉèÖÃupstreamÄ£¿éµÄhealth_checkÖ¸Áͨ³£ÐèÒªµÚÈý·½Ä£¿éÖ§³Ö £¬Èçnginx-upstream-fair»ònginx-plus£© £¬°´ÆÚ¼ì²âºó¶ËÊÓÆµ·þÎñÆ÷µÄ¿µ½¡×´Ì¬¡£µ±Ä³¸ö·þÎñÆ÷·ºÆð¹ÊÕÏʱ £¬Nginx»á×Ô¶¯½«Æä´Ó¿ÉÓÃÁбíÖÐÒÆ³ý £¬×èÖ¹½«Á÷Á¿·¢Ë͵½¹ÊÕÏ·þÎñÆ÷ £¬°ü¹ÜÁË·þÎñµÄ¿ÉÓÃÐÔ¡£

sendfileon;£ºÆôÓÃsendfileϵͳŲÓá£ÕâÊÇÒ»¸öLinuxÄں˹¦Ð§ £¬¿ÉÒÔÖ±½Ó½«Îļþ´ÓÒ»¸öÎļþÐÎò·û¸´ÖƵ½ÁíÒ»¸öÎļþÐÎò·û £¬ÈƹýÁËÓû§¿Õ¼ä £¬´ó´óÌá¸ßÁËÎļþ´«ÊäЧÂÊ £¬ÓÈÆäÊʺϴóÎļþµÄ´«Êä¡£tcp_nopushon;£ºµ±·¢ËÍÏìӦͷʱ £¬ÈôÊÇ¿ÉÄÜ £¬·¢ËÍËùÓÐÆÚ´ý·¢Ë͵ÄÊý¾Ý £¬¶ø²»ÊÇÆÚ´ý¸ü¶àµÄÊý¾Ý¡£

tcp_nodelayon;£º½ûÓÃNagleËã·¨ £¬×ÝÈ»ÔÚ·¢ËÍÉÙÁ¿Êý¾ÝʱҲÁ¬Ã¦·¢ËÍ £¬ïÔÌ­ÑÓ³Ù¡£

ÕâÈý¸öÑ¡ÏîÍŽáʹÓà £¬¿ÉÒÔÏÔÖøÌáÉýNginxÏò¿Í»§¶Ë·¢ËÍÊÓÆµÊý¾ÝµÄËÙÂʺÍЧÂÊ¡£

bufferºÍcache£ºïÔÌ­I/OѹÁ¦ £¬¼ÓËÙ»á¼û

NginxÌṩÁ˶àÖÖ»º´æ»úÖÆ £¬¿ÉÒÔÓÐÓÃïÔÌ­¶Ôºó¶Ë´æ´¢µÄÖ±½Ó»á¼û £¬ÌáÉýÏìÓ¦ËÙÂÊ¡£

proxybuffersizeºÍproxy_buffers£ºµ±Nginx×÷Ϊ·´Ïò´úÀí´¦Öóͷ£ÊÓÆµÁ÷ʱ £¬ÕâЩ²ÎÊý¾öÒéÁËÓÃÓÚ»º³å´úÀíÏìÓ¦µÄ»º³åÇø¾ÞϸºÍÊýÄ¿¡£ºÏÀíÉèÖÿÉÒÔïÔÌ­´úÀíµÄI/O²Ù×÷ £¬ÌáÉý´¦Öóͷ£ËÙÂÊ¡£openfilecacheºÍopenfilecache_valid£º»º´æ·­¿ªµÄÎļþÐÎò·ûºÍÎļþÔªÊý¾Ý¡£

ÈôÊDZ£´æ £¬ÔòÖ±½Ó´Ó»º´æÖÐÌṩ·þÎñ £¬ËÙÂʼ«¿ì¡£ÈôÊÇ»º´æÖв»±£´æ £¬Nginx²Å?»áÏòÔ´·þÎñÆ÷ÌᳫÇëÇó £¬²¢½«ÏìӦЧ¹û»º´æÆðÀ´ £¬È»ºóÔÙ·µ»Ø¸øÓû§¡£

ÉèÖÃÒªµã£ºproxy_cache_path£º½ç˵»º´æµÄ»ù±¾Â·¾¶¡¢¾ÞϸºÍÎļþÊýÄ¿ÏÞÖÆ¡£proxy_cache_key£º½ç˵»º´æµÄ¼ü £¬Í¨³£°üÀ¨ÇëÇóµÄURI¡¢Ö÷»úÃûµÈ £¬ÒÔÈ·±£»º´æµÄΨһÐÔ¡£proxy_cache_valid£ºÉèÖòî±ðHTTP״̬ÂëµÄ»º´æÊ±¼ä £¬ÀýÈç¶Ô200OKµÄÏìÓ¦¿ÉÒÔ»º´æ¸ü³¤Ê±¼ä¡£

proxy_cache_methods£ºÖ¸¶¨ÄÄЩHTTPÒªÁ죨ÈçGET¡¢HEAD£©µÄÏìÓ¦¿ÉÒÔ±»»º´æ¡£proxy_cache_bypass£º½çËµÈÆ¹ý»º´æµÄÌõ¼þ £¬ÀýÈçµ±Óû§ÊÇÌØ¶¨IPʱ £¬²»Ê¹Óûº´æ¡£add_headerX-Cache-Status$upstream_cache_status;£ºÔÚÏìӦͷÖÐÌí¼Ó»º´æ×´Ì¬ÐÅÏ¢ £¬Àû±ãµ÷ÊÔ¡£

¾²Ì¬Îļþ»º´æ£º¹ØÓÚÊÓÆµÁ÷ýÌåÖеÄһЩ¾²Ì¬×ÊÔ´ £¬ÈçÊÓÆµ·âÃæ¡¢ÔªÊý¾ÝÎļþ¡¢HLSµÄm3u8Ë÷ÒýÎļþµÈ £¬Nginx¿ÉÒÔÖ±½Óͨ¹ýlocationÖ¸Áî¾ÙÐиßЧµØ»º´æ¡£ÀýÈç £¬¿ÉÒÔ½«Ìض¨Ä¿Â¼ÏµÄÎļþÉèÖÃΪºã¾Ã»º´æ £¬µ±?Óû§»á¼ûÕâЩÎļþʱ £¬Ö±½ÓÓÉNginx¿ìËÙÏìÓ¦ £¬¼õÇáºó¶ËѹÁ¦¡£

¹ØÓÚÊÓÆµÁ÷ýÌåÕâÖÖÐèÒª³¤Ê±¼äά³ÖÅþÁ¬²¢?´«Êä´ó×ÚÊý¾ÝµÄ³¡¾° £¬NginxµÄÕâÒ»ÓÅÊÆÓÈΪÃû¹ó £¬ËüÄܹ»ÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄ £¬ÇáËÉÓ¦¶Ô°ÙÍò¼¶µÄ²¢·¢ÅþÁ¬¡£ÕâÒâζ×Å £¬×ÝÈ»ÔÚÓû§Ô¢Ä¿á¯ÁëÆÚ £¬ÄúµÄÊÓÆµ·þÎñÒ²Äܼá³Ö?ÎÈ¹Ì £¬²»»áÓÉÓÚ·þÎñÆ÷¹ýÔØ¶øµ¼Ö¿¨¶Ù»òÍ߽⡣

ÇáÁ¿¼¶Óë¸ß²¢·¢ÄÜÁ¦£ºNginxµÄÉè¼ÆÕÜѧ¾ÍÊÇ¡°Ð¡ÇɶøÇ¿Ê¢¡±¡£Æä´úÂëÁ¿Ïà¶Ô½ÏÉÙ £¬ÄÚ´æÕ¼ÓÃµÍ £¬Æô¶¯ËÙÂʿ졣ÔÚÏÖʵ°²ÅÅÖÐ £¬Ò»¸öNginxʵÀý¾ÍÄÜÇáËÉ´¦Öóͷ£ÊýÍòÉõÖÁÊýÊ®ÍòµÄ?²¢·¢ÅþÁ¬ £¬Õâ¹ØÓÚ³ÐÔØ´ó¹æÄ£ÊÓÆµÆ½Ì¨ÖÁ¹ØÖ÷Òª¡£ÏëÏóһϠ£¬Ò»¸öÈÈÃÅÖ±²¥¼äͬʱӿÈë³ÉǧÉÏÍòµÄ¹ÛÖÚ £¬NginxÄܹ»ÏñÒ»¸öѵÁ·ÓÐËØµÄÖ¸»Ó¹Ù £¬ÓÐÌõ²»ÎɵØÎªÃ¿Ò»Î»¹ÛÖÚ·Ö·¢ÊÓÆµÁ÷ £¬È·±£ËûÃǶ¼ÄÜÏíÊܵ½ÎÞ·ìµÄԢĿÌåÑé¡£

ǿʢµÄ·´Ïò´úÀíºÍ¸ºÔØÆ½ºâ¹¦Ð§£ºÊÓÆµ·þÎñͨ³£ÐèÒª¶ą̀·þÎñÆ÷ЭͬÊÂÇé £¬ÒÔ·Öµ£Ñ¹Á¦²¢ÌṩÈßÓà¡£Nginx×÷Ϊ·´Ïò´ú?Àí £¬¿ÉÒÔ½«Óû§µÄ?ÇëÇóת·¢µ½ºó¶ËµÄ¶ą̀ÊÓÆµ·þÎñÆ÷ £¬²¢Æ¾Ö¤Ô¤ÉèµÄÕ½ÂÔ£¨ÈçÂÖѯ¡¢¼ÓȨÂÖѯ¡¢IP¹þÏ£µÈ£©¾ÙÐиºÔØÆ½ºâ¡£ÕâÒâζ×Å £¬Óû§ÇëÇ󲻻ἯÖдòµ½Ä³Ò»Ì¨·þÎñÆ÷ÉÏ £¬¶øÊDZ»ÔȳÆÊèÉ¢ £¬¼«´óµØÌá¸ßÁËÕûÌåµÄÍÌÍÂÁ¿ºÍ¿ÉÓÃÐÔ¡£

1.2HTTP/2µÄÍþÁ¦ÊÍ·Å£ºHTTP/2ЭÒéµÄÒýÈëÊÇÊÓÆµ´«ÊäÌåÑéµÄÒ»´Î?±¼ÌÚ¡£ÓëHTTP/1.1µÄ?´®ÐÐÇëÇó²î±ð £¬HTTP/2Ö§³Ö¶à·¸´Óá¢Í·²¿Ñ¹Ëõ¡¢·þÎñÆ÷ÍÆË͵ÈÌØÕ÷ £¬Äܹ»¼«´óµØÌáÉýÔÚ¸ßÑÓ³Ù»ò¸ß¶ª°üÂÊÍøÂçÇéÐÎϵĴ«ÊäЧÂÊ¡£

ÆôÓÃHTTP/2:ÔÚNginxµÄlistenÖ¸ÁîÖмÓÈëhttp2²ÎÊý¼´¿ÉÆôÓá£ÀýÈ磺listen443sslhttp2;¡£¶à·¸´ÓÃ:ÔÊÐíÔÚÒ»¸öTCPÅþÁ¬ÉÏͬʱ´«Êä¶à¸öHTTPÇëÇóºÍÏìÓ¦ £¬×èÖ¹ÁËHTTP/1.1µÄ¡°¶ÓÍ·ÛÕ±Õ¡±ÎÊÌâ £¬¹ØÓÚÊÓÆµÁ÷ÖÐÆµÈÔµÄÇÐÆ¬ÇëÇóÀ´Ëµ £¬Ð§¹ûÓÈΪÏÔÖø¡£

Í·²¿Ñ¹Ëõ:ʹÓÃHPACKË㷨ѹËõHTTPÇëÇóºÍÏìӦͷ £¬ïÔÌ­ÁË´«ÊäµÄÊý¾ÝÁ¿ £¬ÓÈÆäÊÇÔÚ¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼ä¾ÙÐдó×ÚµÄСÇëÇóʱ £¬Äܹ»ÓÐÓýµµÍÍøÂçÑÓ³Ù¡£

1.3TCPBBRÓµÈû¿ØÖÆËã·¨£ºÎªÍøÂç´«Êä×¢ÈëÇ¿ÐļÁTCPBBR(BottleneckBandwidthandRound-trippropagationtime)ÊÇÒ»ÖÖÓÉGoogle¿ª·¢µÄÓµÈû¿ØÖÆËã·¨ £¬ËüÓë¹Å°åµÄ»ùÓÚ¶ª°üµÄ?ÓµÈû¿ØÖÆËã·¨£¨ÈçCubic£©²î±ð £¬BBR¹Ø×¢µÄÊÇÆ¿¾±´ø¿íºÍÍù·µÊ±¼ä¡£

µ±Êý¾ÝµÖ´ïʱ £¬Nginx»áÁ¬Ã¦´¦Öóͷ£ £¬¶ø²»?ÊǵÈ?´ýÊý¾Ý´«ÊäÍê±Ï¡£ÕâʹµÃNginxÔÚ´¦Öóͷ£´ó×ÚСÎļþ´«Êä £¬»òÕßÏñÊÓÆµÁ÷ÕâÑùÒ»Á¬±¬·¢Êý¾ÝµÄ³¡¾°Ï £¬ÌåÏÖÓÈΪ¾«²Ê £¬×èÖ¹ÁËÒòÛÕ±ÕI/OÔì³ÉµÄÐÔÄÜÆ¿¾±¡£WorkerÀú³ÌÉè¼Æ£ºNginxµÄMasterÀú³ÌÈÏÕæ¹ÜÀíWorkerÀú³Ì £¬¶øWorkerÀú³ÌÔòÈÏÕæ´¦Öóͷ£ÏÖʵµÄÍøÂçÇëÇó¡£

ÕâÖÖÊèÉ¢Éè¼ÆÊ¹µÃNginxÄܹ»³ä·ÖʹÓöàºËCPUµÄÓÅÊÆ £¬Ã¿¸öWorkerÀú³Ì¿ÉÒÔÔËÐÐÔÚÒ»¸öCPU½¹µãÉÏ £¬ÊµÏÖÕæÕýµÄ²¢Ðд¦Öóͷ£¡£¹ØÓÚÊÓÆµ´«ÊäÕâÖÖÐèҪǿʢÅÌËãÄÜÁ¦ºÍI/OÄÜÁ¦µÄʹÃü £¬¶àWorkerÀú³ÌµÄЭͬÊÂÇéÄܹ»ÏÔÖøÌáÉýÕûÌåÍÌÍÂÁ¿¡£

¶þ¡¢½¹µã¹¦Ð§ÓÅ»¯£ºNginxÔõÑùʵÏÖ¡°100%ÊÓÆµÐÔÄÜ¡±

NginxÄܹ»ÊµÏÖ¿¿½ü¡°100%ÊÓÆµÐÔÄÜ¡±²¢·ÇÎÞÒâ £¬¶øÊÇÆäÄÚÖõÄǿʢ¹¦Ð§ÓëϸÄ廯ÉèÖÃÅäºÏ×÷ÓõÄЧ¹û¡£

¸ßЧµÄ?¾²Ì¬Îļþ·þÎñ£ºÊÓÆµÎļþͨ³£?ÊǾ²Ì¬ÄÚÈÝ £¬NginxÔÚ¾²Ì¬Îļþ·þÎñ·½ÃæÓµÓÐÎÞ¿ÉÏà±ÈµÄ?ÓÅÊÆ¡£ËüÄܹ»ÒÔ¼«¿ìµÄËÙÂÊÖ±½Ó´Ó´ÅÅ̶ÁÈ¡Îļþ £¬²¢?ͨ¹ýsendfileϵͳŲÓà £¬½«ÎļþÊý¾ÝÖ±½Ó´ÓÄں˿ռ䴫Êäµ½ÍøÂçÌ×½Ó×Ö £¬ÈƹýÁËÓû§¿Õ¼ä £¬¼«´óµØïÔÌ­ÁËCPUºÍÄÚ´æµÄ¿½±´¿ªÏú £¬ÏÔÖøÌáÉýÁËÎļþ´«ÊäЧÂÊ¡£

¹ØÓÚÊÓÆµµã²¥£¨VOD£©ºÍÖ±²¥ £¬HLS£¨HTTPLiveStreaming£©ºÍDASH£¨DynamicAdaptiveStreamingoverHTTP£©ÊÇÏÖÔÚ×îÖ÷Á÷µÄÁ½ÖÖÁ÷ýÌåЭÒé¡£NginxÒÀ¸½Æä¾«²ÊµÄHTTP·þÎñÄÜÁ¦ £¬Äܹ»ºÜºÃµØÖ§³ÖÕâÁ½ÖÖЭÒé¡£

HLSÉèÖãºNginx¿ÉÒÔÇáËɵØ×÷ΪHLSÁ÷ýÌå·þÎñÆ÷¡£Í¨¹ýÅäºÏngx_http_flv_module»òÆäËûµÚÈý·½Ä£¿é £¬Nginx¿ÉÒÔÎüÊÕRTMPÁ÷ £¬²¢½«Æäת»»ÎªHLSÃûÌ÷ַ¢¡£Òªº¦ÉèÖðüÀ¨£º

mp4Ä£¿é£ºÓÃÓÚ´¦Öóͷ£MP4Îļþ £¬ÊÇHLSƬ¶ÏµÄ»ù´¡¡£hls_fragment_duration£ºÉèÖÃÿ¸öÊÓÆµÆ¬¶ÏµÄʱ³¤ £¬Ó°Ïì²¥·ÅµÄÁ÷ͨ¶ÈºÍÑÓ³Ù¡£hls_playlist_length£ºÉèÖò¥·ÅÁбíÖеÄÊÓÆµÆ¬¶ÏÊýÄ¿ £¬Ó°ÏìÊÓÆµ»º³åºÍÁбí¸üС£

hls_base_url£ºÉèÖÃHLS²¥·ÅÁбíºÍƬ¶ÏµÄ»ù×¼URL¡£

DASHÉèÖãºNginxͬÑù¿ÉÒÔ¸ßЧµØÖ§³ÖDASH¡£DASHͨ¹ýMPD£¨MediaPresentationDescription£©ÎļþÀ´ÐÎòýÌåÄÚÈÝ £¬Nginx¿ÉÒÔͨ¹ýÉèÖÃÀ´ÆÊÎöºÍ·Ö·¢MPDÎļþÒÔ¼°¶ÔÓ¦µÄÊÓÆµÆ¬¶Ï¡£

µ×²ãÓÅ»¯£ºNginx100%ÊÓÆµ´«ÊäµÄ¼áʵºóÔ®

Nginx×îа汾ÔÚÊÓÆµ´«Êä·½ÃæµÄÍ»ÆÆ £¬Àë²»¿ªÆäÔڵײã¼Ü¹¹ÉϵÄÒ»Á¬¾«½ø¡£¸ßЧµÄI/O¶à·¸´ÓûúÖÆÊÇNginxÄܹ»´¦Öóͷ£¸ß²¢·¢ÅþÁ¬µÄÒªº¦¡£Í¨¹ýepoll£¨Linux£©»òkqueue£¨BSD£©µÈ»úÖÆ £¬NginxÄܹ»ÔÚÒ»¸öÏß³ÌÖмàÊÓ´ó×ÚµÄÎļþÐÎò·û £¬µ±?ÓÐÊÂÎñ±¬·¢Ê± £¬ÔÙÓÉÊÂÇéÏ߳̾ÙÐд¦Öóͷ£¡£

ÕâÒâζ×ÅNginx¿ÉÒÔÔÚ¼«µÍµÄCPUÕ¼ÓÃÂÊÏ £¬¸ßЧµØ´¦Öóͷ£³ÉǧÉÏÍòµÄÊÓÆµÊý¾Ý´«ÊäÇëÇó £¬×èÖ¹Á˹Űå·þÎñÆ÷ÒòÏß³Ì/Àú³Ì?½¨ÉèºÍÇл»´øÀ´µÄ?ÐÔÄÜÏûºÄ¡£

NginxµÄÁ㿽±´£¨Zero-copy£©ÊÖÒÕÔÚÊÓÆµ´«ÊäÖÐÊÎÑÝ×ÅÖÁ¹ØÖ÷ÒªµÄ½ÇÉ«¡£ÔڹŰåµÄI/OÄ£×ÓÖÐ £¬Êý¾ÝÔÚÄں˿ռäºÍÓû§¿Õ¼äÖ®¼äÐèÒª¶à´Î¸´ÖÆ £¬Õâ»áÏûºÄ´ó×ÚµÄCPU×ÊÔ´ºÍÄÚ´æ´ø¿í¡£Nginxͨ¹ýsendfile()ϵͳŲÓà £¬¿ÉÒÔÖ±½Ó½«Êý¾Ý´ÓÄں˵ÄÎļþ»º³åÇø·¢Ë͵½ÍøÂçÌ×½Ó×Ö £¬ÈƹýÁËÓû§¿Õ¼äµÄ¿½±´»·½Ú £¬¼«´óµØÌá¸ßÁËÊý¾Ý´«ÊäµÄЧÂÊ £¬ïÔÌ­ÁËÑÓ³Ù £¬ÓÈÆäÊÇÔÚ´«Êä´óÎļþ£¨ÈçÊÓÆµÆ¬¶Ï£©Ê± £¬Ð§¹ûÓÈΪÏÔÖø¡£

Nginx£ºÊÓÆµÓÅ»¯Ö®Â·µÄ¼áʵ»ùʯ

NginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµÓÅ»¯ÁìÓò´ó·ÅÒì²Ê £¬Àë²»¿ªÆäµ×²ã¼Ü¹¹µÄ¾«ÃîÉè¼Æ¡£Óë¹Å°åµÄÛÕ±ÕʽI/OÄ£×Ó²î±ð £¬Nginx½ÓÄÉÁË·ÇÛÕ±Õ¡¢ÊÂÎñÇý¶¯µÄI/O¶à·¸´ÓÃÊÖÒÕ¡£ÕâÒâζ×Å £¬Nginx¿ÉÒÔͬʱ´¦Öóͷ£³ÉǧÉÏÍòµÄ²¢·¢ÅþÁ¬ £¬¶øÎÞÐèΪÿ¸öÅþÁ¬½¨Éè×ÔÁ¦µÄÀú³Ì»òÏ̡߳£

ÕâÖÖ¸ßЧµÄ×ÊԴʹÓ÷½·¨ £¬¼«´óµØÌáÉýÁË·þÎñÆ÷µÄ²¢·¢´¦Öóͷ£ÄÜÁ¦ £¬¹ØÓÚÐèҪͬʱÏò´ó×ÚÓû§·Ö·¢ÊÓÆµÊý¾ÝµÄÁ÷ýÌå·þÎñÆ÷¶øÑÔ £¬ÆäÓÅÊÆ²»ÑÔ¶øÓ÷¡£

¸üÖ÷ÒªµÄÊÇ £¬NginxÔÚ¾²Ì¬Îļþ´«Êä·½ÃæÓµÓм«¸ßµÄЧÂÊ¡£ÊÓÆµÎļþ £¬ÓÈÆäÊǾ­ÓÉÓÅ»¯µÄýÌåÎļþ £¬ÊµÖÊÉÏÊÇ´óÐ͵ľ²Ì¬×ÊÔ´¡£Nginxͨ¹ýÆäϸÄåµÄ»º´æ»úÖÆ¡¢¸ßЧµÄ·¢ËÍÎļþ£¨sendfile£©ÏµÍ³Å²ÓÃÒÔ¼°¾«¼òµÄHTTPÍ·²¿´¦Öóͷ£ £¬Äܹ»ÒÔ¼«¿ìµÄËÙÂʽ«ÊÓÆµÊý¾Ý´Ó´ÅÅÌ·¢Ë͵½¿Í»§¶Ë¡£

ÕâÖ±½Óת»¯Îª¸ü¶ÌµÄ¼ÓÔØÊ±¼ä £¬¸üÉٵķþÎñÆ÷CPUÕ¼Óà £¬ÒÔ¼°¸ü¸ßµÄÍÌÍÂÁ¿¡£

ÀýÈç £¬µ±Óû§ÇëÇóijÖÖÌØ¶¨Çø·ÖÂÊ»òÃûÌõÄ?ÊÓÆµÊ± £¬Nginx¿ÉÒÔ´¥?·¢ºó¶Ë·þÎñ¾ÙÐÐʵʱתÂë £¬²¢½«×ªÂëºóµÄÊÓÆµÁ÷¿ìËÙÍÆË͸øÓû§¡£×îа汾ÔÚÓëÍⲿÀú³ÌͨѶºÍ¹ÜÀí·½ÃæÒ²¾ÙÐÐÁËÓÅ»¯ £¬Ê¹µÃÕâÖÖ¼¯³ÉÔ½·¢Á÷ͨ¸ßЧ¡£µÍÑÓ³ÙÖ±²¥µÄ̽Ë÷£º¹ØÓÚ¶ÔÑÓ³ÙÒªÇ󼫸ߵÄÖ±²¥³¡¾° £¬Nginx×îа汾ҲÔÚÆð¾¢Ì½Ë÷ºÍÖ§³Ö¸üµÍÑӳٵĴ«?ÊäЭÒé £¬ÀýÈçWebRTCµÄ¼¯³É¡£

ËäÈ»WebRTCµÄʵÏÖÏà¶ÔÖØ´ó £¬µ«NginxµÄ¿ª·ÅÐÔºÍÎÞаÐÔΪÆäÌṩÁËÓÅÒìµÄ»ù´¡ £¬Î´À´ÓÐÍûÔÚµÍÑÓ³ÙÖ±²¥ÁìÓòÊÎÑݸüÖ÷ÒªµÄ½ÇÉ«¡£

2.´ø¿íÓëÅþÁ¬ÊÜÀí£ºÏ꾡Èë΢µÄÁ÷Á¿ÕÆ¿ØÒÕÊõ

ÊÓÆµÁ÷ýÌå¶Ô´ø¿íµÄÐèÇóÖØ´ó £¬µ«?Ò²ÐèҪϸÄ廯µÄ¹ÜÀí £¬ÒÔ±ÜÃâµ¥¸öÓû§ºÄ¾¡´ø¿í £¬Ó°ÏìÕûÌå·þÎñÖÊÁ¿¡£NginxÌṩÁ˶àÖÖ¹¤¾ßÀ´¿ØÖÆÁ÷Á¿ºÍÅþÁ¬¡£

limit_rateºÍlimit_rate_after£ºlimit_rateÖ¸Áî¿ÉÒÔÏÞÖÆµ¥¸öÅþÁ¬µÄ×î´ó?ÏÂÔØËÙÂÊ £¬±ÜÃâ¶ñÒâÓû§»òÒì³£ÇëÇóÕ¼Óùý¶à´ø¿í¡£limit_rate_afterÔò¿ÉÒÔÔÚµÖ´ïÒ»¶¨´«ÊäÁ¿ºó²Å×îÏÈÏÞËÙ £¬×èÖ¹¶ÔÕý³£´«ÊäÔì³É²»ÐëÒªµÄ×ÌÈÅ¡£

ÀýÈç £¬¹ØÓÚÖ±²¥?³¡¾° £¬ÎÒÃÇ¿ÉÒÔÉèÖÃÒ»¸öºÏÀíµÄ²¥·ÅËÙÂÊÏÞÖÆ £¬È·±£ËùÓйÛÖÚ¶¼ÄÜ»ñµÃÏà¶ÔÎȹ̵IJ¥·ÅÌåÑé¡£keepalive_timeoutºÍkeepalive_requests£º³¤ÅþÁ¬£¨Keep-Alive£©Äܹ»¸´ÓÃTCPÅþÁ¬ £¬ïÔÌ­TCPÈý´ÎÎÕÊÖµÄ?¿ªÏú £¬¹ØÓÚÒ»Á¬²¥·Å¶à¸öÊÓÆµÆ¬¶Ï»òÖ±²¥Á÷À´Ëµ £¬Ð§ÂÊÌáÉýÏÔÖø¡£

ºÏÀíÉèÖÃkeepalive_timeout£¨ÅþÁ¬¼á³Ö³¬Ê±Ê±¼ä£©ºÍkeepalive_requests£¨Ò»¸öÅþÁ¬ÔÊÐíµÄ×î´óÇëÇóÊý£© £¬¿ÉÒÔÔÚïÔÌ­ÅþÁ¬½¨É豾ǮºÍ×èÖ¹×ÊÔ´ÀÄÓÃÖ®¼äÈ¡µÃƽºâ¡£worker_connections£ºNginxµÄworker_processesºÍworker_connections²ÎÊýÊÇÆä¸ß²¢·¢ÄÜÁ¦µÄ»ùʯ¡£

×ܶøÑÔÖ® £¬NginxÔÚÊÓÆµÐÔÄܵÄʵÏÖÉÏ £¬ÒÀ¸½Æä¸ßЧµÄ²¢·¢´¦Öóͷ£ÄÜÁ¦¡¢Ç¿Ê¢µÄ»º´æ»úÖÆÒÔ¼°¶ÔÁ÷ýÌåЭÒéµÄÓÅÒìÖ§³Ö £¬ÒѾ­³ÉΪ¹¹½¨¸ßÐÔÄÜÊÓÆµ·Ö·¢ÏµÍ³µÄÊ×Ñ¡¼Æ»®?¡£´Ó¾²Ì¬ÎļþµÄ¿ìËÙ¶ÁÈ¡ £¬µ½¶¯Ì¬ÄÚÈݵÄÖÇÄÜ»º´æ £¬ÔÙµ½ÓëCDNµÄÎ޷켯³É £¬NginxÕýÔÚÓÃËüµÄ·½·¨ £¬ÎªÎÒÃÇÃè»æ×ÅÒ»·ùÁ÷ͨÎÞ¿¨¶ÙµÄÊÓÆµÌåÑéÀ¶Í¼¡£

NginxÊÓÆµÐÔÄܵĽø½×£º¸ßÐÔÄÜÁ÷ýÌå·þÎñÓëϸÄ廯µ÷ÓÅ

ÔÚǰһ²¿·Ö £¬ÎÒÃÇÒѾ­ÉîÈëÏàʶÁËNginxÔÚʵÏÖ100%ÊÓÆµÐÔÄÜ·½ÃæµÄ»ù´¡ÄÜÁ¦ £¬°üÀ¨Æä¸ßЧµÄ²¢·¢´¦Öóͷ£Ä£×Ó¡¢Ç¿Ê¢µÄ»º´æ»úÖÆÒÔ¼°ÓëCDNµÄ¼¯³É¡£ÒªÕæÕýÈÃNginxÔÚÊÓÆµ·Ö·¢ÁìÓòʩչ¼«ÖµÄÐÔÄÜ £¬»¹ÐèÒª¸üÉîÈëµØÌ½Ë÷ÆäÔÚÁ÷ýÌå·þÎñ·½ÃæµÄ½ø½×Ó¦ÓÃÒÔ¼°Ï¸Ä廯µÄÐÔÄܵ÷ÓÅÕ½ÂÔ¡£

3.ÐÂÎÅÊèÉ¢ÓëCDN¼¯³É£º¹¹½¨¸ßЧµÄÊÓÆµ·Ö·¢ÍøÂç

ÔÚÏÖʵµÄÊÓÆµ·þÎñÖÐ £¬½«ÐÂÎÅ×ÊÔ´¾ÙÐÐÊèÉ¢ £¬²¢ÍŽáCDN£¨ContentDeliveryNetwork£©¾ÙÐзַ¢ £¬ÊÇÌáÉýÐÔÄܺÍÓû§ÌåÑéµÄ³£¼ûÕ½ÂÔ¡£

ÐÂÎÅÊèÉ¢£ºNginx¿ÉÒÔÇáËÉʵÏÖÐÂÎÅÊèÉ¢¡£¹ØÓÚÊÓÆµÎļþ£¨¾²Ì¬×ÊÔ´£© £¬¿ÉÒÔÖ±½ÓÓÉNginx¸ßЧµØÌṩ·þÎñ£»¶ø¹ØÓÚÐèÒª·þÎñÆ÷¶Ë´¦Öóͷ£µÄ¶¯Ì¬ÇëÇó£¨ÈçÓû§µÇ?¼¡¢Ì¸Â۵ȣ© £¬Ôò¿ÉÒÔ½«ÇëÇóת·¢¸øºó¶ËµÄÓ¦Ó÷þÎñÆ÷¡£ÕâÖÖÊèÉ¢²»µ«Äܹ»¼õÇáÓ¦Ó÷þÎñÆ÷µÄѹÁ¦ £¬Ò²ÄÜÈÃNginxרעÓÚÆä×îÉÆÓڵľ²Ì¬Îļþ´«?Êä¡£

CDN¼¯³É£ºNginxÊǹ¹½¨CDN±ßÑØ½ÚµãµÄ½¹µã×é¼þÖ®Ò»¡£Í¨¹ýÔÚÌìÏÂÒÔÖÂÈ«Çò°²ÅÅNginx½Úµã £¬¿ÉÒÔ½«ÊÓÆµÄÚÈÝ»º´æµ½ÀëÓû§×î½üµÄ?λÖᣵ±Óû§ÇëÇóÊÓÆµÊ± £¬ÇëÇó»á±»µ¼Ïò×î½üµÄCDN½Úµã £¬´Ó¶ø´ó´ó½µµÍÑÓ³Ù £¬ÌáÉý¼ÓÔØËÙÂÊ £¬²¢¼õÇáÔ´Õ¾µÄѹÁ¦¡£

NginxµÄ¸ßÐÔÄܺ͵ͱ¾Ç® £¬Ê¹Æä³ÉΪ¹¹½¨´ó¹æÄ£CDNÍøÂçµÄÀíÏëÑ¡Ôñ¡£

NginxµÄÄ£¿é»¯Éè¼ÆÊÇÆäǿʢÉúÃüÁ¦µÄԴȪ¡£×îа汾¼ÌÐø³Ð¼ÌÕâÒ»ÀíÄî £¬²¢Õë¶ÔÊÓÆµÓÅ»¯ £¬ÌṩÁËÔ½·¢¸»ºñºÍǿʢµÄÄ£¿é¡£Óû§¿ÉÒÔÆ¾Ö¤×Ô¼ºµÄÏêϸÐèÇó £¬ÎÞаµØÑ¡ÔñºÍÉèÖÃËùÐèµÄÄ£¿é £¬ÀýÈçÓÃÓÚÊÓÆµ×ªÂë¡¢ÄÚÈݼÓÃÜ¡¢DRM£¨Êý×Ö°æÈ¨¹ÜÀí£©µÈ¡£ÕâÖָ߶ȵĿɶ¨ÖÆÐÔ £¬Ê¹µÃNginxÄܹ»ÇáËÉÓ¦¶ÔÖÖÖÖÖØ´óµÄÊÓÆµÓ¦Óó¡¾° £¬´Ó¼òÆÓµÄÊÓÆµ²¥·Åµ½?ÖØ´óµÄ?°æÈ¨±£»¤ºÍÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©µÄ´î½¨ £¬¶¼ÄÜÌṩ×î¼Ñ½â¾ö¼Æ»®¡£

µ½ÕâÀï £¬ÎÒÃÇÒѾ­ÆðÔ´ÏàʶÁËNginx×îа汾ÔÚÊÖÒÕ²ãÃæÊÇÔõÑùʵÏÖ¡°100%ÊÓÆµÓÅ»¯¡±µÄ¡£ÀíÂÛµÄÓÅ»¯»¹ÐèÒªÂ䵽ʵ´¦¡£ÔÚÏÂÒ»²¿·Ö £¬ÎÒÃǽ«ÉîÈë̽ÌÖNginx×îа汾ÔÚÏÖʵӦÓÃÖÐ £¬ÔõÑùͨ¹ýһϵÁо«ÃîµÄÉèÖúͲß?ÂÔ £¬ÕæÕý½«ÊÓÆµ´«ÊäµÄÐÔÄÜÌáÉýµ½¼«Ö £¬ÎªÓû§´øÀ´Ø¨¹ÅδÓеġ°Ë¿»¬¡±ÌåÑé¡£

Nginx100%ÊÓÆµÓÅ»¯£ºÊµÕ½ÉèÖÃÓëÐÔÄܱ¼ÌÚ £¬½âËøÄãµÄ?ÊÓÆµ·þÎñмÍÔª£¡

ÔÚÉÏÒ»²¿·Ö £¬ÎÒÃÇ´Ó?ÊÖÒÕ²ãÃæÉîÈëÆÊÎöÁËNginx×îа汾ÔÚÊÓÆµÓÅ»¯·½ÃæµÄÄÚÔÚ¡°ºË¶¯Á¦¡±¡£ÎÒÃÇÏàʶµ½ £¬ÖîÈçepollÄ£×ӵļ«ÖÂÔËÓá¢HTTP/2ºÍHTTP/3µÄÖÜȫӵ±§¡¢¶¯Ì¬ÄÚÈݼÓËÙÓ뻺´æÕ½ÂԵľ«½ø £¬ÒÔ¼°ÆäǿʢµÄÄ£¿é»¯Éè¼Æ £¬¶¼ÎªÊµÏÖ¡°100%ÊÓÆµÓÅ»¯¡±µÓÚ¨Á˼áʵµÄ»ù´¡¡£

HLS(HTTPLiveStreaming)£ºÓÉAppleÍÆ³öµÄHLSЭÒé £¬½«ÊÓÆµÁ÷Ö§½â³ÉһϵÁÐСµÄHTTPÎļþ £¬²¢Ìṩһ¸öM3U8²¥·ÅÁбí¡£ÕâÖÖ»ùÓÚHTTPµÄ´«Êä·½·¨ £¬Ê¹ÆäÄܹ»ÇáËÉ´©Ô½·À»ðǽ £¬²¢ÇÒÓëÏÖÓеÄCDN£¨ÄÚÈÝ·Ö·¢ÍøÂ磩»ù´¡ÉèÊ©¸ß¶È¼æÈÝ¡£

Nginx×÷Ϊ¸ßÐÔÄܵÄHTTP·þÎñÆ÷ £¬Äܹ»ÒÔ¼«¸ßµÄЧÂÊ»º´æºÍ·Ö·¢HLSµÄýÌ寬¶Ï£¨.tsÎļþ£©ºÍ²¥·ÅÁÐ±í£¨.m3u8Îļþ£© £¬È·±£È«ÇòÓû§¶¼ÄÜ»ñµÃµÍÑÓ³Ù¡¢¸ßÖÊÁ¿µÄԢĿÌåÑé¡£NginxµÄ»º´æ»úÖÆ £¬Èçproxy_cache £¬¹ØÓÚHLSµÄÐÔÄÜÌáÉýÓÈΪҪº¦ £¬Äܹ»ÏÔÖø½µµÍÔ´Õ¾µÄѹÁ¦¡£

DASH(DynamicAdaptiveStreamingoverHTTP)£ºDASHÊÇÒ»ÖÖ¿ª·Å±ê×¼µÄ×Ô˳Ӧ±ÈÌØÂÊÁ÷ЭÒé £¬ËüÓëHLSÀàËÆ £¬Ò²ÊÇ»ùÓÚHTTP¾ÙÐд«Êä £¬µ«ÌṩÁ˸üÎÞаµÄ´ø¿í˳ӦÐԺͱàÂëÃûÌÃÖ§³Ö¡£NginxͬÑùÄܹ»¸ßЧµØ?´¦Öóͷ£DASHµÄýÌå·Ö¶ÎÎļþ£¨.mpd£©ºÍÊÓÆµÆ¬¶Ï £¬Í¨¹ýÆäǿʢµÄ¾²Ì¬Îļþ·þÎñÄÜÁ¦»ººÍ´æÕ½ÂÔ £¬ÎªDASHÁ÷ÌṩÎȹ̿ɿ¿µÄ·Ö·¢¡£

Ò»¡¢»ù´¡ÉèÖ㺴ÄúµÄµÚÒ»¸öNginxÊÓÆµ·þÎñÆ÷

¹ØÓÚÊÓÆµÁ÷ýÌå £¬×î³£¼ûµÄÁ½ÖÖ³¡¾°ÊÇÊÓÆµÖ±²¥ºÍÊÓÆµµã²¥¡£

RTMPÖ±²¥·þÎñÆ÷´î½¨(ʹÓÃnginx-rtmp-module)

ÄúÐèÒª±àÒë×°ÖÃNginx²¢°üÀ¨nginx-rtmp-module¡£×°ÖÃÍê³Éºó £¬ÔÚNginxµÄÖ÷ÉèÖÃÎļþnginx.confÖÐÌí¼Órtmp¿é£º

worker_processesauto;events{worker_connections1024;#ƾ֤·þÎñÆ÷ÄÜÁ¦µ÷½â}http{#...ÄúµÄhttpÉèÖÃ...}rtmp{server{listen1935;#RTMPĬÈ϶˿Úchunk_size4096;#µ÷½âÒÔ˳Ӧ²î±ðÍøÂçÇéÐÎapplicationlive{liveon;recordoff;#ƾ֤ÐèÒª¿ªÆôÂ¼ÖÆ#HLS/DASHתÂëÓë·Ö·¢hlson;hls_path/tmp/hls;#HLSƬ¶Ï´æ´¢Ä¿Â¼hls_fragment3s;#HLSÇÐÆ¬Ê±³¤hls_playlist_length60s;#HLS²¥·ÅÁÐ±í³¤¶Èdashon;dash_path/tmp/dash;#DASHƬ¶Ï´æ´¢Ä¿Â¼dash_fragment2s;#DASHÇÐÆ¬Ê±³¤dash_playlist_length30s;#DASH²¥·ÅÁбí?³¤¶È}}}

ÔÙÕß £¬¶ÔÏÖ´úÁ÷ýÌåЭÒéµÄÖ§³ÖʹµÃ?NginxÄܹ»ÇáËÉÓ¦¶ÔHLS£¨HTTPLiveStreaming£©ºÍDASH£¨DynamicAdaptiveStreamingoverHTTP£©µÈÖ÷Á÷ÊÓÆµÁ÷ýÌåЭÒé¡£ÕâЩЭÒéÄܹ»Æ¾Ö¤Óû§µÄÍøÂç״̬¶¯Ì¬µ÷½âÊÓÆµÂëÂÊ £¬ÊµÏÖ×Ô˳ӦµÄÁ÷ͨ²¥·Å¡£

NginxÄܹ»¸ßЧµØ´¦Öóͷ£ÕâЩЭÒ鱬·¢µÄº£Á¿Ð¡ÎļþÇëÇó£¨ÀýÈçHLSµÄts·ÖƬ£© £¬²¢¶ÔÆä¾ÙÐÐÓÅ»¯ £¬È·±£ÊÓÆµÁ÷µÄÒ»Á¬ÐÔºÍÎȹÌÐÔ¡£

NginxµÄ¸ß¶È¿ÉÀ©Õ¹ÐÔºÍÄ£¿é»¯Éè¼ÆÒ²ÎªÆäÊÓÆµÓÅ»¯ÌṩÁËÎÞÏÞ¿ÉÄÜ¡£Í¨¹ý¸»ºñµÄµÚÈý·½Ä£¿é £¬Nginx¿ÉÒÔ¼¯³ÉÖÖÖָ߼¶¹¦Ð§ £¬ÈçÊÓÆµ×ªÂë¡¢ÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©¼ÓËÙ¡¢Çå¾²·À»¤µÈ £¬¹¹½¨Ò»¸ö¹¦Ð§ÖÜÈ«¡¢ÐÔÄÜ׿ԽµÄÊÓÆµÁ÷ýÌå½â¾ö¼Æ»®¡£

NginxÊÓÆµÓÅ»¯½¹µãÕ½ÂÔÒ»£º»º´æµÄÒÕÊõ¡ª¡ªÈÃÊÓÆµ¡°·É¡±ÆðÀ´

ҪʵÏÖ100%Á÷ͨµÄÊÓÆµÌåÑé £¬»º´æÊÇÈÆ²»¿ªµÄ»ùʯ¡£NginxµÄ»º´æ»úÖÆÖ÷ÒªÌåÏÖÔÚÒÔϼ¸¸ö·½Ã棺

HTTPÏìÓ¦»º´æ£¨ProxyCache£©£ºÕâÊÇNginx×î³£ÓõĻº´æ·½·¨ £¬ÓÃÓÚ»º´æºó¶Ë·þÎñÆ÷·µ»ØµÄHTTPÏìÓ¦¡£¹ØÓڵ㲥ÊÓÆµ £¬¿ÉÒÔ½«ÊÓÆµÎļþ×Ô¼º»òÆäË÷ÒýÎļþ»º´æµ½Nginx·þÎñÆ÷ÉÏ¡£µ±Óû§ÇëÇóÊÓÆµÊ± £¬Nginx»áÊ×Ïȼì²é»º´æÖÐÊÇ·ñ´æ?ÔÚ¸ÃÊÓÆµ¡£

Èý¡¢Ó²¼þÓëÍøÂçÇéÐεÄЭͬÓÅ»¯

NginxµÄÐÔÄÜÔÙÇ¿ £¬Ò²Àë²»¿ªµ×?²ãÓ²¼þºÍÍøÂçµÄÖ§³Ö¡£

Ó²¼þ£º¸ßÐÔÄÜCPU¡¢´óÈÝÁ¿ÄÚ´æ¡¢¸ßËÙSSDÓ²ÅÌ¡¢ÍòÕ×Íø¿¨ £¬¶¼ÊÇÌáÉýÊÓÆµÁ÷ýÌåÐÔÄܵĻù´¡¡£ÍøÂ磺µÍÑÓ³Ù¡¢¸ß´ø¿íµÄÍøÂçÇéÐÎÊÇÊÓÆµÁ÷ͨ²¥·ÅµÄÒªº¦¡£È·±£·þÎñÆ÷µÄÍøÂçÅþÁ¬ÎȹÌÇÒËÙÂÊ´ï±ê¡£²Ù×÷ϵͳµ÷ÓÅ£º¶ÔLinuxÄں˲Î?Êý¾ÙÐÐÊʵ±µ÷½â £¬ÀýÈçÔö´óÎļþ¾ä±úÊý(ulimit-n)¡¢µ÷½âTCP/IP²ÎÊýµÈ £¬Ò²ÄÜΪNginxµÄ¸ßÐÔÄÜÔËÐдò?ϼáʵ»ù´¡¡£

ÆäËûÐÔÄÜÓÅ»¯¼¼ÇÉ£º

GzipѹËõ£ºËäÈ»ÊÓÆµÎļþ×Ô¼ºÍ¨³£²»ÊʺÏGzipѹËõ £¬µ«¹ØÓÚÊÓÆµÔªÊý¾Ý¡¢JS¡¢CSSµÈ¸¨ÖúÎļþ £¬¿ªÆôGzipѹËõ¿ÉÒÔÓÐÓÃïÔÌ­´«Êä´ø?¿í¡£Keep-AliveÅþÁ¬£ººÏÀíÉèÖÃkeepalive_timeout £¬¼á³ÖHTTPÅþÁ¬µÄ»îÔ¾ £¬ïÔÌ­TCPÅþÁ¬½¨ÉèµÄ¿ªÏú £¬Ìá¸ß³Ö?ÐøÇëÇóµÄЧÂÊ¡£

TCPµ÷ÓÅ£ºÔÚ²Ù×÷ϵͳ²ãÃæ¾ÙÐÐTCP²ÎÊýµ÷ÓÅ£¨Èçnet.core.somaxconn¡¢net.ipv4.tcp_tw_reuseµÈ£© £¬ÒÔÌá¸ß·þÎñÆ÷´¦Öóͷ£¸ß²¢·¢TCPÅþÁ¬µÄÄÜÁ¦¡£Ó²¼þ¼ÓËÙ£ºÊ¹ÓÃNginxµÄһЩÄ£¿é»ò²Ù×÷ϵͳ¼¶±ðµÄÖ§³Ö £¬ÊµÏÖÓ²¼þ¼ÓËÙ £¬ÀýÈçͨ¹ýngx_http_vhost_traffic_status_module¼à¿ØÁ÷Á¿ £¬»òʹÓÃDPDKµÈÊÖÒÕÓÅ»¯ÍøÂçIO¡£

ͨ¹ýÉÏÊöÕ½ÂÔµÄ×ÛºÏÔËÓà £¬NginxÄܹ»³ÉΪһ¸öǿʢµÄÊÓÆµÁ÷ýÌå¼ÓËÙÆ½Ì¨¡£ÒÔǰ¶ËµÄ»º´æÕ½ÂÔµ½ºó¶ËµÄЭÒéÓÅ»¯ £¬ÔÙµ½Ö±²¥µÄʵʱ·Ö·¢ £¬NginxÔÚÿһ¸ö»·½Ú¶¼Õ¹ÏÖ³öÆä׿ԽµÄ?ÐÔÄܺÍÎÞаÐÔ¡£Ñ¡ÔñNginx £¬Òâζ×ÅÑ¡ÔñÁËÒ»¸öÄܹ»Ó¦¶Ôº£Á¿Óû§¡¢Ìṩ¼«ÖÂÁ÷ͨ¹ÛÓ°ÌåÑéµÄ¿É¿¿»ï°é¡£

ÈÃNginx³ÉΪÄúÊÓÆµÓÅ»¯µÄ×îÖÕÃØóÅ £¬ÇáËɽâËø100%Á÷ͨµÄ¹ÛӰмÍÔª£¡

ÉèÖÃʾÀý£º

http{#...otherhttpconfigurations...sendfileon;tcp_nopushon;tcp_nodelayon;}

BufferÉèÖãºNginxʹÓûº³åÇøÀ´´¦Öóͷ£ÇëÇóºÍÏìÓ¦¡£ºÏÀíµÄ»º³åÇøÉèÖùØÓÚÊÓÆµ´«ÊäÐÔÄÜÖÁ¹ØÖ÷Òª¡£

client_body_buffer_size£º¿Í»§¶ËÇëÇóÌ壨ÀýÈçÉÏ´«ÊÓÆµ£©µÄ?»º³åÇø¾Þϸ¡£client_header_buffer_size£º¿Í»§¶ËÇëÇóÍ·µÄ»º³åÇø¾Þϸ¡£large_client_header_buffers£ºÓÃÓÚ´¦Öóͷ£´óÐͿͻ§¶ËÇëÇóÍ·µÄ»º³åÇøÊýÄ¿ºÍ¾Þϸ¡£

output_buffers£ºÓÃÓÚÏò¿Í»§¶Ë·¢ËÍÏìÓ¦µÄ»º³åÇøÊýÄ¿ºÍ¾Þϸ¡£post_action£ºÔÊÐíÔÚ´¦Öóͷ£ÍêÇëÇóºó £¬Ö´ÐÐÒ»¸öPOSTÇëÇó¡£send_lowat£ºÉèÖÃsocketµÄlow-watermark¡£

¹ØÓÚÊÓÆµ·þÎñ £¬¸üÖ÷ÒªµÄÊÇoutput_buffersºÍaio_writeµÄÅäºÏ¡£ÔÚÆôÓÃsendfileʱ £¬aio_write£¨ÈôÊÇϵͳ֧³Ö£©¿ÉÒÔ½øÒ»²½Ìá¸ßI/OЧÂÊ¡£

¶þ¡¢»ù´¡ÉèÖãºÎªÊÓÆµ´«Êä´òϼáʵ»ù´¡

ÔÚNginxÖÐʵÏÖ100%µÄÊÓÆµÐÔÄÜ £¬²¢?·ÇÒ»õí¶ø¾Í £¬¶øÊÇÐèÒªÏ꾡Èë΢µÄÉèÖÃÓÅ»¯¡£´Ó»ù´¡µÄ·þÎñÆ÷ÉèÖÃ×îÏÈ £¬Ã¿Ò»²½¶¼ÖÁ¹ØÖ÷Òª¡£

WorkerprocessesºÍWorkerconnections£º

worker_processes£ºÕâ¸öÖ¸Áî¾öÒéÁËNginxÊÂÇéÀú³ÌµÄÊýÄ¿¡£Í¨³£ÇéÐÎÏ £¬½¨Ò齫ÆäÉèÖÃΪCPU½¹µãÊý £¬»òÕßCPU½¹µãÊýµÄÁ½±¶¡£ÕâÑù¿ÉÒÔ³ä·ÖʹÓöàºËCPUµÄÅÌËãÄÜÁ¦ £¬Ìá¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦¡£worker_connections£ºÕâ¸öÖ¸ÁîÖ¸¶¨ÁËÿ¸öÊÂÇéÀú³ÌÄܹ»´¦Öóͷ£µÄ×î´ó²¢·¢ÅþÁ¬Êý¡£

ÔÚÊÓÆµ·þÎñ³¡¾°Ï £¬Óû§Í¬Ê±Ô¢Ä¿ÊÓÆµ±¬·¢µÄÅþÁ¬Êý»áºÜÊÇÖØ´ó £¬Òò´ËÐèҪƾ֤·þÎñÆ÷µÄÄÚ´æºÍ´ø¿íÇéÐÎ £¬½«worker_connectionsÉèÖõÃ×ã¹»¸ß¡£ÀýÈç £¬¿ÉÒÔÉèÖÃΪ1024»ò¸ü¸ß¡£

SSL/TLSÓÅ»¯£ºÇå¾²ÓëÐÔÄܵį½ºâ

ÊÓÆµÄÚÈݵÄÇå¾²ÐÔÈÕÒæÊܵ½ÖØÊÓ £¬SSL/TLS¼ÓÃÜÊDZز»¿ÉÉٵġ£µ«¼ÓÃÜÏ¢ÕùÃÜÀú³Ì»áÏûºÄÒ»¶¨µÄCPU×ÊÔ´ £¬¿ÉÄܶÔÐÔÄܱ¬·¢Ó°Ïì¡£

TLSv1.3£ºÓÅÏÈʹÓÃTLSv1.3ЭÒé¡£ËüÏà±È֮ǰµÄ°æ±¾ £¬ÎÕÊÖÀú³Ì¸ü¶Ì £¬Ö§³Ö¸ü¶àµÄ¼ÓÃÜÌ×¼þ £¬²¢ÇÒÔÚÐÔÄÜÉÏÓÐËùÌáÉý¡£OCSPStapling£ºÆôÓÃOCSPStapling¿ÉÒÔÈÃNginxÔÚÌṩ֤ÊéµÄ»º´æOCSPÏìÓ¦¡£

ÕâÑù £¬¿Í»§¶Ë¾Í²»ÐèÒª×ÔÁ¦¾ÙÐÐOCSP¼ì²é £¬ïÔÌ­ÁË·þÎñÆ÷µÄ¼ç¸ººÍ¿Í»§¶ËµÄÑÓ³Ù¡£SessionResumption£ºÉèÖÃTLSSessionResumptionÔÊÐí¿Í»§¶ËÔÚºóÐøÅþÁ¬Ê±ÖØÓÃ֮ǰµÄ¼ÓÃܻỰ £¬×èÖ¹ÁËÍêÕûµÄTLSÎÕÊÖÀú³Ì £¬ÏÔÖø½µµÍÁËÑÓ³Ù¡£

GzipѹËõÓëBrotliѹËõ£º½øÒ»²½¼õС´«ÊäÌå»ý

ËäÈ»ÊÓÆµÎļþ±¾?ÉíÒѾ­ÊǸ߶ÈѹËõµÄÃûÌà £¬µ«ÊÓÆµµÄÔªÊý¾Ý¡¢Ö±²¥µÄ¿ØÖÆÐÅÏ¢µÈ¿ÉÒÔͨ¹ýGzip»òBrotli¾ÙÐнøÒ»²½Ñ¹Ëõ £¬ïÔÌ­´«Êä´ø¿í¡£

Gzip£ºNginxÄÚÖÃÁËGzipѹËõÄ£¿é £¬¿ÉÒÔͨ¹ýgzipon;¡¢gzip_typesµÈÖ¸Áî¾ÙÐÐÉèÖá£Brotli£ºBrotliÊÇGoogle¿ª·¢µÄÒ»ÖÖ¸ü¸ßЧµÄ?ѹËõËã·¨ £¬ÓÈÆäÉÆÓÚѹËõÎı¾ÀàÊý¾Ý¡£ËäÈ»Nginx¶ÔBrotliµÄ?Ô­ÉúÖ§³Ö²»ÏñGzipÄÇÑù³ÉÊì £¬µ«?¿ÉÒÔͨ¹ýµÚÈý·½Ä£¿éʵÏÖ¡£

Nginx100%ÊÓÆµÐÔÄÜ£º²»Ö¹ÊÇ·þÎñÆ÷ £¬¸üÊÇÁ÷ͨÌåÑéµÄÊØ»¤Õß

ÔÚµ±½ñÐÅÏ¢±¬Õ¨µÄʱ´ú £¬ÊÓÆµÄÚÈÝÒѳÉΪÈËÃÇ»ñÊØÐÅÏ¢¡¢ÓéÀÖÐÝÏеÄÖ÷ÒªÔØÌå¡£ÎÞÂÛÊÇÖ±²¥»¥¶¯¡¢ÔÚÏß½ÌÓý £¬ÕÕ¾ÉÓ°Êӵ㲥 £¬Á÷ͨ¡¢¸ßÇåµÄÊÓÆµÌåÑéÊÇÓû§×î»ù±¾µÄÐèÇó¡£±³ºóÖ§³Ö?ÕâÒ»ÇеķþÎñÆ÷ÐÔÄÜ £¬È´¾­³£³ÉÎªÖÆÔ¼Óû§ÌåÑéµÄÆ¿¾±¡£¹Å°åµÄ·þÎñÆ÷¼Ü¹¹ÔÚ´¦Öóͷ£º£Á¿ÊÓÆµÇëÇóʱ £¬ÍùÍù»á·ºÆð¼ÓÔØ»ºÂý¡¢¿¨¶ÙÑÓ³ÙµÈÎÊÌâ £¬ÈÃÓû§ÌåÑé´ó´òÕÛ¿Û¡£

¶øNginx £¬Õâ¸öÒÔ¸ßÐÔÄÜ¡¢¸ß²¢·¢Öø³ÆµÄWeb·þÎñÆ÷ £¬ÕýÒÔÆä׿ԽµÄÄÜÁ¦ £¬³É?ΪԽÀ´Ô½¶àÊÓÆµ·þÎñÌṩÉ̵ÄÊ×Ñ¡¡£Ëü²»µ«½öÊÇÒ»¸ö¼òÆÓµÄÎļþ·þÎñÆ÷ £¬¸üÊÇÒ»¸öÄܹ»Éî¶ÈÓÅ»¯ÊÓÆµÈö²¥ÊäµÄÀûÆ÷¡£½ñÌì £¬ÎÒÃǾÍÀ´½Ò¿ªNginxʵÏÖ100%ÊÓÆµÐÔÄܵÄÉñÃØÃæÉ´ £¬¿´¿´ËüÊÇÔõÑù´Óµ×²ã¼Ü¹¹µ½ÏêϸÉèÖà £¬Ò»²½?²½´òÔì³ö¼«ÖÂÁ÷ͨµÄÊÓÆµ²¥·ÅÌåÑéµÄ¡£

Ò»¡¢NginxµÄÓÅÊÆ£ºÎªºÎËüÄÜʤÈÎÊÓÆµ´«ÊäµÄÖØÈΣ¿

ÒªÃ÷È·NginxÔõÑùʵÏÖÊÓÆµÐÔÄܵı¼ÌÚ £¬Ê×ÏÈÐèÒªÏàʶËüÔÚÉè¼ÆÖ®³õ¾Í¾ß±¸µÄ?½¹µãÓÅÊÆ¡£

Nginx×÷ΪÁ÷ýÌå·þÎñÆ÷£º²»Ö¹ÓÚHTTP

ËäÈ»Nginx×î³õÊÇÒ»¿îWeb·þÎñÆ÷ £¬µ«Í¨¹ýÆäǿʢµÄÄ£¿é»¯Éè¼Æ £¬ËüÒ²Äܹ»Ê¤ÈÎÁ÷ýÌå·þÎñÆ÷µÄ½ÇÉ« £¬Ö§³ÖRTMP¡¢HLS¡¢DASHµÈÖ÷Á÷Á÷ýÌåЭÒé £¬ÊµÏÖÖ±²¥ÍÆÁ÷ºÍµã²¥·þÎñµÄ¡°Ò»Õ¾Ê½¡±½â¾ö¼Æ»®¡£

RTMPÄ£¿é£º×ÝÈ»Nginx×Ô¼º²»Ö±½ÓÄÚǶRTMP¹¦Ð§ £¬µ«Í¨¹ýµÚÈý·½Ä£¿é £¬ÀýÈçnginx-rtmp-module £¬Nginx¿ÉÒÔÍêÉÆµØÖ§³ÖRTMPЭÒé¡£Õâ¸öÄ£¿éÔÊÐíNginxÎüÊÕÀ´×ÔÍÆÁ÷¶ËµÄRTMPÐźŠ£¬²¢½«Ö±²¥Á÷ת·¢¸øÔ¢Ä¿¶Ë¡£

ÍÆÁ÷ÎüÊÕ£ºNginx¿ÉÒÔ¼àÌýRTMP¶Ë¿Ú£¨Í¨³£ÊÇ1935£© £¬ÎüÊÕÀ´×ÔOBS¡¢FFmpegµÈÍÆÁ÷Èí¼þµÄÖ±²¥Á÷¡£Á÷ת·¢£ºÎüÊÕµ½µÄ?RTMPÁ÷¿ÉÒÔ±»Ö±½Óת·¢¸øRTMP¿Í»§¶Ë £¬Ò²¿ÉÒÔת»»ÎªHLS»òDASHÃûÌà £¬¹©HTTP¿Í»§¶ËԢĿ¡£

ÕâÖÖ¡°RTMPתHLS/DASH¡±µÄÄÜÁ¦ £¬ÊÇNginxÔÚÁ÷ýÌåÁìÓò¼«ÎªÖ÷ÒªµÄÓ¦Óó¡¾° £¬ËüʹµÃÖ±²¥ÄÚÈÝÄܹ»Í¬Ê±±»?RTMPºÍHTTP¿Í»§¶Ë»á¼û £¬¼«´óµØÀ©Õ¹Á˼æÈÝÐÔ¡£¸ºÔØÆ½ºâ£ºnginx-rtmp-moduleÖ§³ÖRTMPЭÒéµÄ¸ºÔØÆ½ºâ £¬¿ÉÒÔδÀ´×Ô²î±ðÍÆÁ÷¶ËµÄÖ±²¥Á÷·ÖÅɵ½²î±ðµÄºó¶Ë·þÎñÆ÷ £¬»òÕßδÀ´×Ô¶à¸öԢĿ¶ËµÄÇëÇó·Ö·¢µ½²î±ðµÄÁ÷ýÌå·þÎñÆ÷ £¬È·±£·þÎñµÄÎȹÌÐԺ͸߿ÉÓÃÐÔ¡£

Èý¡¢Çå¾²¼Ó¹Ì£ºTLS1.3µÄ¸ßЧ¼ÓÃÜÓëÒþ˽±£»¤

ÔÚÊÓÆµÁ÷ýÌå´«ÊäÀú³ÌÖÐ £¬Êý¾Ý°²?È«ºÍÓû§Òþ˽ÊDz»¿ÉºöÊӵĻ·½Ú¡£Nginx×îа汾?ÔÚ°²?È«·½ÃæÍ¬ÑùÈ«Á¦ÒÔ¸° £¬ÖÜȫӵ±§TLS1.3 £¬ÎªÓû§Ìṩ¸üÇå¾²¡¢¸ü˽ÃܵĹÛÓ°ÌåÑé¡£

TLS1.3µÄÐÔÄÜÓÅÊÆ£ºTLS1.3×÷ΪÐÂÒ»´úµÄ´«?Êä²ãÇ徲ЭÒé £¬ÔÚ¼ÓÃÜËã·¨¡¢ÎÕÊÖÀú³ÌµÈ·½Ãæ¾ÙÐÐÁË´ó·ù¶ÈµÄÓÅ»¯¡£Nginx¶ÔTLS1.3µÄÖÜȫ֧³Ö £¬²»µ«ÌṩÁ˸üÇ¿µÄ¼ÓÃÜÄÜÁ¦ £¬µÖÓù¸üÖØ´óµÄÍøÂç¹¥»÷ £¬¸üÖ÷ÒªµÄÊÇ £¬Æä¼ò»¯µÄÎÕÊÖÀú³Ì´ó·ùËõ¶ÌÁËÅþÁ¬½¨Éèʱ¼ä £¬¹ØÓÚÊÓÆµÁ÷µÄÆô¶¯ËÙÂÊÓÐ×ÅÆð¾¢µÄÓ°Ïì¡£

ÕâÒâζ×Å £¬Óû§ÔÚÌᳫÊÓÆµ²¥·ÅÇëÇóʱ £¬Äܹ»¸ü¿ìµØ½¨Éè°²?È«ÅþÁ¬ £¬ïÔÌ­ÆÚ´ýʱ¼ä¡£Ó²¼þ¼ÓËÙÓëÐÔÄÜÓÅ»¯£ºNginxÍŽáÏÖ´úÓ²¼þµÄ¼ÓÃܼÓËÙÄÜÁ¦ £¬½øÒ»²½ÓÅ»¯ÁËTLS¼ÓÃÜÏ¢ÕùÃÜÀú³ÌµÄÐÔÄÜ¡£Í¨¹ýʹÓÃCPUµÄAES-NIµÈÖ¸Á £¬NginxÄܹ»ÒÔ¼«µÍµÄCPU¿ªÏúÍê³ÉTLS¼ÓÃܲÙ×÷ £¬È·±£ÔÚÌṩǿʢÇå¾²±£?»¤µÄ²î³ØÊÓÆµ²¥·ÅµÄÁ÷ͨ¶ÈÔì³ÉÏÔ×ÅÓ°Ïì¡£

ÕâÖÖÈíӲ͎áµÄÓÅ»¯ £¬ÊÇʵÏÖ¡°100%ÊÓÆµ²¥?·Å¡±²»¿É»òȱµÄÒ»»·¡£

1.»º´æÕ½ÂÔµÄϸÄåµ÷ÓÅ£ºÁôסÿһ´Î¾«²Ê˲¼ä

NginxµÄproxy_cacheÄ£¿éÊÇʵÏÖ¸ßЧ»º´æµÄÒªº¦¡£¹ØÓÚÊÓÆµÎļþ £¬ÎÒÃÇͨ³£ÐèÒªÉèÖÃÒ»¸öרÃŵĻº´æÇøÓò £¬²¢?ÉèÖúÏÀíµÄÓâÆÚʱ¼ä¡£

http{proxy_cache_path/var/cache/nginxlevels=1:2keys_zone=video_cache:100mmax_size=10ginactive=60muse_temp_path=off;server{listen80;server_nameyour_video_domain.com;location~*\.(mp4|mkv|avi|mov|flv|webm)${proxy_passhttp://your_backend_video_server;proxy_cachevideo_cache;proxy_cache_valid20030210m;#»º´æ200ºÍ302״̬ÂëµÄÏìÓ¦10·ÖÖÓproxy_cache_valid4041m;#»º´æ404״̬ÂëµÄÏìÓ¦1·ÖÖÓproxy_cache_key"$scheme$request_method$host$request_uri";add_headerX-Cache-Status$upstream_cache_status;}#...ÆäËûÉèÖÃ...}}proxy_cache_path:½ç˵ÁË»º´æÎļþµÄ´æ´¢Â·¾¶¡¢²ã¼¶¡¢»º´æÇøÓòÃû³Æ£¨video_cache£©¡¢ÄÚ´æ¹²ÏíÇø´óС£¨100m£©¡¢×î´ó»º´æ¿Õ¼ä£¨10g£©¡¢»º´æÎļþ²»»á¼ûµÄÓâÆÚʱ¼ä£¨60m£©¡£

HLS/DASHÁ÷ʽ´«?ÊäµÄÉèÖ㺹ØÓÚ¸ü¸ß¼¶µÄÁ÷ýÌå´«ÊäЭÒé £¬ÈçHLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP) £¬Nginx¿ÉÒÔͨ¹ýÉèÖÃlocation¿éÀ´´¦Öóͷ£.m3u8ºÍ.mpdÎļþ £¬²¢ÌṩÏìÓ¦µÄýÌåÇÐÆ¬£¨.ts»ò.m4s£©¡£

M3u8/MpdÎļþµÄ»º´æ£ºHLS/DASHµÄ²¥·ÅÒÀÀµÓÚË÷ÒýÎļþ£¨.m3u8/.mpd£©ºÍýÌåÇÐÆ¬¡£¶ÔÕâЩÎļþ¾ÙÐÐÓÐÓõĻº´æ¿ÉÒÔ¼«´óµØÌá¸ß²¥·ÅµÄÆô¶¯ËÙÂÊ¡£ÇÐÆ¬ÎļþµÄ»º´æ£ºÃ½ÌåÇÐÆ¬ÊÇÊÓÆµ²¥·ÅµÄ½¹µã £¬¶ÔÆä¾ÙÐиßЧ»º´æÖÁ¹ØÖ÷Òª¡£

¹ØÓÚÊÓÆµÁ÷ £¬¿ÉÒÔÊʵ±ÑÓÉì´ËÖµ £¬×èֹƵÈÔ½¨ÉèÅþÁ¬´øÀ´µÄ¿ªÏú¡£ÀýÈçkeepalive_timeout75s;¡£keepalive_requests:ÉèÖÃÔÚÒ»¸ö³¤ÅþÁ¬ÉÏÔÊÐí´¦Öóͷ£µÄ×î´óÇëÇóÊý¡£¹ØÓÚÊÓÆµÁ÷ £¬Í¨³£Ò»¸ö³¤ÅþÁ¬Ö»·þÎñÓÚÒ»¸ö»òÉÙÊý¼¸¸öÊÓÆµÆ¬¶Ï £¬Òò´Ë¿ÉÒÔÉèÖÃÒ»¸ö½ÏµÍµÄÖµ £¬ÀýÈçkeepalive_requests100; £¬ÒÔ×èÖ¹µ¥¸öÅþÁ¬³¤Ê±¼äÕ¼ÓÃ×ÊÔ´¡£

TCPNODELAYÓëTCPCORK£ºtcp_nodelayon;:½ûÓÃNagleËã·¨ £¬¼´ÔÊÐíСÊý¾Ý°üÁ¬Ã¦·¢ËÍ £¬ïÔÌ­ÑÓ³Ù £¬Õâ¹ØÓÚÐèҪʵʱÏìÓ¦µÄÊÓÆµÁ÷ºÜÊÇÓÐÀû¡£tcp_nopushon;(Linux):ÆôÓÃTCP_CORKÑ¡Ïî¡£

µ±ÆôÓÃʱ £¬Nginx»áʵÑéºÏ²¢¶à¸öС¿éÊý¾Ý £¬È»ºóÔÚ·¢ËÍǰһ´ÎÐÔ·¢ËÍ £¬Õâ¿ÉÒÔïÔÌ­ÍøÂç´«ÊäÖеİüÍ·¿ªÏú £¬Ìá¸ß´«ÊäЧÂÊ £¬ÓÈÆäÊÊÓÃÓÚ´«Êä´óÎļþ¡£

ÉèÖÃʾÀý£¨HTTP/2£©£º

server{listen443sslhttp2;server_nameyour_domain.com;#...sslconfigurations...#...otherconfigurations...}

ÉèÖÃʾÀý£¨HTTP/3£©£º£¨NginxÐèÒª±à?ÒëÖ§³ÖQUIC/HTTP/3£©

server{listen443sslhttp2quicreuseport;#QUICkeywordserver_nameyour_domain.com;#...sslconfigurations...#...otherconfigurations...}

GzipѹËõÓ뻺´æÕ½ÂÔ£ºËäÈ»ÊÓÆµ×Ô¼ºÊǶþ½øÖÆÊý¾Ý £¬Ö±½ÓGzipѹËõЧ¹ûÓÐÏÞ £¬µ«¹ØÓÚÊÓÆµ²¥·ÅÒ³ÃæÖеÄHTML¡¢CSS¡¢JavaScriptÎļþ £¬ÒÔ¼°Ò»Ð©ÔªÊý¾Ý£¨Èç²¥·ÅÁÐ±í£© £¬GzipѹËõÄܹ»ÓÐÓõؼõС´«ÊäÌå»ý £¬¼ÓËÙÒ³Ãæ¼ÓÔØËÙÂÊ £¬¼ä½ÓÌáÉýÊÓÆµµÄÆô¶¯ÌåÑé¡£

¸üÖ÷ÒªµÄÊÇ £¬NginxǿʢµÄ»º´æ»úÖÆ £¬¿ÉÒÔÓëGzipÍŽáʹÓ᣽«Ñ¹ËõºóµÄÄÚÈÝ»º±£´æä¯ÀÀÆ÷»òCDN±ßÑØ½Úµã £¬¿ÉÒÔʵÏÖ¸ü¿ìµÄ»á¼ûËÙÂÊ¡£

»º´æ¼ÓËÙ£ºNginx¿ÉÒÔ×÷ΪCDN±ßÑØ½ÚµãµÄ»º´æ·þÎñÆ÷¡£µ±Óû§»á¼ûÊÓÆµÄÚÈÝʱ £¬ÇëÇóÊ×ÏȵִïÀëÓû§×î½üµÄ±ßÑØ½Úµã¡£ÈôÊǸÃÊÓÆµÄÚÈÝÒѾ­ÔÚ±ßÑØ½ÚµãµÄNginx»º´æÖÐ £¬Nginx½«Ö±½Ó´Ó»º´æÌṩ·þÎñ £¬ÏìÓ¦ËÙÂʼ«¿ì £¬ÏÕЩûÓÐÑÓ³Ù¡£×ÝÈ»»º´æÖÐûÓÐ £¬NginxÒ²»á´Ó?Ô´Õ¾À­È¡ £¬²¢½«Æä»º´æÆðÀ´ £¬¹©ºóÐøÓû§Ê¹Óá£

HTTP/2ºÍHTTP/3Ö§³Ö£ºNginx¶ÔHTTP/2ºÍHTTP/3ЭÒéµÄÖ§³Ö £¬½øÒ»²½ÌáÉýÁËÊÓÆµ´«ÊäµÄЧÂÊ¡£HTTP/2ÒýÈëÁ˶à·¸´ÓúÍÍ·²¿Ñ¹Ëõ £¬ïÔÌ­ÁËÅþÁ¬¿ªÏú£»¶øHTTP/3Ôò»ùÓÚQUICЭÒé £¬½â¾öÁËTCPµÄ¶ÓÍ·ÛÕ±ÕÎÊÌâ £¬¹ØÓÚÊÓÆµÁ÷ÕâÖÖ¶ÔÑÓ³ÙÃô¸ÐµÄÓ¦ÓÃÓÈÆäÓÐÀû¡£

¶¯Ì¬ÄÚÈݼÓËÙ£º×ÝÈ»ÊǶ¯Ì¬ÌìÉúµÄÄÚÈÝ £¬NginxÒ²¿ÉÒÔͨ¹ý¸ßЧµÄÅþÁ¬ÊÜÀíºÍ·´Ïò´úÀíÄÜÁ¦ £¬½«Æä¿ìËÙµØ×ª´ï¸øÓû§¡£

ͨ¹ýÔÚÈ«Çò¸÷µØ?°²ÅÅ´ó×ÚµÄNginx½Úµã £¬²¢ÅäºÏ¸ßЧµÄ·ÓÉÕ½ÂÔ £¬NginxÄܹ»½«ÊÓÆµÄÚÈÝ¡°ÍÆËÍ¡±µ½ÀëÓû§×î½üµÄµØ·½ £¬¹¹½¨Ò»¸öÁýÕÖÈ«ÇòµÄÊÓÆµ·Ö·¢ÍøÂç¡£µ±NginxµÄÄÜÁ¦±»¡°100¡±±¶ÊÍ·Åʱ £¬ËüÒâζ×ÅÊýÒÔÍò¼ÆµÄ±ßÑØ½ÚµãÄܹ»ÒÔ¼«¸ßµÄЧÂÊ»º´æºÍ·Ö·¢º£Á¿ÊÓÆµÄÚÈÝ £¬ÈÃÌìϸ÷µØµÄÓû§¶¼ÄÜÏíÊܵ½ÈçË¿°ã˳»¬µÄԢĿÌåÑé £¬ËƺõÊÓÆµÄÚÈݾ͡°×¡¡±ÔÚËûÃǼÒÃſڡ£

2.HTTP/2ºÍHTTP/3µÄ¸³ÄÜ£ºÌáËÙµÄаÊõ

È·±£ÄúµÄNginx°æ±¾Ö§³ÖHTTP/2»òHTTP/3 £¬²¢ÔÚ·þÎñÆ÷ÉèÖÃÖÐÆôÓÃËüÃÇ¡£

server{listen443sslhttp2;#ÆôÓÃSSLºÍHTTP/2server_nameyour_video_domain.com;ssl_certificate/path/to/your/certificate.crt;ssl_certificate_key/path/to/your/private.key;#...ÆäËûSSLÏà¹ØÉèÖÃ...location/{#...ÄãµÄ?ÆäËûlocationÉèÖÃ...}}

ÈôÊÇÄúʹÓõÄÊǽÏа汾µÄ?Nginx £¬²¢ÇÒ·þÎñÆ÷ÒѾ­°²ÅÅÁËQUICÄ£¿é £¬Äú»¹¿ÉÒÔÉèÖÃHTTP/3£º

server{listen443sslhttp2quicreuseport;#ÆôÓÃSSL,HTTP/2,QUICserver_nameyour_video_domain.com;#...SSLºÍQUICÏà¹ØÉèÖÃ...location/{#...ÄãµÄÆäËûlocationÉèÖÃ...}}

ÅþÁ¬½¨É迪Ïú£ÔÃÄ¿ÎÇëÇó¶¼ÐèÒª½¨ÉèTCPÅþÁ¬ £¬¹ØÓÚÆµÈԵĶÌÅþÁ¬ÊÓÆµ £¬»á±¬·¢²»Ð¡µÄ¿ªÏú¡£´ø¿íʹÓÃÂÊ£ºHTTPµÄÍ·²¿ÐÅÏ¢Ïà¶ÔÈßÓà £¬»áÕ¼ÓÃÒ»²¿·Ö´ø¿í¡£Á÷ýÌåÌØÕ÷µÄÖ§³Öȱ·¦£ºHTTPÔ­Éú²¢²»Ö§³ÖRTMP¡¢HLS¡¢DASHµÈÁ÷ýÌåЭÒéµÄÌØÕ÷ £¬Èç·ÖƬ´«?Êä¡¢¶ÏµãÐø²¥¡¢¶¯Ì¬ÂëÂÊÇл»µÈ¡£

Nginx²¢Ã»ÓоÖÏÞÓÚÔ­ÉúHTTPµÄÄÜÁ¦¡£Í¨¹ý¼ÓÔØÖÖÖÖÄ£¿é £¬NginxÄܹ»¼«´ó?µØÀ©Õ¹Æä¹¦Ð§ £¬ÒÔ¸üºÃµØÖ§³ÖÊÓÆµ·Ö·¢¡£ÆäÖÐ £¬×îÒªº¦µÄ±ã?ÊÇÆäǿʢµÄ»º´æ»úÖÆ¡£

Á÷ýÌåЭÒéµÄÓÅ»¯£ºHLSºÍDASHµÄÖ§³Ö

Ëæ×ÅÁ÷ýÌåÊÖÒÕµÄÉú³¤ £¬HLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)ÒѳÉΪÖ÷Á÷µÄÊÓÆµ´«ÊäЭÒé¡£ËüÃÇͨ¹ý½«ÊÓÆµÇзֳÉСƬ¶Ï £¬²¢Ìṩһ¸öË÷ÒýÎļþ£¨.m3u8»ò.mpd£© £¬ÔÊÐí²¥·ÅÆ÷Æ¾Ö¤ÍøÂç״̬¶¯Ì¬µ÷½âÊÓÆµÂëÂÊ £¬´Ó¶øÌṩԽ·¢Á÷ͨµÄԢĿÌåÑé¡£

NginxÔÚÖ§³ÖHLSºÍDASH·½ÃæÌåÏÖ¾«²Ê¡£ËäÈ»Nginx±¾?Éí²¢²»Ö±½Ó¡°×ªÂ롱ÊÓÆµ £¬µ«Ëü¿ÉÒÔ×÷Ϊһ¸ö¸ßЧµÄ?Web·þÎñÆ÷ £¬½«ÕâЩÇÐÆ¬»¯µÄÊÓÆµÎļþºÍË÷ÒýÎļþ¿ìËٵطַ¢¸øÓû§¡£

M3U8/MPDÎļþ·Ö·¢£ºNginx¿ÉÒÔÇáËɵØÎªÕâЩË÷ÒýÎļþÌṩ·þÎñ¡£ÊÓÆµÆ¬¶Ï£¨.ts/.mp4£©·Ö·¢£ºNginxµÄ¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦ £¬Ê¹ÆäÄܹ»¿ìËÙÏìÓ¦²¥·ÅÆ÷¶Ô´ó×ÚСÊÓÆµÆ¬¶ÏµÄÇëÇó¡£RangeÇëÇó£ºNginx¶ÔHTTPRangeÇëÇóµÄÖ§³Ö £¬Ê¹µÃ²¥·ÅÆ÷¿ÉÒÔ¾ÙÐжϵãÐø²¥¡¢¿ì½ø¿ìÍ˵ȲÙ×÷ £¬¶øÎÞÐèÖØÐÂÏÂÔØÕû¸öÊÓÆµ¡£

µÚ¶þÕ£ºNginxµÄÊÓÆµÓÅ»¯½ø½×£º´ÓCDNµ½¶¯Ì¬ÏìÓ¦µÄÉî¶Èµñ×Á

ÔÚÕÆÎÕÁËNginxÔÚÊÓÆµÓÅ»¯·½ÃæµÄ»ù´¡ÄÜÁ¦Ö®ºó £¬ÎÒÃÇÐèÒª½øÒ»²½ÉîÈë £¬½âËøÆä¸ü¸ß¼¶µÄÌØÕ÷ £¬½«ÊÓÆµ²¥·ÅÌåÑéÍÆÏò¼«Ö¡£ÕâÉæ¼°µ½ÔõÑùʹÓÃNginx¹¹½¨¸ßЧµÄCDN¼Ü¹¹ £¬ÔõÑù¾ÙÐÐϸÄ廯µÄÁ÷Á¿¹ÜÀíºÍ¶¯Ì¬ÏìÓ¦ £¬ÒÔ¼°ÔõÑùÓ¦¶ÔÊÓÆµÁ÷ýÌå´«ÊäÖеÄÖÖÖÖÌôÕ½¡£

2.1¹¹½¨¸ßЧµÄCDN±ßÑØ½Úµã£º¾Í½ü»á¼û £¬½µµÍÑÓ³ÙÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©ÊÇÏÖ´úÊÓÆµÁ÷ýÌå·þÎñ²»¿É»òȱµÄ×é³É²¿?·Ö¡£Nginx×÷ΪһÖÖ¸ßÐÔÄܵÄWeb·þÎñÆ÷ £¬×ÔÈ»ÊʺÏ×÷ΪCDNµÄ±ßÑØ½Úµã¡£Í¨¹ýÔÚÈ«Çò¹æÄ£ÄÚ°²ÅÅNginx·þÎñÆ÷ £¬¿ÉÒÔ½«ÊÓÆµÄÚÈÝ»º´æµ½ÀëÓû§×î½üµÄµØÀíλÖà £¬´Ó¶øÏÔÖø½µµÍ»á¼ûÑÓ³Ù £¬Ìá¸ß²¥·ÅÁ÷ͨ¶È¡£

Nginx×÷Ϊ»ØÔ´´úÀí:CDN±ßÑØ½Úµã£¨Nginx£©ÈÏÕæÏìÓ¦Óû§µÄÇëÇó¡£µ±Óû§ÇëÇóÊÓÆµÇÐÆ¬Ê± £¬ÈôÊDZßÑØ½Úµã»º´æÖв»±£´æ £¬Nginx»á×÷Ϊ´úÀí £¬ÏòÔ´Õ¾£¨»òÉÏÒ»¼¶»º´æ½Úµã£©ÌᳫÇëÇó £¬»ñÈ¡ÄÚÈÝ £¬²¢½«ÄÚÈÝ·µ»Ø¸øÓû§ £¬Í¬Ê±½«ÄÚÈÝ»º´æµ½ÍâµØ £¬ÒÔ±¸ºóÐøÓû§»á¼û¡£

NginxµÄsendfileon;Ö¸Áî¿ÉÒÔ½øÒ»²½?ÓÅ»¯.tsÎļþµÄ´«ÊäЧÂÊ £¬Ö±½Ó½«Îļþ´Ó´ÅÅÌ·¢Ë͵½ÍøÂç £¬ïÔÌ­ÄÚºË̬ºÍÓû§Ì¬Ö®¼äµÄÊý¾Ý¿½±´ £¬ÌáÉýÍÌÍÂÁ¿¡£RangeÇëÇóÖ§³Ö?£ºNginx×ÔȻ֧³ÖHTTPRangeÇëÇó £¬Õâ¹ØÓÚHLS²¥·ÅÆ÷ÔÚÐèÒªÊ±Ìøµ½ÊÓÆµµÄÌØ¶¨Î»Öã¨ÀýÈç £¬µ±Óû§Í϶¯½ø¶ÈÌõʱ£©ºÜÊÇÓÐ×ÊÖú¡£

HTTP/2Ö§³Ö£ºÆôÓÃHTTP/2ЭÒé¿ÉÒÔÏÔÖøÌáÉýHLSµÄÐÔÄÜ £¬ÓÉÓÚËüÖ§³Ö¶à·¸´Óà £¬ÔÊÐíÔÚÒ»¸öTCPÅþÁ¬ÉÏͬʱ´«Êä¶à¸ö.tsÎļþ £¬ïÔÌ­ÁËÅþÁ¬½¨ÉèµÄ¿ªÏúºÍÍøÂçÑÓ³Ù¡£

DynamicAdaptiveStreamingoverHTTP(DASH)£ºDASHÊÇHLSµÄ±ê×¼»¯°æ?±¾ £¬Í¬Ñù»ùÓÚHTTP £¬½«ÊÓÆµÖ§½â³ÉСƬ¶Ï £¬²¢Æ¾Ö¤ÍøÂç״̬ºÍ×°±¸ÄÜÁ¦¶¯Ì¬µ÷½â²¥·ÅÖÊÁ¿¡£NginxͬÑù¿ÉÒÔ¸ßЧµØ·Ö·¢DASHÁ÷¡£

NginxµÄDASHÖ§³Ö£ºÓëHLSÀàËÆ £¬NginxÖ÷ÒªÈÏÕæDASHÁ÷µÄHTTP´«Êä¡£DASHʹÓÃ.mpd£¨MediaPresentationDescription£©Îļþ×÷Ϊ²¥·ÅÁбí £¬²¢?ÒýÓÃ.m4s£¨MPEG-4part14segment£©»òÆäËûÃûÌõÄýÌ寬¶Ï¡£

Nginx100%ÊÓÆµ²¥·Å100%£ºÊÖÒÕË¢ÐÂÇý¶¯µÄÁ÷ͨÌåÑé

ÔÚÕâ¸öÄÚÈÝΪÍõµÄʱ´ú £¬ÊÓÆµÒÑÈ»³ÉΪÐÅÏ¢Èö²¥ºÍÓéÀÖÏûºÄµÄÖ÷Á÷ÔØÌå¡£Óû§¶ÔÊÓÆµ²¥·ÅµÄÁ÷ͨ¶È¡¢ÇåÎú¶ÈºÍÏìÓ¦ËÙÂÊÓÐ׎üºõ¿Á¿ÌµÄÒªÇó¡£¶ø×÷Ϊ¸ßÐÔÄÜWeb·þÎñÆ÷ºÍ·´Ïò´úÀíµÄNginx £¬Ê¼ÖÕÕ¾ÔÚÊÖÒÕÇ°ÑØ £¬Ò»Ö±ÍƳ³öР£¬ÎªÊÓÆµÁ÷ýÌåÐÐÒµµÄÉú³¤×¢ÈëǿʢµÄ?¶¯Á¦¡£

×îа汾µÄNginx £¬¸üÊÇÒÔ¡°100%ÊÓÆµ²¥·Å100%¡±µÄ¿ÚºÅ £¬ÏòÒµ½çչʾÁËÆäÔÚÊÓÆµ´«?ÊäÁìÓòµÄÉîֿʵÁ¦ÓëÎÞÏÞDZÁ¦¡£

Ò»¡¢º»Êµ»ù´¡£ºHTTP/2ÓëHTTP/3µÄÖÜÈ«Éý¼¶

ÊÓÆµÁ÷ýÌå´«ÊäµÄ?½¹µãÔÚÓÚ¸ßЧµÄHTTPЭÒé¡£Nginx×îа汾?ÔÚЭÒé²ãÃæµÄˢР£¬ÎªÊµÏÖ100%Á÷ͨ²¥·ÅµÓÚ¨Á˼áʵµÄ»ù´¡¡£

HTTP/2µÄÉî¶ÈÓÅ»¯£ºHTTP/2ЭÒéµÄÒýÈë £¬ÒÔÆä¶à·¸´Óá¢Í·²¿Ñ¹Ëõ¡¢·þÎñÆ÷ÍÆË͵ÈÌØÕ÷ £¬¼«´óµØÌáÉýÁËWeb´«ÊäЧÂÊ¡£NginxÉî¶ÈÓÅ»¯Á˶ÔHTTP/2µÄÖ§³Ö £¬ÏÔÖøïÔÌ­ÁËÊÓÆµ¼ÓÔØÊ±µÄÑÓ³Ù £¬ÓÈÆäÊÇÔÚ´«Êä´ó×ÚСÊÓÆµÆ¬¶Ï»òÐèÒª¿ìËÙÇл»ÊÓÆµÊ± £¬ÆäÓÅÊÆÓÈΪÏÔ×Å¡£

Ò»¡¢Nginx¼Ü¹¹µÄÓÅÊÆ£ºÎªÊÓÆµÁ÷ýÌåÁ¿Éí´òÔì

NginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµÁìÓò´ó·ÅÒì²Ê £¬ÓëÆä¸ßЧµÄÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕI/OÄ£×ÓÃܲ»?¿É·Ö¡£¹Å°åµÄ·þÎñÆ÷Ä£×ÓÍùÍù½ÓÄÉÀú³Ì/Ïß³ÌÄ£×Ó £¬Ã¿¸öÅþÁ¬¶¼ÐèÒªÏûºÄÒ»¸öÀú³Ì»òÏß³Ì £¬Ôڸ߲¢·¢³¡¾°Ï £¬×ÊÔ´ÏûºÄÖØ´ó £¬ÐÔÄÜÆ¿¾±ËæÖ®¶øÀ´¡£¶øNginxÔòͨ¹ýÊÂÎñÇýÄîÍ·ÖÆ £¬Äܹ»ÓÃÉÙÉÙµÄÀú³Ì/Ï̴߳¦Öóͷ£³ÉǧÉÏÍòµÄ²¢·¢ÅþÁ¬¡£

¹ØÓÚÊÓÆµÁ÷ýÌå¶øÑÔ £¬ÕâÒâζ×ÅNginx¿ÉÒÔ¸ßЧµØ´¦Öóͷ£´ó×Ú¿Í»§¶ËͬʱÇëÇóÊÓÆµ×ÊÔ´ £¬¶ø²»»áÓÉÓÚÅþÁ¬Êý¼¤Ôö¶øµ¼ÖÂÐÔÄÜÖè½µ¡£

¸üÖ÷ÒªµÄ?ÊÇ £¬NginxµÄÄÚ´æ¹ÜÀí»ººÍ³åÇø»úÖÆÒ²ÎªÆäÊÓÆµÐÔÄܵÄ׿ԽÌåÏÖµÓÚ¨ÁË»ù´¡¡£ËüÄܹ»ÓÐÓõعÜÀíÄÚ´æ £¬ïÔÌ­²»ÐëÒªµÄ?Äڴ濽±´? £¬²¢Í¨Ï꾡ÄåµÄ»º³å?Çø¿ØÖÆ £¬ÓÅ»¯Êý¾ÝÔÚÍøÂç´«ÊäÖеÄÁ÷¶¯ £¬´Ó¶ø½µµÍÑÓ³Ù £¬Ìá¸ßÍÌÍÂÁ¿¡£

»º´æÓÅ»¯£º

»º´æÄ¿Â¼½á¹¹£ººÏÀíµÄ»º´æÄ¿Â¼²ã¼¶¿ÉÒÔÌá¸ß´ÅÅÌI/OЧÂÊ £¬×èֹĿ¼ÏµÄÎļþ¹ý¶àµ¼Ö²éÕÒ»ºÂý¡£proxy_cache_pathÖ¸ÁîÖеÄlevels²ÎÊý¿ÉÒÔ¿ØÖÆ»º´æÄ¿Â¼µÄ²ã¼¶¡£»º´æ¾ÞϸÓëïÔÌ­Õ½ÂÔ£ºmax_size²ÎÊýÓÃÓÚÏÞÖÆ»º´æµÄ?×ܾÞϸ¡£

µ±»º´æ¿Õ¼äȱ·¦Ê± £¬Nginx»áƾ֤LRU(LeastRecentlyUsed)Ëã·¨ïÔÌ­¾ÉµÄ»º´æÎļþ¡£proxy_cache_keyµÄºÏÀíÉè¼Æ£ºÈ·±£»º´æ¼üÄܹ»×¼È·µØ±êʶ²î±ðµÄ?ÊÓÆµÄÚÈÝ £¬×èÖ¹²»ÐëÒªµÄ»º´æÊ§Ð§»ò»º´æÈßÓà¡£proxy_cache_bypassºÍproxy_cache_ignore£º¿ÉÒÔÓÃÀ´Èƹý»òºöÂÔÄ³Ð©ÌØ¶¨ÇëÇóµÄ»º´æ £¬ÀýÈçÓû§µÇ¼ºóµÄ¸öÐÔ»¯ÄÚÈÝ¡£

ÿ¸öÊÂÇéÀú³Ì?¿ÉÒÔͬʱ´¦Öóͷ£³ÉǧÉÏÍò¸ö²¢·¢ÅþÁ¬ £¬Ëüͨ¹ýÊÂÎñÑ­»·£¨eventloop£©À´¸ßЧµØ¹ÜÀíÕâЩÅþÁ¬¡£µ±Ò»¸öÅþÁ¬ÓÐI/OÊÂÎñ±¬·¢Ê±£¨ÈçÊý¾ÝµÖ´ï»ò·¢ËÍÍê±Ï£© £¬Nginx»áÁ¬Ã¦¸ÐÖªµ½ £¬²¢½«Æä½»¸øÏìÓ¦µÄÊÂÇéÀú³Ì´¦Öóͷ£ £¬¶øÎÞÐèÛÕ±ÕÆÚ´ý¡£ÕâÖÖÄ£×Ó¼«´óµØ½µµÍÁË×ÊÔ´ÏûºÄ £¬Ê¹µÃNginxÄܹ»ÒÔ¼«µÍµÄÄÚ´æÕ¼Óô¦Öóͷ£¼«¸ßµÄ²¢·¢ÅþÁ¬¡£

¹ØÓÚÊÓÆµÁ÷ýÌå¶øÑÔ £¬ÕâÒâζ×Å×ÝÈ»ÔÚÊý°ÙÍòÓû§Í¬Ê±Ô¢Ä¿Ö±²¥»òµã²¥µÄÇéÐÎÏ £¬NginxÒ²Äܼá³Ö?Îȹ̺͸ßЧ £¬±£?֤ÿһ֡ÊÓÆµ¶¼ÄÜʵʱËÍ´ï¡£

¸ßЧµÄ¾²Ì¬Îļþ´¦Öóͷ££ºÊÓÆµÎļþ £¬ÎÞÂÛÊǵ㲥µÄMP4¡¢FLV £¬ÕÕ¾ÉÖ±²¥ÇÐÆ¬ºóµÄTSÎļþ £¬ÊµÖÊÉ϶¼ÊǾ²Ì¬Îļþ¡£NginxÔÚ´¦Öóͷ£¾²Ì¬Îļþ·½ÃæÓÐ×ÅÌìÉúµÄ?ÓÅÊÆ¡£ËüÄܹ»Ö±½Ó´Ó²Ù×÷ϵͳÄں˻ñÈ¡ÎļþÊý¾Ý £¬²¢Í¨¹ýsendfile()ϵͳŲÓøßЧµØ½«Êý¾Ý·¢Ë͵½ÍøÂç¡£

sendfile()µÄÒªº¦ÔÚÓÚËüÄܹ»ÈƹýÓû§¿Õ¼ä £¬Ö±½ÓÔÚÄں˿ռä¾ÙÐÐÎļþµ½socketµÄÊý¾Ý´«?Êä £¬Ê¡È¥ÁËÓû§¿Õ¼äºÍÄں˿ռäµÄÁ½´ÎÊý¾Ý¿½±´ £¬´ó´óÌá¸ßÁË´«ÊäЧÂÊ £¬½µµÍÁËCPU¸ºÔØ¡£¹ØÓÚº£Á¿µÄÊÓÆµÎļþ·Ö·¢ £¬NginxµÄÕâÒ»ÌØÕ÷Ö±½Óת»¯Îª¸ü¿ìµÄ¼ÓÔØËÙÂʺ͸üµÍµÄ?·þÎñÆ÷ѹÁ¦¡£

Nginx×÷ΪCDN±ßÑØ½Úµã£ºÔÚÕâÖּܹ¹Ï £¬Nginx·þÎñÆ÷°²ÅÅÔÚÈ«Çò¸÷µØµÄCDN½ÚµãÉÏ¡£µ±Óû§ÇëÇóÊÓÆµÊ± £¬ÇëÇó»á±»Â·Óɵ½×î½üµÄCDN½Úµã¡£NginxÔÚÕâЩ½ÚµãÉϾÙÐлº´æ £¬Óû§¿ÉÒÔÖ±½Ó´ÓÀë×Ô¼º×î½üµÄ½Úµã»ñÈ¡ÊÓÆµ £¬´ó´ó½µµÍÁËÑÓ³Ù¡£Nginx×÷ΪCDN»ØÔ´·þÎñÆ÷£ºÈôÊÇÄãÏ£ÍûÍêÈ«ÕÆ¿ØÊÓÆµÄÚÈݵķַ¢ £¬¿ÉÒÔ½«Nginx°²ÅÅÔÚÔ´Õ¾ £¬²¢ÉèÖÃCDN´ÓÄãµÄ?Nginx·þÎñÆ÷À­È¡ÄÚÈÝ¡£

NginxµÄ¸ßÐÔÄÜ»º´æ»úÖÆÄܹ»ÓÐÓûº½âԴվѹÁ¦ £¬È·±£CDN½ÚµãÄܹ»¿ìËÙ»ñÈ¡µ½ÄÚÈÝ¡£

CDN¼¯³É£º¹ØÓÚÃæÏòÈ«ÇòÓû§µÄÊÓÆµ·þÎñ £¬½«Nginx°²ÅÅÔÚCDNµÄ±ßÑØ½ÚµãÉÏÊÇʵÏÖµÍÑÓ³Ù¡¢¸ß¿ÉÓÃÐÔµÄÒªº¦¡£Nginx¿ÉÒÔ×÷ΪCDN±ßÑØ½ÚµãµÄ½¹µã £¬´¦Öóͷ£À´×ÔÓû§µÄÇëÇó £¬²¢´Ó?×î½üµÄ½ÚµãÌṩ»º´æÄÚÈÝ¡£ÈôÊDZßÑØ½Úµã»º´æÎ´ÖÀÖÐ £¬Nginx»á»ØÔ´µ½ÖÐÐÄ´æ´¢»òÔ´Õ¾»ñÈ¡ÄÚÈÝ £¬²¢½«Ê״λá¼ûµÄÄÚÈÝ»º´æµ½?±ßÑØ½Úµã £¬¹©ºóÐøÓû§Ê¹Óá£

ÕâÖÖÂþÑÜʽ»º´æ?Õ½ÂÔ¼«´óµØËõ¶ÌÁËÓû§»á¼ûµÄÎïÀí¾àÀë £¬ÏÔÖøÌáÉýÁ˼ÓÔØËÙÂÊ¡£

ä¯ÀÀÆ÷»º´æ¿ØÖÆ£ºNginx»¹¿ÉÒÔͨ¹ýÉèÖÃExpiresºÍCache-ControlÏìӦͷ £¬Ö¸µ¼Óû§µÄä¯ÀÀÆ÷¾ÙÐлº´æ¡£Õâ¹ØÓÚһЩ²»¾­³£±ä»»µÄÊÓÆµÔªÊý¾Ý»ò²¥·ÅÆ÷×ÊÔ´ºÜÊÇÓÐÓà £¬Äܹ»½øÒ»²½ïÔÌ­ÍøÂçÇëÇó´Î?Êý¡£

ͨÏ꾡Ä廯µÄ»º´æÕ½ÂÔÉèÖà £¬NginxÄܹ»ÓÐÓõؽ«´ó×ÚÖØ¸´µÄÊÓÆµÇëÇó×èµ²ÔÚ±ßÑØ £¬½«Ãû¹óµÄ·þÎñÆ÷×ÊÔ´Áô¸ø´¦Öóͷ£ÕæÕýÐèÒª¶¯Ì¬ÌìÉúµÄÄÚÈÝ £¬´Ó¶øÎªÓû§Ìṩ¿¿½ü¡°Ã뿪¡±µÄ¹ÛÓ°ÌåÑé¡£ÔÚÏÂÒ»²¿·Ö £¬ÎÒÃǽ«ÉîÈë̽ÌÖNginxÔÚ´«ÊäЭæÅºÍʵʱÁ÷ýÌå·½ÃæµÄ?ÓÅ»¯ £¬½øÒ»²½½âËø100%Á÷ͨÊÓÆµµÄÉñÃØ¡£

NginxÊÓÆµÓÅ»¯½¹µãÕ½ÂÔ¶þ£ºÐ­ÒéµÄÑݽøÓë´«ÊäµÄ¼«Ö¡ª¡ªÈÃÊÓÆµ¡°ÅÜ¡±µÃ¸ü¿ì

Èý¡¢Ä£¿é»¯Éè¼ÆÓëÀ©Õ¹ÐÔ£ºÖª×ã¶àÑù»¯µÄÊÓÆµÐèÇó

NginxµÄÁíÒ»¸öÏÔÖøÌØµãÊÇÆä¸ß¶ÈÄ£¿é»¯µÄÉè¼Æ¡£ÕâÒâζ×ÅÄã¿ÉÒÔÆ¾Ö¤×Ô¼ºµÄÏêϸÐèÇó £¬ÎÞаµØÑ¡ÔñºÍ¼ÓÔØÖÖÖÖ¹¦Ð§Ä£¿é £¬ÉõÖÁ¿ÉÒÔ×ÔÐпª·¢¶¨ÖÆÄ£¿é¡£

RTMPÄ£¿é£º¹ØÓÚÁ÷ýÌåÖ±²¥¶øÑÔ £¬RTMP(Real-TimeMessagingProtocol)ÊÇÒ»¸öºÜÊÇÖ÷ÒªµÄЭÒ顣ͨ¹ý¼ÓÔØnginx-rtmp-module £¬Nginx¿ÉÒÔÖ±½Ó×÷ΪRTMP·þÎñÆ÷ £¬ÎüÊÕÖ±²¥ÍÆÁ÷ £¬²¢½«Ö±²¥Á÷·Ö·¢¸øÔ¢Ä¿Õß £¬ÊµÏÖ¸ßЧµÄÖ±²¥·þÎñ¡£

HLS/DASHÖ§³Ö£ºHLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)ÊÇÏÖÔÚÖ÷Á÷µÄÊÓÆµµã²¥ºÍÖ±²¥½â¾ö¼Æ»® £¬ËüÃǽ«ÊÓÆµÖ§½â³ÉСÎļþ £¬²¢Í¨¹ýHTTP¾ÙÐд«Êä £¬±ãÓÚCDN·Ö·¢ºÍ×Ô˳ӦÂëÂʲ¥·Å¡£

Nginx¿ÉÒÔͨ¹ýÅäºÏÏà¹ØµÄÄ£¿é»ò¹¤¾ß £¬ÇáËÉʵÏÖHLS/DASHÊÓÆµÁ÷µÄתÂë¡¢·â×°ºÍ·Ö·¢¡£µÚÈý·½Ä£¿é£ºÉçÇø»¹ÌṩÁË´ó×ÚÓÅÒìµÄµÚ?Èý·½Ä£¿é £¬ÀýÈçÓÃÓÚÊÓÆµ×ªÂë¡¢ÄÚÈݼÓÃÜ¡¢DRM(Êý×Ö°æÈ¨¹ÜÀí)¡¢¹ã¸æ²åÈëµÈ¹¦Ð§µÄÄ£¿é £¬ÕâЩÄ£¿é¿ÉÒÔ¼«´óµØÀ©Õ¹NginxµÄÄÜÁ¦ £¬Öª×ã¸üÖØ´óµÄÊÓÆµÓªÒµÐèÇó¡£

ÐÔÄܵ÷ÓÅ£º

»ù×¼²âÊÔ£ºÊ¹Óù¤¾ß£¨Èçab¡¢wrk£©¶ÔNginx¾ÙÐлù×¼²âÊÔ £¬Ä£Äâ¸ß²¢·¢³¡¾° £¬ÕÒ³öÐÔÄÜÆ¿¾±¡£²ÎÊýµ÷½â£ºÆ¾Ö¤¼à¿ØÊý¾ÝºÍ²âÊÔЧ¹û £¬ÓÐÕë¶ÔÐԵص÷½âNginxµÄÉèÖòÎ?Êý £¬ÀýÈçworker_processes,worker_connections,buffer_size,keepalive_timeoutµÈ¡£

²Ù×÷ϵͳÄں˲ÎÊýÓÅ»¯£ºÅäºÏ²Ù×÷ϵͳµÄTCP/IP²ÎÊýµ÷ÓÅ£¨Èçnet.core.somaxconn,net.ipv4.tcp_fin_timeoutµÈ£© £¬¿ÉÒÔ½øÒ»²½ÌáÉýNginxµÄÕûÌåÐÔÄÜ¡£

±ßÑØÅÌËãµÄ¿ÉÄÜÐÔ£ºËæ×ÅWebAssembly£¨Wasm£©µÈÊÖÒÕÔÚNginxÖеļ¯³É £¬NginxÕýÖ𽥾߱¸?±ß??ÔµÅÌËãµÄÄÜÁ¦¡£ÕâÒâζ×Å¿ÉÒÔÔÚ±ß??Ôµ½ÚµãÉÏÖ´ÐÐһЩÇáÁ¿¼¶µÄÊÓÆµ´¦Öóͷ£¡¢ÄÚÈÝת»» £¬ÉõÖÁÊǸöÐÔ»¯ÍƼöµÄÂß¼­ £¬½øÒ»²½½µµÍÑÓ³Ù £¬ÌáÉýÓû§ÌåÑé¡£

WebRTCÓëµÍÑÓ³ÙʵʱͨѶ£ºÓâÔ½¹Å°åÁ÷ýÌåµÄ½çÏß

WebRTC£¨WebReal-TimeCommunication£©ÊÖÒÕµÄÐËÆð £¬Ê¹µÃä¯ÀÀÆ÷Ö®¼äÄܹ»Ö±½Ó¾ÙÐеÍÑÓ³ÙµÄÒôÊÓÆµÍ¨Ñ¶ £¬ÕâΪʵʱ»¥¶¯Ó¦Óã¨ÈçÔÚÏß¾Û»á¡¢ÔÆÓÎÏ·¡¢Ô¶³ÌЭ×÷£©´øÀ´Á˸ïÃüÐÔµÄת±ä¡£NginxͬÑùÔÚWebRTCÉú̬ÖÐÊÎÑÝ×ÅÖ÷Òª½ÇÉ«¡£

ÐÅÁî·þÎñÆ÷(SignalingServer)£ºWebRTCͨѶÐèÒªÒ»¸öÐÅÁî·þÎñÆ÷À´Ð­µ÷¶Ëµ½¶ËÅþÁ¬µÄ½¨Éè¡£Nginx¿ÉÒÔͨ¹ýWebSocketÄ£¿é£¨Èçngx_http_vhost_traffic_status_moduleÅäºÏWebSocket´úÀí£©»òLua¾ç±¾ £¬¸ßЧµØ¹¹½¨Ò»¸ö¸ß²¢?·¢µÄWebSocketÐÅÁî·þÎñÆ÷ £¬´¦Öóͷ£SDP£¨SessionDescriptionProtocol£©½»Á÷¡¢ICE£¨InteractiveConnectivityEstablishment£©ºòѡЭÉ̵ÈÒªº¦°ì·¨¡£

5.Á÷Á¿¿ØÖÆÓëÇå¾²¼Ó¹Ì£ºÊØ»¤Á÷ͨÌåÑé

ΪÁËÓ¦¶ÔÍ»·¢Á÷Á¿ºÍDZÔڵĹ¥»÷ £¬ÉèÖÃÁ÷Á¿¿ØÖÆÊÇÐëÒªµÄ¡£

http{#½ç˵һ¸öÇøÓò £¬Ã¿ÃëÔÊÐí100¸öÇëÇó £¬ÁîÅÆÍ°ÈÝÁ¿Îª100limit_req_zone$binary_remote_addrzone=mylimit:10mrate=100r/s;server{#...location~*\.(mp4|mkv|avi|mov|flv|webm)${proxy_passhttp://your_backend_video_server;proxy_cachevideo_cache;proxy_cache_valid20030210m;proxy_cache_valid4041m;proxy_cache_key"$scheme$request_method$host$request_uri";add_headerX-Cache-Status$upstream_cache_status;limit_reqzone=mylimitburst=100nodelay;#Ó¦ÓÃÁ÷Á¿ÏÞÖÆ}#...}}limit_req_zone:½ç˵һ¸öÃûΪmylimitµÄÇøÓò £¬ÒÔ¿Í»§¶ËIP($binary_remote_addr)×÷Ϊ±êʶ £¬ÔÊÐíÿÃë100¸öÇëÇó £¬ÁîÅÆÍ°ÈÝÁ¿Îª100¡£

½¹µãÓÅ»¯Õ½ÂÔ¶þ£ºGzipѹËõ £¬Èô«Êä¸ü¸ßЧ£¡

ËäÈ»ÊÓÆµÎļþ×Ô¼ºÍ¨³£ÊǾ­Óɸ߶ÈѹËõµÄ£¨ÈçH.264/H.265±àÂ룩 £¬µ«HTTP´«ÊäÀú³ÌÖпÉÄܻᱣ´æÒ»Ð©¿ÉѹËõµÄÍ·²¿ÐÅÏ¢»òÔªÊý¾Ý¡£NginxµÄGzipѹËõ¹¦Ð§¿ÉÒÔÔÚÕâЩ²¿·Öʩչ×÷Óà £¬½øÒ»²½¼õС´«?ÊäµÄÊý¾ÝÁ¿ £¬½ÚÔ¼´ø?¿í £¬²¢¼ÓËÙ´«ÊäËÙÂÊ¡£

ÆôÓÃGzipѹËõ£ºÔÚNginxµÄhttp»òserver¿éÖÐ £¬¿ÉÒÔʹÓÃgzipon;Ö¸ÁîÀ´¿ªÆôGzipѹËõ¡£ÉèÖÃѹËõ¼¶±ð£ºgzip_comp_levelÖ¸Áî¿ÉÒÔÉèÖÃѹËõ¼¶±ð£¨1-9£© £¬¼¶±ðÔ½¸ßѹËõЧ¹ûÔ½ºÃ £¬µ«CPUÏûºÄÒ²Ô½´ó¡£Í¨³£?ÉèÖÃΪ4-6ÊDZÈ?½ÏÕÛÖÔµÄÑ¡Ôñ¡£

Ö¸¶¨Ñ¹ËõÀàÐÍ£ºgzip_typesÖ¸Áî¿ÉÒÔÖ¸¶¨ÄÄЩMIMEÀàÐ͵ÄÎļþ¾ÙÐÐѹËõ¡£¹ØÓÚÊÓÆµÁ÷ £¬Äã¿ÉÄܲ»Ï£Íû¶ÔÊÓÆµ×Ô¼º¾ÙÐÐGzipѹËõ£¨ÓÉÓÚËüÃÇ×Ô¼ºÒѾ­ÊǸ߶ÈѹËõµÄ£© £¬µ«¿ÉÒÔ¶ÔHTML¡¢CSS¡¢JavaScriptµÈ?¸¨ÖúÎļþ¾ÙÐÐѹËõ £¬ÒÔÌáÉýÒ³Ãæ¼ÓÔØËÙÂÊ¡£

ÆäËûÏà¹ØÖ¸Ágzip_min_length£¨Ö¸¶¨×îСѹËõ³¤¶È£©¡¢gzip_disable£¨½ûÓÃijЩä¯ÀÀÆ÷»òÌõ¼þϵÄѹËõ£©¡¢gzip_varyon£¨ÔÚÏìӦͷÖÐÌí¼ÓVary:Accept-Encoding £¬±ÜÃ⻺´æ´úÀí¹ýʧµØ»º´æÎ´Ñ¹ËõµÄÄÚÈÝ£©µÈ £¬¿ÉÒÔÆ¾Ö¤ÏÖʵÐèÇó¾ÙÐиüϸÄåµÄÉèÖá£

ÔÚÊÓÆµÁ÷ýÌåÕâÖÖ¶Ô´ø¿íºÍÑÓ³ÙÃô¸ÐµÄ³¡¾°Ï £¬BBRÄܹ»ÏÔÖøÌá¸ß´ø¿íʹÓÃÂÊ £¬½µµÍ¶ª°üÂÊ £¬´Ó¶ø´ø?À´¸üÎȹ̵IJ¥·ÅÌåÑé¡£

ÆôÓÃBBR:Õâͨ³£ÐèÒªÔÚ²Ù×÷ϵͳ²ãÃæ¾ÙÐÐÉèÖà £¬È»ºóÔÚNginxµÄnginx.confÎļþÖÐ £¬¿ÉÒÔͨ¹ýtcp_nodelayon;ºÍtcp_nopushon;À´ÅäºÏBBRµÄÊÂÇé¡£ËäÈ»Nginx×Ô¼º²»Ö±½Ó¿ØÖÆBBR £¬µ«ÆäϸÄåµÄÍøÂç²ÎÊýµ÷½âÄܹ»ÓëBBRЭͬ×÷Óà £¬Ê©Õ¹×î´óЧÄÜ¡£

1.4Òªº¦Á÷ýÌåЭÒéµÄÖ§³Ö£ºHLSÓëDASHNginx¶ÔHLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)ÕâÁ½ÖÖÖ÷Á÷µÄÁ÷ýÌåЭÒéÌṩÁËÓÅÒìµÄÖ§³Ö?¡£

ÕâЩЭÒ齫ÊÓÆµÖ§½â³ÉСµÄýÌ寬¶Ï £¬²¢Ìṩһ¸ö²¥?·ÅÁбíÎļþ £¬ÔÊÐí¿Í»§¶ËÆ¾Ö¤ÍøÂç״̬¶¯Ì¬µ÷½â²¥·ÅµÄÂëÂÊ¡£

HLS(.m3u8&.ts):Nginx¿ÉÒÔ¸ßЧµØ?»º´æºÍ·Ö·¢.m3u8²¥·ÅÁбíÎļþºÍ.tsýÌ寬¶Ï¡£Í¨¹ýºÏÀíµÄ»º´æÉèÖà £¬¿ÉÒÔ´ó?·ù¼õÇáÔ´·þÎñÆ÷µÄѹÁ¦ £¬²¢¼ÓËÙÈ«ÇòÓû§µÄ»á¼ûËÙÂÊ¡£DASH(.mpd&.m4s/.mp4):ÀàËÆÓÚHLS £¬NginxͬÑùÄܹ»¸ßЧµØ´¦Öóͷ£DASHµÄ.mpdmanifestÎļþºÍÖÖÖÖÂëÂʵÄýÌ寬¶Ï¡£

Nginx£ºÊÓÆµÁ÷ýÌåµÄÐÔÄÜÍõÕß £¬´ÓÔ­Àíµ½Êµ¼ù

ÔÚµ±½ñÕâ¸öÐÅÏ¢±¬Õ¨µÄʱ´ú £¬ÊÓÆµÒѳÉΪÈËÃÇ»ñÊØÐÅÏ¢¡¢ÓéÀÖÏûDz¡¢Éç½»»¥¶¯µÄÖ÷ÒªÔØÌå¡£´Ó¸ßÇåÓ°Ï·µÄµã²¥µ½ÊµÊ±Ö±²¥µÄ?»ð±¬? £¬ÊÓÆµÁ÷ýÌåµÄÐèÇó³Ê?ÏÖ³ö¼¸ºÎ¼¶ÔöÌí¡£¶øÔÚÕâ±³ºó £¬Ö§³ÖÆðº£Á¿ÊÓÆµÁ÷ͨ´«ÊäµÄ £¬ÍùÍùÊÇÄÇЩĬĬÎÞÎÅÈ´ÖÁ¹ØÖ÷ÒªµÄÊÖÒÕ»ùʯ £¬Nginx¼´ÊÇÆäÖÐÇ̳þ¡£

Ðí¶àÈË¿ÉÄܶÔNginxµÄǿʢÐÔÄÜÔçÓжúÎÅ £¬ÓÈÆäÊÇÔÚ´¦Öóͷ£¸ß²¢·¢ÅþÁ¬ºÍ¾²Ì¬Îļþ´«Êä·½Ãæ £¬ËüÏÕЩÊÇÎÞ¿ÉÆ¥µÐµÄ±£´æ¡£µ±ÎÒÃǽ«ÑÛ¹âͶÏòÊÓÆµÁ÷ýÌåÕâ¸ö¶ÔÐÔÄÜÒªÇó¼«ÎªÑÏ¿ÁµÄÁìÓòʱ £¬NginxÓÖ½«Õ¹ÏÖ³öÔõÑùµÄ¡°100%ÊÓÆµ100%ÐÔÄÜ¡±µÄʵÁ¦ÄØ£¿

Ò»¡¢NginxµÄ½¹µãÓÅÊÆ£ºÎªºÎËüÊÇÊÓÆµÁ÷ýÌåµÄÓÅÑ¡£¿

ÒªÃ÷È·NginxÔõÑùʵÏÖ¡°100%ÊÓÆµ100%ÐÔÄÜ¡± £¬ÎÒÃÇÊ×ÏÈÐèÒªÉîÈëÆä½¹µã¼Ü¹¹ºÍÉè¼ÆÀíÄî¡£Nginx½ÓÄɵÄÊÇÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄI/OÄ£×Ó £¬ÕâÓë¹Å°åµÄApache·þÎñÆ÷½ÓÄɵÄÀú³Ì/Ïß³ÌÄ£×ÓÓÐ×ÅʵÖʵÄÇø±ð¡£

ÊÂÎñÇý¶¯ÓëÒì²½·ÇÛÕ±Õ£º¹Å°åµÄ·þÎñÆ÷Ä£×Ó £¬ÀýÈçApache £¬Ã¿¸öÇëÇóͨ³£»á½¨ÉèÒ»¸öеÄÀú³Ì»òÏß³ÌÀ´´¦Öóͷ£¡£µ±²¢·¢ÇëÇóÁ¿Ôö´óʱ £¬´ó×ÚµÄÀú³Ì/Ïß³Ì?»áÏûºÄ´ó×ÚµÄ?ϵͳ×ÊÔ´£¨CPUºÍÄڴ棩 £¬µ¼ÖÂÉÏÏÂÎÄÇл»ÆµÈÔ £¬ÐÔÄܼ±¾çϽµ £¬ÉõÖÁ·ºÆð¡°¾ªÈºÐ§Ó¦¡±¡£¶øNginxÔò½ÓÄɼòµ¥Ö÷Àú³Ì£¨masterprocess£©ºÍ¶à¸öÊÂÇéÀú³Ì£¨workerprocesses£©µÄģʽ¡£

ÍøÂçÓëI/OÓÅ»¯£º

sendfileon;£ºÆôÓÃsendfileϵͳŲÓà £¬¿ÉÒÔÖ±½Ó½«Îļþ´ÓÄں˻º´æ?¸´ÖƵ½ÍøÂçÌ×½Ó×Ö £¬×èÖ¹ÁËÓû§¿Õ¼äºÍÄں˿ռäÖ®¼äµÄÊý¾Ý¿½±´ £¬ÏÔÖøÌá¸ßÁËÎļþ´«ÊäЧÂÊ¡£tcp_nopushon;ºÍtcp_nodelayon;£ºtcp_nopush¿ÉÒÔÔÚ·¢ËÍÏìӦͷºó £¬ÆÚ´ýÊý¾Ý°üÌîÂú £¬ÒÔïÔÌ­TCP±¨ÎÄÊýÄ¿£»tcp_nodelayÔòÏà·´ £¬ÔÊÐíÁ¬Ã¦·¢ËÍСÊý¾Ý°ü £¬¹ØÓÚÑÓ³ÙÃô¸ÐµÄÓ¦Óã¨ÈçijЩֱ²¥³¡?¾°£©¿ÉÄܸüÓÐÀû¡£

ÐèҪƾ֤ÏêϸӪҵ³¡¾°¾ÙÐвâÊÔºÍÑ¡Ôñ¡£keepalive_timeout£ºÉèÖÃHTTP³¤ÅþÁ¬µÄ³¬Ê±Ê±¼ä¡£Êʵ±µÄ³¤ÅþÁ¬¿ÉÒÔïÔÌ­TCP½¨ÉèºÍ¹Ø±ÕµÄ¿ªÏú £¬Ìá¸ßÐÔÄÜ £¬µ«¹ý³¤µÄ³¬Ê±Ê±¼ä¿ÉÄÜ»áÕ¼Óò»ÐëÒªµÄÅþÁ¬×ÊÔ´¡£

ÔÙÕß £¬Nginx¶ÔTCP/IPЭÒéÕ»µÄÉî¶ÈÓÅ»¯Ò²ÊÇÆäÊÓÆµ´«ÊäÄÜÁ¦µÄ½¹µã¡£×îа汾ÔÚTCPÎÕÊÖ¡¢ÓµÈû¿ØÖÆ¡¢ÒÔ¼°³¤ÅþÁ¬µÄά³Ö·½Ãæ¾ÙÐÐÁËÖî¶àˢС£ÀýÈç £¬¶ÔTCPKeep-alive»úÖÆµÄϸÄåµ÷ÓÅ £¬Äܹ»¸üÓÐÓõعÜÀí¿Í»§¶ËÅþÁ¬ £¬ïÔÌ­²»ÐëÒªµÄÖØÁ¬¿ªÏú£»ÔÚÓµÈû¿ØÖÆ·½Ãæ £¬NginxÄܹ»Æ¾Ö¤ÍøÂç״̬¶¯Ì¬µ÷½â·¢ËÍËÙÂÊ £¬×èÖ¹ÍøÂçÓµÈû¶ÔÊÓÆµÁ÷Ôì³ÉµÄ¹¥»÷ £¬´Ó¶ø°ü¹ÜÁ˲¥·ÅµÄÒ»Á¬ÐÔ¡£

RTMP¡¢HLS¡¢DASH£ºNginxÉú̬ϵÄ?Ö÷Á÷ÊÓÆµÐ­ÒéÖ§³Ö

NginxÖ®ÒÔÊÇÄܳÉΪÁ÷ýÌåÁìÓòÎÞ¿ÉÕùÒéµÄÍõÕß £¬ºÜ´ó?ˮƽÉϹ鹦ÓÚÆä¶ÔÖ÷Á÷ÊÓÆµ´«ÊäЭÒéµÄǿʢ֧³Ö¡£

RTMP(Real-TimeMessagingProtocol)£º×÷ΪÔçÆÚÖ±²¥ÁìÓòµÄÊÂʵ±ê×¼ £¬RTMPЭÒéÒÀ¸½ÆäµÍÑÓ³ÙµÄÌØÕ÷ £¬ÔÚʵʱ»¥¶¯ÐÔÇ¿µÄ³¡¾°ÏÂÈÔȻռÓÐÖ÷Ҫְλ¡£Nginxͨ¹ýLoadBalancer¡¢ReverseProxyµÈ¹¦Ð§ £¬¿ÉÒÔÇáËɵسÐÔØRTMPÁ÷ýÌå·þÎñÆ÷ £¬ÊµÏÖÖ±²¥Ô´µÄ½ÓÈë¡¢·Ö·¢ÒÔ¼°¶à·¸´Óá£

ͨ¹ýNginx-RTMP-ModuleÆ·¼¶Èý·½Ä£¿é £¬NginxÄܹ»¸ßЧµØ´¦Öóͷ£RTMPÍÆÁ÷ºÍÀ­Á÷ÇëÇó £¬ÎªÖ±²¥Æ½Ì¨ÌṩÁËǿʢµÄºó¶ËÖ§³Ö¡£

Ò»¡¢Ï¸Ä廯ÅþÁ¬ÊÜÀí£ºÈÃÿһ´ÎÅþÁ¬¶¼¸ßЧÔËת

ÊÓÆµÁ÷µÄÌØµãÊÇÅþÁ¬Ê±¼ä³¤¡¢Êý¾Ý´«ÊäÒ»Á¬¡£Òò´Ë £¬ÔõÑù¸ßЧµØ¹ÜÀíº£Á¿³¤ÅþÁ¬ £¬ÊÇNginxÐÔÄÜÓÅ»¯µÄ½¹µã¡£

workerprocessesÓëworkerconnections£ºworker_processes:½¨ÒéÉèÖÃΪCPU½¹µãÊý £¬»òÂÔ¶àÓÚCPU½¹µãÊý £¬ÒÔ³ä·ÖʹÓöàºËÓÅÊÆ £¬ÊµÏÖ²¢Ðд¦Öóͷ£¡£ÀýÈç £¬ÈôÊÇ·þÎñÆ÷ÓÐ8¸öCPU½¹µã £¬¿ÉÒÔÉèÖÃworker_processes8;¡£

worker_connections:Õâ¸ö²ÎÊý¾öÒéÁËÿ¸öWorkerÀú³ÌÄܹ»Í¬Ê±´¦Öóͷ£µÄ×î´óÅþÁ¬Êý¡£Æäֵͨ³£ÐèҪƾ֤·þÎñÆ÷µÄÄÚ´æºÍ²¢·¢ÅþÁ¬ÐèÇóÀ´É趨¡£Ò»¸öÂÄÀú¹«Ê½ÊÇ£ºworker_connections*worker_processesÓ¦¸Ã´óÓÚÄãÔ¤ÆÚµÄ×î´ó²¢·¢ÅþÁ¬Êý¡£

¹ØÓÚÊÓÆµ´«Êä £¬Õâ¸öÖµ¿ÉÄÜÐèÒªÉèÖÃµÃ½Ï¸ß £¬ÀýÈçworker_connections4096;»ò¸ü¸ß¡£keepalivetimeoutÓëkeepaliverequests£ºkeepalive_timeout:ÉèÖó¤ÅþÁ¬µÄ³¬?ʱʱ¼ä¡£

¸ßЧµÄ»º´æ»úÖÆ£ºNginxÓµÓÐǿʢµÄ»º´æÄÜÁ¦ £¬¿ÉÒÔ»º´æ¾²Ì¬Îļþ£¨°üÀ¨ÊÓÆµÆ¬¶Ï£©ÒÔ¼°¶¯Ì¬ÌìÉúµÄÏìÓ¦¡£Í¨¹ý½«ÆµÈÔ»á¼ûµÄÊÓÆµÎļþ»º±£´æÄÚ´æ»ò´ÅÅÌÖÐ £¬Nginx¿ÉÒÔ¼«´óµØïÔÌ­¶Ôºó¶Ë´æ´¢µÄ»á¼û´ÎÊý £¬´Ó¶øËõ¶ÌÏìӦʱ¼ä £¬Ìá¸ßÍÌÍÂÁ¿¡£¹ØÓÚÊÓÆµ·þÎñ¶øÑÔ £¬ÕâÒâζ×ÅÓû§¿ÉÒÔ¸ü¿ìµØ»ñÈ¡µ½ËùÐèµÄÊÓÆµÄÚÈÝ £¬ÏÔÖøÌáÉýÁ˲¥·ÅÁ÷ͨ¶È¡£

Ä£¿é»¯Éè¼ÆÓ븻ºñµÄ¹¦Ð§£ºNginxµÄÄ£¿é»¯Éè¼ÆÊ¹ÆäÓµÓм«Ç¿µÄ¿ÉÀ©Õ¹ÐÔ¡£³ýÁË»ù´¡µÄHTTP/HTTPS·þÎñ £¬Ëü»¹Ö§³ÖRTMP¡¢HLS¡¢DASHµÈ¶àÖÖÁ÷ýÌåЭÒé £¬Äܹ»Ê¤ÈÎÖ±²¥ºÍµã²¥µÈ¶àÖÖÊÓÆµ·þÎñ³¡¾°¡£Æä¸»ºñµÄÄ£¿é£¨Èçngx_http_flv_module¡¢ngx_http_mp4_moduleµÈ£©ÌṩÁ˶ÔÊÓÆµÎļþÃûÌõÄÉî¶ÈÖ§³Ö £¬Äܹ»¾ÙÐÐÊÓÆµÁ÷µÄÖ§½â¡¢×ªÂ루ËäÈ»Nginx×Ô¼º²»ÉÆÓÚÖØ´óµÄתÂë £¬µ«¿ÉÒÔÓëµÚÈý·½·þÎñ¼¯³É£©µÈ²Ù×÷ £¬ÎªÊÓÆµ·þÎñÌṩÁËǿʢµÄ¹¦Ð§Ö§³Ö¡£

ËÄ¡¢´«ÊäЭÒéÓëÃûÌÃÓÅ»¯£ºÈ·±£Á÷ͨ²¥·ÅµÄ?»ùʯ

HTTP/2&HTTP/3£ºÔÚNginxÉèÖÃÖÐÆôÓÃHTTP/2»òHTTP/3ЭÒé £¬¿ÉÒÔÏÔÖøÌáÉýÊÓÆµ¼ÓÔØËÙÂÊ £¬ÓÈÆäÊÇÔÚÍøÂçÌõ¼þ²»¼ÑµÄÇéÐÎÏ¡£nginxlisten443sslhttp2;AdaptiveBitrateStreaming(ABS)£º¹ØÓÚÖ±²¥ºÍµã²¥ £¬Ö§³ÖHLS»òDASHÃûÌõÄABSÊÖÒÕÖÁ¹ØÖ÷Òª¡£

Nginx¿ÉÒÔͨ¹ýÉèÖÃngx_http_vhost_traffic_status_moduleµÈÄ£¿é £¬»òÅäºÏffmpegµÈ¹¤¾ß £¬ÊµÏÖÊÓÆµµÄתÂëºÍ·Ö·¢ £¬Îª²î±ðÍøÂç´ø¿íµÄÓû§Ìṩ×î¼ÑµÄԢĿÌåÑé¡£GzipѹËõ£ºËäÈ»ÊÓÆµÎļþ×Ô¼ºÒÑѹËõ £¬µ«?¹ØÓÚÎı¾ÀศÖúÎļþ £¬¿ªÆôGzipѹËõÈÔÈ»ÄܽÚÔ¼´ø¿í £¬¼ÓËÙ¼ÓÔØËÙÂÊ¡£

nginxgzipon;gzip_varyon;gzip_proxiedany;gzip_comp_level6;gzip_typestext/plaintext/cssapplication/jsonapplication/javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;

½ø½×ÉèÖãºÄ㻹¿ÉÒÔÆ¾Ö¤HTTPÏìӦͷÖеĻº´æ¿ØÖÆÖ¸ÁÈçCache-Control¡¢Expires£©À´¶¯Ì¬µ÷½â»º´æ?Õ½ÂÔ¡£NginxÒ²¿ÉÒÔÉèÖÃÖ»»º´æ²¿·ÖÏìÓ¦£¨proxy_cache_bypass£© £¬»òÕßÔÚ»º´æÓâÆÚºó £¬ÏÈ·µ»ØÓâÆÚ»º´æ²¢Òì²½¸üУ¨proxy_cache_revalidate£© £¬½øÒ»²½ÌáÉýÓû§ÌåÑé¡£

Îļþϵͳ»º´æ£¨OSCache£©£ºNginx×Ô¼ºÒ²¿ÉÒÔʹÓòÙ×÷ϵͳÌṩµÄÎļþϵͳ»º´æ¡£µ±Nginx¶ÁÈ¡ÊÓÆµÎļþʱ £¬²Ù×÷ϵͳ»á½«ÎļþµÄÊý¾Ý¿é¼ÓÔØµ½ÄÚ´æÖС£ÈôÊÇÎļþ±»ÆµÈÔ»á¼û £¬ÕâЩÊý¾Ý¿é»áÒ»Ö±±£±£´æÄÚ´æÖÐ £¬Ï´λá¼ûʱ¿ÉÒÔÖ±½Ó´ÓÄÚ´æ¶ÁÈ¡ £¬ËÙÂʼ«¿ì¡£

ËäÈ»Õâ²»ÊÇNginxÖ±½Ó¿ØÖÆµÄ £¬µ«Nginx¸ßЧµÄÎļþ»á¼û·½·¨ÄܸüºÃµØÊ¹ÓÃOSCache¡£

CDN¼¯³É?£º¹ØÓÚÃæÏòÈ«ÇòÓû§µÄÁ÷ýÌå·þÎñ £¬½öÒÀÀµ¼òµ¥µÄNginx·þÎñÆ÷¾ÙÐлº´æÊÇÔ¶Ô¶²»·óµÄ¡£½«NginxÓëÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©¼¯³ÉÊÇʵÏÖ¡°100%ÊÓÆµÓÅ»¯¡±µÄ±ØÓÉ֮·¡£Nginx¿ÉÒÔ×÷ΪCDN±ßÑØ½Úµã £¬Ò²¿ÉÒÔ×÷ΪCDN»ØÔ´·þÎñÆ÷¡£

Õâ¸öÖµÐèҪƾ֤·þÎñÆ÷µÄÄÚ´æºÍ²Ù×÷ϵͳÏÞÖÆÀ´É趨¡£ÔÚ´¦Öóͷ£ÊÓÆµÁ÷Á¿Ê± £¬ÓÈÆäÐèÒª½«ÆäÉèÖõÃ×ã¹»´ó £¬ÒÔ×èÖ¹ÒòÅþÁ¬ÊýÏÞÖÆ¶øµ¼ÖµÄÇëÇóʧ°Ü¡£µ÷ÓŽ¨Ò飺ÍŽáulimit-nµ÷½âϵͳµÄ?ÎļþÐÎò·ûÏÞÖÆ £¬È·±£?worker_connectionsµÄÖµÄܹ»±»ÏµÍ³Ö§³Ö¡£

ÀýÈç £¬ÈôÊÇworker_connectionsÉèÖÃΪ10240 £¬ÄÇôϵͳµÄÎļþÐÎò·ûÏÞÖÆÖÁÉÙÓ¦´ó?ÓÚ¼´ÊÇworker_processes*worker_connections¡£

2.ÊÓÆµÎļþ´«ÊäµÄЧÂÊÓÅ»¯£ºsendfile,tcpnopush,tcpnodelay

sendfileon;£º´ËÖ¸ÁîÔÊÐíNginxÖ±½Ó½«Îļþ´ÓÎļþϵͳµÄ»º³åÇø¸´ÖƵ½ÍøÂçÌ×½Ó×Ö»º³åÇø £¬ÈƹýÓû§¿Õ¼ä £¬¼«´óµØïÔÌ­ÁËCPUµÄ¿ªÏúºÍÄڴ濽±´µÄ´ÎÊý £¬¹ØÓÚ´«Êä´óÎļþ£¨ÈçÊÓÆµ£©ºÜÊǸßЧ¡£tcp_nopushon;£ºµ±Nginx·¢ËÍÏìӦͷºÍÎļþÄÚÈÝʱ £¬´ËÖ¸Áî»áÖ»¹Ü½«ËüÃÇ×éºÏ³ÉÒ»¸öTCPÊý¾Ý°ü·¢ËÍ £¬ïÔÌ­ÍøÂçͨѶµÄ´ÎÊý £¬Ìá¸ß´«ÊäЧÂÊ¡£

Nginx»¹¿ÉÒÔÅäºÏHLS(HTTPLiveStreaming)»òDASH(DynamicAdaptiveStreamingoverHTTP)µÈ?×Ô˳ӦÂëÂÊÁ÷ýÌåЭÒé £¬½«ÊÓÆµÇзֳÉС¶Î £¬²¢ÌìÉú²¥·ÅÁбí?¡£Nginx¿ÉÒÔ¸ßЧµØ·Ö·¢ÕâЩÊÓÆµÆ¬¶ÏºÍ²¥?·ÅÁбí £¬Ê¹²¥·ÅÆ÷Äܹ»Æ¾Ö¤Óû§µÄ?ÍøÂç״̬¶¯Ì¬µ÷½âÊÓÆµÂëÂÊ £¬ÌṩÁ÷ͨµÄԢĿÌåÑé £¬ÓÐÓýâ¾öÒòÍøÂ粨¶¯µ¼ÖµĿ¨¶ÙÎÊÌâ¡£

CDNÄÚÈÝ·Ö·¢ÍøÂ磺ÔÚ¹¹½¨CDNʱ £¬NginxÊÎÑÝ×ÅÖÁ¹ØÖ÷ÒªµÄ½ÇÉ«¡£CDNµÄ?½¹µãÔÚÓÚ½«ÄÚÈÝ·Ö·¢µ½ÀëÓû§×î½üµÄ±ßÑØ½Úµã £¬ÒÔËõ¶Ì»á¼ûÑÓ³Ù £¬Ìá¸ß»á¼ûËÙÂÊ¡£Nginx¿ÉÒÔ°²ÅÅÔÚ¸÷¸öCDN±ß??Ôµ½ÚµãÉÏ £¬×÷ΪÄÚÈÝ»º´æ·þÎñÆ÷ºÍÁ÷Á¿½ÓÈëµã¡£µ±Óû§ÇëÇóÊÓÆµÊ± £¬ÇëÇó»áÊ×Ïȵִï¾Í½üµÄCDN½Úµã £¬ÈôÊÇÄÚÈÝÒÑ»º´æ £¬Nginx»áÖ±½ÓÌṩ·þÎñ£»ÈôÊÇûÓлº´æ £¬Nginx»á»ØÔ´Õ¾»ñÈ¡ £¬²¢ÔÚÍâµØ»º´æ £¬¹©ºóÐøÓû§Ê¹Óá£

NginxµÄ¸ßÐÔÄܺ͵Í×ÊÔ´ÏûºÄ £¬Ê¹Æä³ÉΪ¹¹½¨´ó¹æÄ£¡¢¸ßЧÂÊCDNµÄÀíÏëÑ¡Ôñ £¬´Ó¶øÊµÏÖ¡°100%ÊÓÆµ¡±µÄ¿ìËÙ´¥´ï¡£

¶þ¡¢Ç¿Ê¢µÄ»º´æÕ½ÂÔ£º¼ÓËÙÊÓÆµ»á¼û

»º´æÊÇÌáÉýÊÓÆµ·þÎñÐÔÄܵÄ?Òªº¦ÊֶΡ£NginxÌṩÁ˶àÖÖǿʢµÄ»º´æ»úÖÆ£º

ä¯ÀÀÆ÷»º´æ£ºÍ¨¹ýÉèÖÃExpires»òCache-ControlÏìӦͷ £¬¿ÉÒÔÖ¸µ¼ä¯ÀÀÆ÷»º´æÊÓÆµÎļþ¡£µ±Óû§Ôٴλá¼ûͳһÊÓÆµÊ± £¬¿ÉÒÔÖ±½Ó´Óä¯ÀÀÆ÷»º´æ?¼ÓÔØ £¬ÎÞÐè´Ó·þÎñÖØÊÓÐÂÏÂÔØ £¬¼«´óµØ½ÚÔ¼ÁË´ø¿íºÍ¼ÓÔØÊ±¼ä¡£

Nginx×ÔÉí»º´æ£¨ProxyCache£©£ºNginx¿ÉÒÔÉèÖÃΪ½«ºó¶Ë·þÎñÆ÷µÄÏìÓ¦»º´æµ½ÍâµØ´ÅÅÌ¡£µ±Óû§ÔÙ´ÎÇëÇóÏàͬµÄ?ÊÓÆµÊ± £¬Nginx»áÖ±½Ó´Ó»º´æÖÐÌṩ·þÎñ £¬¶øÎÞÐèÇëÇóºó¶Ë·þÎñÆ÷¡£Õâ¹ØÓڵ㲥ÊÓÆµÓÈΪÓÐÓá£ÉèÖÃproxy_cache_pathÖ¸Áî½ç˵»º´æÄ¿Â¼ºÍ²ÎÊý £¬proxy_cacheÖ¸ÁîÆôÓûº´æ £¬proxy_cache_validÖ¸ÁîÉèÖòî±ðÀàÐÍÏìÓ¦µÄ»º´æÊ±¼ä¡£

ͨ¹ýºÏÀíµÄ?»º´æÕ½ÂÔ £¬¿ÉÒÔÏÔÖø½µµÍºó¶Ë·þÎñÆ÷µÄѹÁ¦ £¬ÌáÉýÏìÓ¦ËÙÂÊ¡£

CDN»º´æ£ºÈçǰËùÊö £¬½«Nginx×÷ΪCDN½Úµã £¬¿ÉÒÔʹÓÃCDNµÄÈ«ÇòÂþÑÜʽ»º´æÄÜÁ¦¡£CDN½Úµã»á½«ÊÓÆµÄÚÈÝ»º´æµ½ÀëÓû§×î½üµÄ·þÎñÆ÷ÉÏ £¬Óû§»á¼ûʱ´Ó×î½üµÄ?½Úµã»ñÈ¡ £¬ÊµÏÖ½üºõʵʱµÄ¼ÓÔØËÙÂÊ¡£

Nginx100%ÊÓÆµÓÅ»¯£º¶´Ï¤Á÷ýÌåʱ´ú?µÄÐÔÄÜÒýÇæ

ÔÚÐÅÏ¢±¬Õ¨µÄÊý×ÖÀ˳±ÖÐ £¬ÊÓÆµÄÚÈÝÒÑÈ»³ÉΪÏàͬ¡¢ÓéÀÖºÍѧϰµÄ½¹µãÔØÌå¡£ÎÞÂÛÊǸßÇåÓ°Ï·µÄ?µã²¥ £¬ÕÕ¾Éʵʱ¾«²ÊµÄÖ±²¥ £¬Óû§¶ÔÁ÷ͨ¡¢ÎÞ¿¨¶ÙµÄԢĿÌåÑéÓÐ׎üºõ¿Á¿ÌµÄÒªÇó¡£ÃæÁÙÈÕÒæÔöÌíµÄÊÓÆµÁ÷Á¿ºÍÓû§ÆÚÍû £¬·þÎñÆ÷µÄÐÔÄÜÆ¿¾±¡¢´ø?¿íµÄÏÞÖÆÒÔ¼°ÍøÂç´«ÊäµÄÑÓ³Ù £¬¾­³£ÈÃÓÅÃÀµÄ¹ÛӰ˲¼ä»¯ÎªÅÝÓ°¡£

´Ëʱ £¬Ò»¿îǿʢ¶øÎÞаµÄ·þÎñÆ÷Èí¼þ¾ÍÏÔµÃÓÈΪÖ÷Òª¡£Nginx £¬Õâ¸öÒÔ¸ßÐÔÄÜ¡¢¸ß²¢·¢Öø³ÆµÄ?Web·þÎñÆ÷ £¬ÔçÒѲ»µ«½öÊǾ²Ì¬ÎļþµÄ°áÔ˹¤ £¬Ëü¸üÊÇÁ÷ýÌåÁìÓòµÄÒþÐÎÍõÕß £¬Í¨¹ýһϵÁо«ÃîµÄÉèÖÃÓëÓÅ»¯ £¬Äܹ»½«ÊÓÆµ²¥·ÅµÄ?ÌåÑéÌáÉýÖÁب¹ÅδÓÐµÄ¸ß¶È £¬ÊµÏÖ¡°Nginx100%ÊÓÆµÓÅ»¯¡±µÄ×îÖÕÄ¿µÄ¡£

¶à·¸´ÓÃʹµÃ¿Í»§¶Ë¿ÉÒÔÔÚÒ»¸öTCPÅþÁ¬Éϲ¢ÐÐÇëÇó¶à¸öÊÓÆµ×ÊÔ´ £¬×èÖ¹Á˹ŰåHTTP/1.1ÖжàÅþÁ¬´øÀ´µÄ¿ªÏú£»Í·²¿Ñ¹ËõÔò´ó´óïÔÌ­ÁË´«ÊäµÄ´ø¿íÕ¼Óà £¬¹ØÓÚ°ü¹ÜÊÓÆµ²¥·ÅµÄÒ»Á¬ÐÔÖÁ¹ØÖ÷Òª¡£Ç°Õ°ÐԽṹ£ºHTTP/3µÄÎȹÌÖ§³Ö?£ºNginxÆð¾¢Óµ±§Î´À´ £¬¶Ô»ùÓÚQUICЭÒéµÄHTTP/3ÌṩÁËÎȹÌÇÒ¸ßЧµÄÖ§³Ö¡£

HTTP/3½â¾öÁËTCPÔÚÍøÂçÓµ¶ÂʱÈÝÒ×·ºÆðµÄ¡°¶ÓÍ·ÛÕ±Õ¡±ÎÊÌâ £¬×ÝÈ»ÔÚ¶ª°üÂʽϸߵÄ?ÍøÂçÇéÐÎÏ £¬Ò²Äܰü¹ÜÊÓÆµÁ÷µÄ´«Êä²»ÖÐÖ¹ £¬ÊµÏÖÕæÕýµÄ¡°100%²¥·Å¡±¡£QUICЭÒéµÄÒýÈë £¬Í¨¹ýUDP³ÐÔØ £¬ÊµÏÖÁ˸ü¿ìµÄÅþÁ¬½¨ÉèËÙÂʺ͸üÓŵÄÓµÈû¿ØÖÆ»úÖÆ £¬¹ØÓÚ×·Çó¼«ÖµÍÑÓ³ÙµÄÖ±²¥³¡¾° £¬ÒÔ¼°ÔÚÒÆ¶¯ÍøÂçÇéÐÎϲ¥·ÅÊÓÆµ £¬¶¼½«´øÀ´Ç㸲ÐÔµÄÌåÑéÌáÉý¡£

ÎÒÃÇ¿ÉÒÔÔ¤¼û £¬Ëæ×ÅHTTP/3µÄÆÕ¼° £¬Nginx½«½øÒ»²½Àο¿ÆäÔÚÁ÷ýÌå´«ÊäÁìÓòµÄÁìÏÈְλ¡£

tcp_nopushon;ʵÑéÔÚ·¢ËÍÏìӦͷÐÅÏ¢ºó £¬Ö»¹ÜÆÚ´ý¸ü¶àµÄÊý¾ÝÒ»Æð·¢ËÍ £¬ÒÔïÔÌ­´«ÊäµÄTCPÊý¾Ý°üÊýÄ¿ £¬Ìá¸ß´«ÊäЧÂÊ¡£tcp_nodelayon;½ûÓÃNagleËã·¨ £¬ÕâÒâζ×ÅNginx»á¾¡¿ÉÄÜ¿ìµØ·¢ËÍÿһ¸öTCPÊý¾Ý°ü £¬×èÖ¹ÁËÊý¾Ý°üµÄÀÛ»ýÆÚ´ý £¬¹ØÓÚʵʱÐÔÒªÇó½Ï¸ßµÄÖ±²¥Èö²¥ÊäºÜÊÇÓÐÒæ¡£

keepalive_timeout£º³¤ÅþÁ¬¿ÉÒÔïÔÌ­¿Í»§¶ËÓë·þÎñÆ÷½¨ÉèÐÂÅþÁ¬µÄ¿ªÏú¡£Êʵ±ÉèÖÃkeepalive_timeout £¬ÔÊÐí¿Í»§¶ËÔÚһ׼ʱ¼äÄÚ¼á³ÖÅþÁ¬ £¬Õâ¹ØÓÚÐèÒªÒ»Á¬´«ÊäÊý¾ÝµÄÊÓÆµÁ÷ýÌåÓÈÆäÖ÷Òª¡£µ«Ò²Òª×¢ÖØ £¬¹ý³¤µÄkeepalive_timeout¿ÉÄÜ»áÕ¼Óùý¶àµÄ·þÎñÆ÷×ÊÔ´ £¬ÐèҪƾ֤ÏÖÕæÏàÐξÙÐÐȨºâ¡£

Îļþ¾ä±úÏÞÖÆ£ºNginx×÷Ϊһ¸ö¸ßÐÔÄܵķþÎñÆ÷ £¬ÐèÒª´¦Öóͷ£´ó×ڵIJ¢·¢ÅþÁ¬ £¬Ã¿¸öÅþÁ¬¶¼ÐèÒªÒ»¸öÎļþ¾ä±ú¡£Òò´Ë £¬Îñ±ØÔÚ²Ù×÷ϵͳ²ãÃæÌá¸ßÎļþ¾ä±úµÄÏÞÖÆ¡£¿ÉÒÔͨ¹ýÐÞ¸Ä/etc/security/limits.confÎļþÀ´ÉèÖÃnofileµÄ×î´óÖµ £¬È·±£NginxÄܹ»·­¿ª×ã¹»¶àµÄÎļþ¾ä±ú¡£

ÓÅ»¯Óëµ÷ÓÅ£ºÍÚ¾òNginxÊÓÆµÐÔÄܵÄDZÁ¦

ÒªÕæÕýʵÏÖ¡°Nginx100ÊÓÆµ¡±µÄ¼«ÖÂÐÔÄÜ £¬Ï¸ÄåµÄÉèÖÃÓÅ»¯ÊDZز»¿ÉÉٵġ£Õâ°üÀ¨£º

µ÷½âWorkerÀú³ÌºÍÅþÁ¬Êý£ºÆ¾Ö¤·þÎñÆ÷µÄCPU½¹µãÊýºÍÄÚ´æ¾Þϸ £¬ºÏÀíÉèÖÃworker_processesºÍworker_connections £¬ÒÔ×î´ó»¯²¢·¢´¦Öóͷ£ÄÜÁ¦¡£TCP/IP²ÎÊýÓÅ»¯£ºµ÷½âLinuxÄں˵Ä?TCP/IPÏà¹Ø²ÎÊý £¬Èçnet.core.somaxconn¡¢net.ipv4.tcp_tw_reuseµÈ £¬ÒÔÌá¸ßÍøÂçÍÌÍÂÁ¿ºÍÅþÁ¬Ð§ÂÊ¡£

ÆôÓÃKeep-alive£ººÏÀíÉèÖÃkeepalive_timeoutºÍkeepalive_requests £¬¼á³Ö³¤ÅþÁ¬ £¬ïÔÌ­½¨ÉèÐÂÅþÁ¬µÄ¿ªÏú £¬¹ØÓÚÊÓÆµÈö²¥ÊäÓÈΪÖ÷Òª¡£»º³åÇøÓÅ»¯£ºµ÷½âNginxµÄclient_body_buffer_size¡¢output_buffersµÈ²Î?Êý £¬ÓÅ»¯Êý¾Ý¶Áд»º³åÇø £¬ÌáÉý´¦Öóͷ£Ð§ÂÊ¡£

ÆôÓÃHTTP/2»òHTTP/3£ºÈ·±£?NginxÉèÖÃÖ§³Ö×îеÄ?HTTPЭÒé £¬ÒÔ»ñµÃ¸üºÃµÄ´«ÊäÐÔÄÜ¡£

ͨ¹ý¶ÔÕâЩ²ÎÊýµÄÈ«Ðĵ÷ÓÅ £¬NginxµÄÐÔÄÜ¿ÉÒÔ»ñµÃ?ÏÔÖøÌáÉý £¬´Ó?¶ø¸ü¿¿½ü¡°Nginx100ÊÓÆµ¡±Ëù´ú±íµÄǿʢ´¦Öóͷ£ÄÜÁ¦¡£

Èý¡¢¸ßЧ¸ºÔØÆ½ºâ£ºÊèɢѹÁ¦ £¬Æ½ºâ·þÎñ

µ±?ÊÓÆµÁ÷Á¿¼¤Ôöʱ £¬¼òµ¥·þÎñÆ÷ÄÑÒÔÔâÊÜ¡£NginxµÄ¸ºÔØÆ½ºâ¹¦Ð§Äܹ»½«Á÷Á¿·Ö·¢µ½¶ą̀ºó¶Ë·þÎñÆ÷ £¬Ìá¸ßϵͳµÄ¿ÉÓÃÐÔºÍÍÌÍÂÁ¿¡£

upstreamÄ£¿é£ºnginxupstreamvideo_servers{server192.168.1.10:8080;server192.168.1.11:8080;server192.168.1.12:8080backup;#±¸?·Ý·þÎñÆ÷}¸ºÔØÆ½ºâËã·¨£ºNginxÖ§³Ö¶àÖÖ¸ºÔØÆ½ºâËã·¨ £¬ÈçÂÖѯ(roundrobin £¬Ä¬ÈÏ)¡¢¼ÓȨÂÖѯ(weightedroundrobin)¡¢IP¹þÏ£(ip_hash)µÈ¡£

¹ØÓÚÊÓÆµ·þÎñ £¬Í¨³£Ñ¡ÔñÂÖѯ»ò¼ÓȨÂÖѯ £¬Æ¾Ö¤·þÎñÆ÷µÄÏÖʵ´¦Öóͷ£ÄÜÁ¦¾ÙÐзÖÅÉ¡£¿µ½¡¼ì²é£ºNginx¿ÉÒÔͨ¹ýhealth_check(µÚÈý·½Ä£¿é)»òÆäËû·½·¨ÊµÏÖ¶Ôºó¶Ë·þÎñÆ÷µÄ¿µ½¡¼ì²é £¬µ±Ä³¸ö·þÎñÆ÷·ºÆð¹ÊÕÏʱ £¬×Ô¶¯½«Æä´Ó¸ºÔØÆ½ºâ³ØÖÐÒÆ³ý £¬È·±£·þÎñµÄ¿ÉÓÃÐÔ¡£

ËÄ¡¢¼à¿ØÓëµ÷ÓÅ£ºÒ»Á¬ÓÅ»¯ £¬°ü¹Ü·þÎñÎȹÌ

ʵÏÖ100%µÄÊÓÆµÐÔÄܲ¢·ÇÒ»ÀÍÓÀÒÝ £¬Ò»Á¬µÄ¼à¿ØºÍµ÷ÓÅÊDZز»¿ÉÉٵġ£

ÈÕÖ¾ÆÊÎö£ºNginxµÄ»á¼ûÈÕÖ¾ºÍ¹ýʧÈÕÖ¾ÊÇÅÅÅÌÎÊÌâµÄÃû¹óÐÅÏ¢¡£Í¨Ì«¹ýÎöÈÕÖ¾ £¬¿ÉÒÔ·¢Ã÷¸ßÑÓ³ÙµÄÇëÇ󡢯µÈÔ·ºÆðµÄ¹ýʧ £¬ÒÔ¼°Á÷Á¿Æ¿¾±¡£ÐÔÄÜ¼à¿Ø¹¤¾ß£ºÊ¹ÓÃnetdata¡¢Prometheus¡¢GrafanaµÈ¼à¿Ø¹¤¾ß £¬ÊµÊ±¼à²âNginxµÄCPU¡¢ÄÚ´æ¡¢ÍøÂçÁ÷Á¿¡¢ÅþÁ¬Êý¡¢ÇëÇóÏìӦʱ¼äµÈÒªº¦Ö¸±ê¡£

ѹÁ¦²âÊÔ£º°´ÆÚ¾ÙÐÐѹÁ¦²âÊÔ £¬Ä£ÄâÕæÊµµÄÓû§¸ºÔØ £¬ÕÒ³öNginxµÄÐÔÄܼ«ÏÞ £¬²¢Æ¾Ö¤²âÊÔЧ¹û¾ÙÐÐÏìÓ¦µÄÉèÖõ÷½â¡£ÂýÈÕÖ¾ÆÊÎö£ºNginxÌṩÁËÂýÈÕÖ¾¹¦Ð§ £¬¿ÉÒԼͼÏìӦʱ¼äÁè¼ÝÉ趨µÄãÐÖµµÄÇëÇó £¬×ÊÖú¶¨Î»»ºÂýµÄÇëÇóÔ´Í·¡£

Nginx×÷ΪCDN±ß??Ôµ½Úµã£º

°²ÅÅNginx±ßÑØ½Úµã£ºÔÚijЩÇéÐÎÏ £¬Ò²¿ÉÒÔ½«NginxÖ±½Ó°²ÅÅÔÚCDNµÄ±ßÑØ½ÚµãÉÏ £¬ÈÏÕæ»º´æºÍ·Ö·¢ÊÓÆµÄÚÈÝ¡£ÕâÖÖ·½·¨Äܹ»½øÒ»²½Ëõ¶ÌÓû§»á¼û·¾¶ £¬½µµÍÑÓ³Ù¡£ÉèÖÃlocation¿é£ºÕë¶ÔÊÓÆµÎļþ£¨Èç.mp4,.ts,.m3u8µÈ£©µÄlocation¿é £¬ÐèÒª¾ÙÐÐÏ꾡µÄÉèÖà £¬°üÀ¨»º´æ¹æÔò¡¢ÓâÆÚʱ¼ä¡¢ÒÔ¼°ÐëÒªµÄ»á¼û¿ØÖÆ¡£

HTTPSµÄÓÅ»¯£ºËæ×ÅÍøÂçÇå¾²ÒâʶµÄÌáÉý £¬HTTPSÒѾ­³ÉΪ±êÅä¡£ËäÈ»HTTPS»á´øÀ´Ò»¶¨µÄÐÔÄÜ¿ªÏú £¬µ«NginxÌṩÁ˶àÖÖÓÅ»¯ÊֶΣº

SSLSessionRe-use£º¿ªÆôssl_session_cacheºÍssl_session_timeout £¬ÔÊÐí¿Í»§¶ËÖØÓÃ֮ǰµÄSSL»á»° £¬ïÔÌ­ÎÕÊÖ¿ªÏú¡£TLSv1.3ÓÅ»¯£ºÓÅÏÈʹÓÃTLSv1.3ЭÒé £¬¸ÃЭÒéÔÚÎÕÊÖËÙÂʺÍÇå¾²ÐÔÉ϶¼ÓÐÏÔÖøÌáÉý¡£

HTTP/2/HTTP/3£ºÅäºÏHTTP/2»òHTTP/3ЭÒé £¬¿ÉÒÔʵÏÖ¶à·¸´Óá¢Í·²¿Ñ¹ËõµÈÌØÕ÷ £¬½øÒ»²½?ÌáÉý´«ÊäЧÂÊ¡£

½áÓNginx £¬¸³ÄÜÎÞÏÞ¿ÉÄÜ

ʵÏÖNginxµÄ¡°100%ÊÓÆµÐÔÄÜ¡±ÊÇÒ»¸öϵͳ¹¤³Ì £¬ËüÒªÇóÎÒÃÇÉîÈëÃ÷È·NginxµÄ?ÊÂÇéÔ­Àí £¬ÊìÁ·ÕÆÎÕÖÖÖÖÉèÖÃÖ¸Áî £¬²¢?ÍŽáÏêϸµÄÓªÒµ³¡¾°¾ÙÐÐϸÄ廯µ÷ÓÅ¡£´ÓRTMPÖ±²¥µ½HTTPµã²¥? £¬´Ó»ù´¡µÄÉèÖõ½¸ß¼¶µÄ»º´æÕ½ÂԺ͸ºÔØÆ½ºâ £¬Nginx¶¼Õ¹ÏÖ³öÁËÆäǿʢµÄ˳ӦÐÔºÍ׿ԽµÄÐÔÄÜ¡£

ͨ¹ýÒ»Ö±µØÊµ¼ùºÍ̽Ë÷ £¬Äú½«Äܹ»³ä·ÖÊÍ·ÅNginxµÄDZÁ¦ £¬ÎªÄúµÄÓû§Ìṩ¼«ÖÂÁ÷ͨ?µÄÊÓÆµÌåÑé £¬ÔÚÇ¿ÁÒµÄÁ÷ýÌåÊг¡ÖÐÍÑÓ±¶ø³ö¡£Nginx²»µ«½öÊÇÒ»¸öWeb·þÎñÆ÷ £¬Ëü¸üÊÇÄú¹¹½¨¸ßÐÔÄÜÊÓÆµÆ½Ì¨µÄǿʢ?»ùʯ £¬¸³ÄÜÄúµÄÁ÷ýÌåÓªÒµ £¬×ßÏòÎÞÏÞ¿ÉÄÜ¡£

2.3¶¯Ì¬ÄÚÈݼÓËÙÓëתÂëÓÅ»¯£¨ÍŽáµÚÈý·½Ä£¿é»ò·þÎñ£©ËäÈ»NginxÖ÷񻃮ÓÚ¾²Ì¬ÄÚÈÝ·Ö·¢ £¬µ«Í¨¹ý¼¯³ÉµÚÈý·½Ä£¿é»òÓëרҵµÄתÂë·þÎñÅäºÏ £¬NginxÒ²ÄÜÔÚ¶¯Ì¬ÄÚÈݵÄÌìÉúºÍ¼ÓËÙ·½ÃæÊ©Õ¹×÷Óá£

Lua¾ç±¾¼¯³É(ngx_lua):ʹÓÃngx_luaÄ£¿é £¬¿ÉÒÔÔÚNginxÄÚ²¿Ö´ÐÐLua¾ç±¾ £¬ÊµÏÖ¸üÖØ´óµÄÓªÒµÂß¼­ £¬ÀýÈ綯̬ÌìÉú²¥·ÅÁÐ±í¡¢¾ÙÐÐʵʱµÄÊý¾Ýͳ¼ÆºÍÆÊÎö £¬ÉõÖÁ¿ÉÒÔ¼¯³ÉһЩ¼òÆÓµÄתÂëÂß¼­¡£ÓëתÂë·þÎñ¼¯³É:Nginx¿ÉÒÔ×÷Ϊǰ¶Ë´úÀí £¬½«Óû§µÄתÂëÇëÇóת·¢¸øºó¶ËµÄתÂ뼯Ⱥ¡£

µ±×ªÂëÍê³Éºó £¬NginxÔÙ½«×ªÂëºóµÄ?ÊÓÆµÎļþ¸ßЧµØ·Ö·¢¸øÓû§¡£ÕâÖÖ·½·¨½«NginxµÄ¸ßÐÔÄÜI/OÄÜÁ¦ÓëרҵתÂë·þÎñµÄÅÌËãÄÜÁ¦ÍŽáÆðÀ´ £¬ÊµÏÖÁË×îÓÅ»¯µÄÊÓÆµ´¦Öóͷ£Á÷³Ì¡£video_streaming_module(µÚÈý·½):һЩµÚÈý·½NginxÄ£¿é £¬Èçngx_http_vhost_traffic_status_module¿ÉÒÔÌṩÁ÷Á¿¼à¿Ø £¬¶øngx_http_flv_module»ò¸üרҵµÄÁ÷ýÌåÄ£¿é £¬Ôò¿ÉÒÔÎªÌØ¶¨³¡¾°Ìṩ¸üµ×²ãµÄÖ§³Ö¡£

Nginx£ºÊÓÆµÐÔÄܵĻùʯ

NginxµÄ½¹µãÓÅÊÆÔÚÓÚÆäÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄÍøÂçÄ£×Ó¡£Óë¹Å°åµÄÛÕ±ÕʽI/OÄ£×Ó²î±ð £¬NginxÄܹ»ÔÚÒ»¸ö»òÉÙÊý¼¸¸öÀú³ÌÖд¦Öóͷ£³ÉǧÉÏÍòµÄ²¢·¢ÅþÁ¬ £¬¶øÎÞÐèÏûºÄ´ó×ÚµÄϵͳ×ÊÔ´¡£Õâ¹ØÓÚÐèÒª´¦Öóͷ£´ó×Ú²¢·¢ÊÓÆµÁ÷µÄ³¡¾°À´Ëµ £¬ÎÞÒÉÊÇÖØ´óµÄÓÅÊÆ¡£

¸ßЧµÄÅþÁ¬ÊÜÀí£ºNginx½ÓÄÉepoll(Linux)»òkqueue(FreeBSD)µÈ¸ßÐÔÄÜI/O¶à·¸´ÓûúÖÆ £¬Äܹ»¸ßЧµØ¼àÌýºÍ´¦Öóͷ£³ÉǧÉÏÍò¸ö¿Í»§¶ËÅþÁ¬¡£ÕâÒâζ×Å £¬×ÝÈ»ÔÚÓû§á¯ÁëÆÚ £¬NginxÒ²ÄÜÓÎÈÐÓÐÓàµØ´¦Öóͷ£À´×ÔÈ«Çò¸÷µØÓû§µÄÊÓÆµÇëÇó £¬È·±£ÊÓÆµµÄ˳³©²¥·Å¡£

ÄÚ´æÏûºÄµÍ£ºNginxµÄ?ÄÚ´æÕ¼ÓÃÏà¶Ô½ÏµÍ £¬Äܹ»ÒÔ¸üÉÙµÄÓ²¼þ×ÊÔ´³ÐÔØ¸ü¸ßµÄ²¢·¢Á¿ £¬Õâ¹ØÓÚ±¾Ç®¿ØÖƺÍ×ÊÔ´ÓÅ»¯ÖÁ¹ØÖ÷Òª¡£×¿Ô½µÄ¾²Ì¬Îļþ´¦Öóͷ£ÄÜÁ¦£ºÊÓÆµÎļþͨ³£ÊǾ²Ì¬×ÊÔ´¡£NginxÔÚ¾²Ì¬ÎļþµÄ¸ßËÙ»º´æºÍ´«Êä·½ÃæÌåÏÖ¾«²Ê £¬Äܹ»Ö±½Ó´Ó´ÅÅ̶ÁÈ¡Êý¾Ý²¢¿ìËÙ·¢Ë͸ø¿Í»§¶Ë £¬¼«´óµØÌáÉýÁËÊÓÆµµÄ¼ÓÔØËÙÂÊ¡£

¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦£ºÊÓÆµÁ÷µÄ´«Êäͨ³£Éæ¼°´ó×ÚµÄÅþÁ¬ £¬NginxÄܹ»ÇáËÉÓ¦¶ÔÊýÒÔÍò¼ÆÉõÖÁÊýÊ®Íò¼ÆµÄ²¢·¢ÅþÁ¬ £¬°ü¹Üÿ¸öÓû§¶¼ÄÜ»ñµÃÎȹÌÁ÷ͨµÄ²¥·Å·þÎñ¡£¸ßЧµÄ?¾²Ì¬Îļþ·þÎñ£ºÊÓÆµÎļþ×Ô¼º¾ÍÊǾ²Ì¬×ÊÔ´ £¬NginxÔÚ¾²Ì¬Îļþ·þÎñ·½ÃæÓµÓÐÎÞ¿ÉÏà±ÈµÄÓÅÊÆ £¬ÆäÓÅ»¯µÄÎļþI/OºÍÄÚ´æ¹ÜÀí £¬Äܹ»ÒÔ×î¿ìµÄËÙÂʽ«ÊÓÆµÊý¾ÝÍÆË͸ø¿Í»§¶Ë¡£

ÎÞаµÄÄ£¿é»¯Éè¼Æ£ºNginxÓµÓи»ºñµÄÄ£¿é £¬¿ÉÒÔÆ¾Ö¤ÏÖʵÐèÇó¾ÙÐмÓÔØºÍÉèÖà £¬ÀýÈçngx_http_flv_module¡¢ngx_http_mp4_moduleµÈ £¬ÕâЩÄ£¿éרÃÅÕë¶ÔÊÓÆµÁ÷µÄ´«Êä¾ÙÐÐÁËÓÅ»¯¡£·´Ïò´úÀíÓë¸ºÔØÆ½ºâ£ºÍŽáCDN£¨ÄÚÈÝ·Ö·¢ÍøÂ磩»òÄÚ²¿¸ºÔØÆ½ºâ £¬Nginx¿ÉÒÔ½«ÊÓÆµÇëÇó·Ö·¢µ½¶ą̀·þÎñÆ÷ £¬ÊèɢѹÁ¦ £¬Ìá¸ßÕûÌåµÄ?¿ÉÓÃÐÔºÍÐÔÄÜ¡£

×ܽᣨpart1£©£º

NginxÔÚÊÓÆµÓÅ»¯·½ÃæÓµÓеÃÌì¶ÀºñµÄÓÅÊÆ¡£´ÓÊÂÎñÇý¶¯µÄ¼Ü¹¹µ½¸»ºñµÄÄ£¿éÖ§³Ö £¬ÔÙµ½Ï¸Ä廯µÄÉèÖÃÑ¡Ïî £¬ËüΪÎÒÃÇÌṩÁËǿʢµÄ?¹¤¾ßÏ䡣ͨ¹ý¶Ô»ù´¡ÉèÖõÄÓÅ»¯¡¢Õë¶ÔÊÓÆµÃûÌõÄÊÊÅä £¬ÒÔ¼°¸ßЧµÄ»º´æÕ½ÂÔ £¬ÎÒÃÇ¿ÉÒÔΪÓû§¹¹½¨ÆðÒ»¸öÁ÷ͨ¡¢Îȹ̵ÄÊÓÆµ²¥·ÅÇéÐΡ£

Õâ½ö½öÊÇ×îÏÈ¡£ÔÚÏÂÒ»²¿·Ö £¬ÎÒÃǽ«ÉîÈë̽ÌÖ¸ü½ø½×µÄÓÅ»¯¼¼ÇÉ £¬°üÀ¨CDN¼¯³É?¡¢Á÷ýÌåЭÒéµÄ×î¼Ñʵ¼ù £¬ÒÔ¼°ÐÔÄÜ¼à¿ØÓëµ÷ÓÅ £¬½øÒ»²½½«NginxµÄÊÓÆµÓÅ»¯ÍÆÏòеĸ߶È¡£

NginxǿʢµÄ»º´æ»úÖÆÊÇʵÏÖÊÓÆµÓÅ»¯µÄÒªº¦Ö®Ò»¡£Í¨¹ýÉèÖÃNginxµÄproxy_cache»òfastcgi_cacheµÈÄ£¿é £¬ÎÒÃÇ¿ÉÒÔ½«Óû§ÇëÇó¹ýµÄÊÓÆµÎļþ»º±£´æ·þÎñÆ÷ÍâµØ»òCDN±ßÑØ½Úµã¡£µ±ÆäËûÓû§ÔÙ´ÎÇëÇóͳһÊÓÆµÊ± £¬Nginx¿ÉÒÔÖ±½Ó´Ó»º´æÖжÁÈ¡Êý¾Ý²¢·µ»Ø £¬ÎÞÐèÔÙ´ÎÏòÔ´·þÎñÆ÷ÌᳫÇëÇó £¬´ó´óËõ¶ÌÁËÏìӦʱ¼ä £¬¼õÇáÁËÔ´·þÎñÆ÷µÄѹÁ¦¡£

¸üÖ÷ÒªµÄÊÇ £¬NginxµÄ?»º´æ¿ÉÒÔÉèÖÃΪÖÇÄÜ»º´æ £¬ÀýÈçÆ¾Ö¤ÇëÇóÍ·ÐÅÏ¢£¨ÈçIf-Modified-Since£©À´ÅжÏ×ÊÔ´ÊÇ·ñÒѸüР£¬×èÖ¹»º´æÓâÆÚʧЧ £¬Í¬Ê±Ò²ÄÜÓÐÓÃʹÓûº´æ¿Õ¼ä¡£¹ØÓÚÊÓÆµÕâÖÖÌåÁ¿´ó¡¢¸üÐÂÆµÂÊÏà¶Ô½ÏµÍµÄÄÚÈÝ £¬»º´æ?µÄ?×÷ÓÃÓÈΪÏÔÖø¡£

ÔÙÕß £¬Nginx¶ÔHTTP/2ºÍHTTP/3ЭÒéµÄÓÅÒìÖ§³Ö £¬ÎªÊÓÆµ´«Êä´øÀ´Á˸ïÃüÐÔµÄÌáÉý¡£HTTP/2ÒýÈëÁ˶à·¸´Óã¨Multiplexing£©ÊÖÒÕ £¬ÔÊÐí¿Í»§¶Ëͨ¹ýµ¥¸öTCPÅþÁ¬²¢Ðз¢ËͶà¸öÇëÇó £¬²¢ÔÚ·þÎñÆ÷¶Ë²¢Ðд¦Öóͷ£ £¬È»ºóÔÚͳһ¸öÅþÁ¬ÉÏÒÔÂÒÐòµÄ·½·¨·µ»ØÏìÓ¦¡£

½áÂÛ£ºNginx £¬¸³ÄÜÎÞÏÞÁ÷ͨµÄÊÓÆµÌåÑé

ͨ¹ýÉîÈëÆÊÎöNginxÔÚ¾²Ì¬Îļþ·þÎñ¡¢HTTP/2ЭÒéÖ§³Ö¡¢TCPBBRÓÅ»¯¡¢HLS/DASHЭÒé´¦Öóͷ£¡¢CDN¹¹½¨¡¢ÖÇÄÜÁ÷Á¿µ÷Àí¡¢Çå¾²·À»¤ÒÔ¼°Ò»Á¬¼à¿ØµÈ·½ÃæµÄǿʢÄÜÁ¦ £¬ÎÒÃÇ¿ÉÒÔÇåÎúµØ¿´µ½NginxÔõÑù³ÉΪʵÏÖ¡°100%ÊÓÆµÓÅ»¯¡±µÄÒªº¦ÀûÆ÷¡£

NginxÒÀ¸½Æä¸ßÐÔÄÜ¡¢¸ß²¢·¢´¦?ÀíÄÜÁ¦¡¢ÎÞаµÄÉèÖÃÒÔ¼°¸»ºñµÄÉú̬ϵͳ £¬Äܹ»ÓÐÓõؽâ¾öÊÓÆµÁ÷ýÌå·þÎñÖеÄÖÖÖÖÍ´µã £¬´Ó»ù´¡ÉÏÌáÉýÓû§Ô¢Ä¿ÌåÑé¡£Ëü²»µ«½öÊÇÒ»¸ö·þÎñÆ÷ £¬¸üÊǹ¹½¨Ò»¸öǿʢ¡¢Îȹ̡¢µÍÑÓ³ÙÊÓÆµÁ÷ýÌåÆ½Ì¨µÄ¼áʵ»ùʯ¡£Óµ±§Nginx £¬½âËøÆäÊÓÆµÓÅ»¯Ç±Á¦ £¬Ä㽫ÄÜΪÓû§´øÀ´Ø¨¹ÅδÓеÄÁ÷ͨÊÓÌýÏíÊÜ £¬ÔÚÕâ¸ö¾ºÕùÇ¿ÁÒµÄÊÓÆµÊ±´úÍÑÓ±¶ø³ö £¬µãȼÓû§µÄԢĿÈÈÇé £¬Ó®µÃÊг¡µÄÇàíù¡£

¶þ¡¢NginxÔÚÊÓÆµÁ÷ýÌåÖеĽ¹µãÓ¦Óó¡¾°

NginxµÄǿʢ¹¦Ð§Ê¹ÆäÔÚÊÓÆµÁ÷ýÌåµÄ¸÷¸ö»·½Ú¶¼ÄÜʩչҪº¦×÷Óá£

µã²¥ÊÓÆµ·þÎñ£º¹ØÓÚÓû§ËæÊ±¿ÉÒÔԢĿµÄÊÓÆµÄÚÈÝ £¬Nginx¿ÉÒÔÖ±½Ó×÷Ϊ¸ßÐÔÄܵÄÎļþ·þÎñÆ÷¡£Í¨Ï꾡Ä廯µÄÉèÖà £¬ÈçsendfileÖ¸ÁîµÄ?¿ªÆô¡¢»º´æÕ½ÂÔµÄÓÅ»¯ £¬NginxÄܹ»ÒÔ¼«¿ìµÄËÙÂʽ«ÊÓÆµÎļþ´«Ê䏸Óû§ £¬´ó·ùËõ¶ÌÊÓÆµ¼ÓÔØÊ±¼ä £¬ÌáÉýÓû§Öª×ã¶È¡£

ÅäºÏCDN£¨ÄÚÈÝ·Ö·¢ÍøÂ磩µÄ°²ÅÅ £¬NginxÄܹ»½«ÊÓÆµÄÚÈÝ»º´æµ½ÀëÓû§×î½üµÄ½Úµã £¬ÊµÏÖÈ«Çò¹æÄ£ÄÚµÄÃë¼¶¼ÓÔØ¡£

Ö±²¥·þÎñ£ºÖ±²¥µÄ½¹µãÔÚÓÚʵʱÐÔÓëÎȹÌÐÔ¡£Nginx¿ÉÒÔͨ¹ýRTMPÄ£¿é£¨Èçnginx-rtmp-module£©À´ÎüÊպͷַ¢Ö±²¥Á÷¡£ËüÄܹ»×÷ΪRTMP·þÎñÆ÷ £¬½«Ö÷²¥ÍÆË͵½Æ½Ì¨µÄ?Ö±²¥Á÷¾ÙÐд¦Öóͷ£ £¬²¢½«Æä·Ö·¢¸ø³ÉǧÉÏÍòµÄԢĿÕß¡£NginxµÄ¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦ÔÚÕâÀï»ñµÃ³ä·ÖÌåÏÖ £¬Äܹ»ÇáËÉÓ¦¶Ô´ó¹æÄ£Ö±²¥Ô˶¯µÄ¹ÛÖÚÓ¿Èë¡£

Nginx»¹¿ÉÒÔÅäºÏHLS£¨HTTPLiveStreaming£©»òDASH£¨DynamicAdaptiveStreamingoverHTTP£©Ð­Òé £¬½«Ö±²¥Á÷ת»»Îª±ê×¼µÄHTTPÁ÷ £¬Àû±ãÓû§ÔÚÖÖÖÖ×°±¸?ÉÏͨ¹ýä¯ÀÀÆ÷Ö±½ÓԢĿ £¬ÎÞÐè×°ÖÃÌØÁíÍâ²¥·ÅÆ÷²å?¼þ¡£

¶þ¡¢»ù´¡ÉèÖÃÓÅ»¯£ºÎªÊÓÆµÁ÷µÓÚ¨¼áʵ»ù´¡

ÓÅ»¯ÊÓÆµ²¥·Å £¬²¢·ÇÒ»õí¶ø¾Í £¬¶øÊÇÒ»¸öÑ­Ðò½¥½øµÄÀú³Ì¡£ÎÒÃÇÏÈ´ÓNginxµÄ»ù´¡ÉèÖÃÈëÊÖ £¬´òºÃ¼áʵµÄ»ù´¡¡£

ÆôÓÃKeep-Alive£º¼á³Ö¿Í»§¶ËÓë·þÎñÆ÷Ö®¼äµÄ³¤ÅþÁ¬ £¬¿ÉÒÔÏÔÖøïÔ̭ÿ´ÎÇëÇóµÄ?½¨ÉèºÍ¹Ø±ÕTCPÅþÁ¬µÄ¿ªÏú £¬¹ØÓÚ³Ö?ÐøµÄ?ÊÓÆµÈö²¥ÊäÖÁ¹ØÖ÷Òª¡£ÔÚhttp¿éÖÐÉèÖÃkeepalive_timeout60;(¿ÉÒÔÆ¾Ö¤ÏÖÕæÏàÐε÷½âÊýÖµ) £¬²¢È·±£¿Í»§¶ËÒ²Ö§³ÖKeep-Alive¡£

µ÷½âWorkerÀú³ÌºÍÅþÁ¬Êý£ººÏÀíÉèÖÃworker_processesºÍworker_connectionsÊÇʩչNginxÐÔÄܵÄÒªº¦¡£

worker_processes£º½¨ÒéÉèÖÃΪCPU½¹µãÊý £¬»òÕßÂÔ¸ßÓÚCPU½¹µãÊý £¬ÒÔ³ä·ÖʹÓöàºË´¦Öóͷ£Æ÷µÄÓÅÊÆ¡£worker_connections£º¸ÃÖµ¾öÒéÁËÿ¸öworkerÀú³Ì¿ÉÒÔͬʱ´¦Öóͷ£µÄ×î´óÅþÁ¬Êý¡£ÐèҪƾ֤·þÎñÆ÷µÄÄÚ´æºÍÏÖʵ²¢·¢ÐèÇóÀ´É趨 £¬Í¨³£ÉèΪһ¸ö½Ï´óµÄÖµ £¬ÀýÈç4096»ò8192¡£

CDN¼¯³É£º½«ÄÚÈÝÍÆË͵½ÀëÓû§×î½üµÄµØ·½

ҪʵÏÖ¡°100%¡±µÄÊÓÆµÐÔÄÜ £¬Àë²»¿ªÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©µÄЭ×÷¡£Nginx×÷ΪCDN±ß??Ôµ½ÚµãµÄ½¹µã×é¼þ £¬ÊÎÑÝ×ÅÖÁ¹ØÖ÷ÒªµÄ½ÇÉ«¡£

CDNµÄ½¹µãÍ·ÄÔÊǽ«Ô´Õ¾µÄÄÚÈݸ´ÖƵ½È«Çò¸÷µØ?µÄ¶à¸ö·þÎñÆ÷ÉÏ £¬µ±Óû§ÇëÇóÊÓÆµÊ± £¬CDN»á½«ÇëÇóµ¼ÏòÀëÓû§×î½üµÄ±ßÑØ½Úµã¡£NginxÔÚÕâЩ±ßÑØ½ÚµãÉÏ £¬Í¨¹ýÇ°ÃæÌáµ½µÄ»º´æ»úÖÆ £¬Äܹ»¿ìËÙµØÏòÓû§ÌṩÊÓÆµ¡£

¼õÇáԴվѹÁ¦£º´ó²¿·ÖÁ÷Á¿ÓɱßÑØ½Úµã¼ç¸º £¬Ô´Õ¾Ö»ÐèÈÏÕæÄÚÈݵĸüкÍÉÙÁ¿Î´ÖÀÖлº´æµÄÇëÇó¡£½µµÍÑÓ³Ù£ºÓû§»á¼û×î½üµÄ½Úµã £¬´ó´óËõ¶ÌÁËÍøÂç´«Êä¾àÀë £¬ÏÔÖø½µµÍÁËÊÓÆµ¼ÓÔØºÍ²¥·ÅµÄÑÓ³Ù?¡£Ìá¸ß¿ÉÓÃÐÔ£º×ÝȻij¸ö±ßÑØ½Úµã·ºÆð¹ÊÕÏ £¬Óû§µÄÇëÇóÒ²¿ÉÒÔ±»µ¼ÏòÆäËû¿ÉÓýڵã £¬È·±£·þÎñµÄ?Ò»Á¬ÐÔ¡£

ÔÚCDN¼Ü¹¹ÖÐ £¬Nginxͨ³£×÷Ϊ·´Ïò´úÀí°²ÅÅÔÚ±ßÑØ½Úµã £¬ÎüÊÕÀ´×ÔÓû§µÄÇëÇó £¬È»ºóƾ֤»º´æÕ½ÂÔ¾ÙÐд¦Öóͷ£¡£ÈôÊÇ»º´æÖÀÖÐ £¬ÔòÖ±½ÓÏìÓ¦£»ÈôÊÇ»º´æÎ´ÖÀÖÐ £¬Ôò½«ÇëÇóת·¢¸øÉÏÒ»¼¶µÄ»º´æ·þÎñÆ÷»òÔ´Õ¾ £¬²¢½«»ñÈ¡µ½µÄÄÚÈÝ»º´æ?ÆðÀ´ £¬ÒÔ±¸ºóÐøÊ¹Óá£

ÈÕÖ¾ÉèÖÃÓÅ»¯£ºïÔÌ­I/OÏûºÄ

ÏêϸµÄ»á¼ûÈÕÖ¾¹ØÓÚ¼à¿ØºÍ¹ÊÕÏÅŲéºÜÊÇÖ÷Òª £¬µ«¹ý¶àµÄÈÕÖ¾¼Í¼»áÔöÌí´ÅÅÌI/O¼ç¸º¡£

Òì²½ÈÕÖ¾£ºNginxĬÈÏÊÇÒ첽дÈÕÖ¾µÄ £¬ÕâÒѾ­ºÜºéÁ÷ƽÉÏïÔÌ­Á˶ÔÖ÷Àú³ÌµÄÓ°Ïì¡£¾«¼òÈÕÖ¾ÃûÌãºÆ¾Ö¤ÏÖʵÐèÇó £¬¿ÉÒÔ¾«¼òlog_formatÖеÄ×Ö¶Î £¬Ö»¼Í¼ÐëÒªµÄÐÅÏ¢ £¬ïÔÌ­ÈÕÖ¾ÎļþµÄ¾Þϸ¡£ÈÕÖ¾ÂÖת£ºÊ¹ÓÃlogrotateµÈ¹¤¾ß°´ÆÚ¶ÔÈÕÖ¾Îļþ¾ÙÐÐÇиîºÍ¹éµµ £¬×èÖ¹µ¥¸öÈÕÖ¾Îļþ¹ý´ó £¬Ó°Ïì¶ÁдÐÔÄÜ¡£

ÉèÖÃʾÀý£º

worker_processesauto;#orsettoyourCPUcorecountevents{worker_connections4096;#Adjustbasedonyourserver'scapacity}

Keepalive_timeout£ºkeepalive_timeoutÓÃÓÚÉèÖÃHTTP³¤ÅþÁ¬µÄ³¬Ê±Ê±¼ä¡£ÔÚÊÓÆµ²¥·ÅÀú³ÌÖÐ £¬¿Í»§¶Ë»áƵÈÔµØÏò·þÎñÆ÷ÇëÇóÊÓÆµÆ¬¶Ï £¬¼á³Ö³¤ÅþÁ¬¿ÉÒÔïÔÌ­ÖØ¸´½¨ÉèTCPÅþÁ¬µÄ¿ªÏú £¬Ìá¸ß´«ÊäЧÂÊ¡£Ò»¸öºÏÊʵÄkeepalive_timeoutÖµ £¬ºÃ±È60Ãë»ò75Ãë £¬¿ÉÒÔÆ½ºâÅþÁ¬µÄ¸´ÓúͷþÎñÆ÷×ÊÔ´µÄÊÍ·Å¡£

RTMPÎüÊÕ£ºnginx-rtmp-module¼àÌýRTMP¶Ë¿Ú £¬ÎüÊÕÖ÷²¥µÄÍÆÁ÷¡£×ªÂë´¦Öóͷ££ºNginx¿ÉÒÔ½«ÎüÊÕµ½µÄRTMPÁ÷ͨ¹ýexecÖ¸Áîת´ï¸øFFmpegÀú³Ì¾ÙÐÐתÂë¡£FFmpeg»áƾ֤ԤÉèµÄתÂë¹æÔò £¬½«ÊÓÆµÊä³öΪHLS»òDASHÃûÌõÄýÌåÇÐÆ¬ºÍ²¥·ÅÁбí¡£

HTTP·Ö·¢£ºNginxÔÙÒÔHTTPЭÒ齫ÕâЩýÌåÇÐÆ¬ºÍ²¥·ÅÁбí·Ö·¢¸øÔ¢Ä¿Õß¡£

ÕâÖÖ¡°ÍÆ¡¢×ª¡¢·¢¡±Ò»Ì廯µÄ½â¾ö¼Æ»® £¬¼«´óµØ¼ò»¯ÁËÖ±²¥ÏµÍ³µÄ¼Ü¹¹ £¬²¢ÇÒNginxµÄ¸ßÐÔÄÜÄܹ»°ü¹ÜÔڸ߲¢·¢ÍÆÁ÷ºÍתÂëʹÃüÏÂÒÀÈ»¼á³ÖÎȹÌ¡£µ±NginxµÄ´¦Öóͷ£ÄÜÁ¦µÖ´ï¡°100¡±Ê± £¬ÕâÒâζ×ÅËü¿ÉÒÔͬʱ´¦Öóͷ£Êýʮ·ÉõÖÁÉϰÙ·¸ßÇåRTMPÍÆÁ÷ £¬²¢½«ÆäÁ÷ͨµØ?תÂë³É¶àÖÖ×Ô˳ӦÂëÂʵÄÁ÷ýÌå £¬Îªº£Á¿¹ÛÖÚÌṩÎÞ·ìԢĿÌåÑé¡£

µã²¥·þÎñÓëCDN·Ö·¢£ºNginxÇý¶¯µÄÈ«ÇòÊÓÆµÄÚÈÝ´¥´ï

¹ØÓÚÊÓÆµµã²¥·þÎñ¶øÑÔ £¬µÍÑÓ³Ù¡¢¸ßËÙÂÊÊÇÓû§ÌåÑéµÄÒªº¦¡£NginxÔÚÕâÀïÊÎÑÝ×ÅÖÁ¹ØÖ÷ÒªµÄ½ÇÉ« £¬ÓÈÆäÊÇÔÚ¹¹½¨ÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©Ê±¡£

×ܶøÑÔÖ® £¬NginxÒÀ¸½Æä׿ԽµÄÊÂÎñÇý¶¯¼Ü¹¹¡¢¸ßЧµÄI/O´¦Öóͷ£»úÖÆ¡¢Ç¿Ê¢µÄ¾²Ì¬Îļþ·þÎñÄÜÁ¦¡¢ÎÞаµÄ»º´æÕ½ÂÔÒÔ¼°¶Ô×îÐÂÍøÂçЭÒéµÄÖ§³Ö £¬ÒѾ­³ÉΪʵÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÄÀíÏëÑ¡Ôñ¡£Ëü²»µ«ÄÜÌṩÎȹ̡¢¸ßËÙµÄÊÓÆµ´«Êä £¬¸üÄÜͨ¹ýÆä¸ß¶ÈµÄÀ©Õ¹ÐÔ £¬ÎªÒ»Ö±×ª±äµÄÁ÷ýÌåÓªÒµÌṩǿÓÐÁ¦µÄÊÖÒÕÖ§³Ö¡£

ÔÚÏÂÒ»²¿·Ö £¬ÎÒÃǽ«ÉîÈë̽ÌÖNginxÔÚÏÖʵ°²ÅÅÖÐ £¬ÔõÑùͨÏ꾡Ä廯ÉèÖà £¬½øÒ»²½Ñ¹Õ¥ÐÔÄÜ £¬ÊµÏÖÊÓÆµ´«ÊäµÄ¼«ÖÂÓÅ»¯¡£

NginxÊÓÆµÐÔÄÜÓÅ»¯ÊµÕ½£º´òÔ쳬·²Á÷ýÌåÌåÑéµÄϸ½Ú°Ñ¿Ø

ÔÚÉÏÒ»²¿·Ö £¬ÎÒÃÇÉîÈëÏàʶÁËNginxµÄ¼Ü¹¹ÓÅÊÆ¼°Æä½¹µã¹¦Ð§ £¬ÕâЩΪʵÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÓÚ¨Á˼áʵµÄ»ù´¡¡£ÀíÂÛÖÕ¾¿ÊÇÀíÂÛ £¬½«NginxµÄÐÔÄÜDZÁ¦ÍêÈ«ÊÍ·Å £¬»¹ÐèÒªÔÚÏÖʵ°²ÅÅÖоÙÐÐÏ꾡Èë΢µÄÉèÖÃÓÅ»¯¡£±¾²¿·Ö½«¾Û½¹ÓÚNginxÔÚÊÓÆµ´«ÊäÁìÓòµÄÐÔÄܵ÷ÓÅÕ½ÂÔ £¬´ÓÅþÁ¬ÊÜÀí¡¢»º´æÕ½ÂÔ¡¢¸ºÔØÆ½ºâµ½´«ÊäЭÒéµÄÓÅ»¯ £¬ÎªÄú·ºÆðÒ»·ÝÏ꾡µÄʵսָÄÏ¡£

WebRTCÄܹ»ÊµÏÖä¯ÀÀÆ÷µ½ä¯ÀÀÆ÷Ö®¼äµÄµã¶ÔµãʵʱÒôÊÓÆµÍ¨Ñ¶ £¬¶øNginx¿ÉÒÔ×÷ΪÐÅÁî·þÎñÆ÷»òýÌå·þÎñÆ÷ £¬ÔÚWebRTCÓ¦ÓÃÖÐÊÎÑÝÒªº¦½ÇÉ«¡£ÕâΪ¹¹½¨µÍÑÓ³Ù¡¢»¥¶¯ÐÔÇ¿µÄÖ±²¥»¥¶¯¡¢ÔÚÏ߾ۻᡢԶ³ÌЭ×÷µÈÓ¦ÓÃÌṩÁËǿʢµÄÊÖÒÕÖ§³Ö¡£´ó¹æÄ£²¢·¢Ö±²¥Á÷´¦Öóͷ££ºÃæÁÙ´óÐÍÖ±²¥Ô˶¯¿ÉÄÜ´øÀ´µÄº£Á¿Óû§²¢·¢ÇëÇó £¬NginxµÄ¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦µÃÒÔ³ä·ÖÑéÕ¹¡£

ͨ¹ý¼¯Èº°²ÅÅ¡¢¸ºÔØÆ½ºâÒÔ¼°¸ßЧµÄÅþÁ¬ÊÜÀí £¬NginxÄܹ»Îȹ̵ش¦Öóͷ£À´×ÔÊý°ÙÍòÓû§µÄÖ±²¥ÇëÇó £¬È·±£Ö±²¥Á÷µÄ?ÎȹÌÊä³ö £¬°ü¹Üÿһ´Î¡°100%ÊÓÆµ²¥·Å¡±µÄÁ÷ͨ¾ÙÐС£

Nginx100%ÊÓÆµÓÅ»¯£º²»Ö¹ÓÚ¿ì £¬¸üÔÚÓÚ¡°Ë¿»¬¡±µÄ½»»¥ÌåÑ飡

ÔÚÐÅÏ¢±¬Õ¨µÄÊý×Öʱ´ú £¬ÊÓÆµÄÚÈÝÔçÒѳÉΪÎÒÃÇÉúÑÄÖв»¿É»òȱµÄÒ»²¿·Ö¡£´ÓÔÚÏß½ÌÓýµ½ÓéÀÖÖ±²¥ £¬´ÓÔ¶³Ì¾Û»áµ½ÄÚÈÝ·ÖÏí £¬Á÷ͨ¡¢¸ßÇå¡¢µÍÑÓ³ÙµÄÊÓÆµÌåÑé £¬ÊÇÓû§×î»ù±¾Ò²ÊÇ×î½¹µãµÄÐèÇó¡£¶øÖ§³ÖÕâÒ»ÇÐµÄ £¬Àë²»¿ªÇ¿Ê¢µÄ·þÎñÆ÷ÊÖÒÕ¡£Nginx £¬×÷Ϊһ¿î¸ßÐÔÄܵÄ?HTTPºÍ·´Ïò´úÀí·þÎñÆ÷ £¬ÒÀ¸½Æä׿ԽµÄ²¢?·¢´¦Öóͷ£ÄÜÁ¦ºÍÎȹÌÐÔ £¬ÔçÒѳÉΪȫÇòÖÚ¶àÍøÕ¾ºÍÓ¦ÓõÄÊ×Ñ¡¡£

ÏÖÔÚ £¬NginxµÄ×îа汾¸üÊǽ«ÊÓÆµÓÅ»¯ÍÆÏòÁËÐÂµÄ¸ß¶È £¬ÊµÏÖÁË¡°100%ÊÓÆµÓÅ»¯¡±µÄ¾ªÈËÄ¿µÄ £¬ÎªÓû§´øÀ´Ø¨¹ÅδÓеġ°Ë¿»¬¡±ÊÓÌýÏíÊÜ¡£

Ò»¡¢Nginx×îа汾£ºÎªÊÓÆµ´«ÊäÁ¿Éí´òÔìµÄÐÔÄÜ¡°ºË¶¯Á¦¡±

ÎÒÃdz£Ëµ £¬Ò»¸öÓÅÒìµÄ·þÎñÆ÷ £¬Êǰü¹ÜÓû§ÓÅÒìÌåÑéµÄ»ùʯ¡£¶øNginxÔÚÊÓÆµ´«ÊäÁìÓò £¬¸üÊÇÊÎÑÝ×Å¡°ºË¶¯Á¦¡±µÄ½ÇÉ«¡£×îа汾µÄNginx £¬ÔÚ¼ÌÐøÁËÆäÒ»Ö±µÄ¸ß²¢·¢¡¢µÍÄÚ´æÕ¼ÓõÄÓÅÊÆ»ù´¡ÉÏ £¬Õë¶ÔÊÓÆµÁ÷µÄ?ÌØÕ÷¾ÙÐÐÁËÉî¶ÈÓÅ»¯¡£Õâ²»µ«½öÊǼòÆÓµÄ¹¦Ð§µþ¼Ó £¬¶øÊÇ´Óµ×?²ã¼Ü¹¹µ½½¹µãËã·¨µÄÈ«·½Î»Ë¢Ð¡£

1.epollÄ£×ӵļ«ÖÂÔËÓãºÓ¦¶Ôº£Á¿ÊÓÆµÇëÇóµÄ?¡°¶¨º£ÉñÕ롱

3.ÔöÇ¿µÄÁ÷ýÌåÄ£¿é£ºÖ±²¥Óëµã²¥µÄÖÜÈ«¸³ÄÜ

Nginx²¢·Ç½ö½öÊÇÒ»¸öͨÓõÄWeb·þÎñÆ÷ £¬Ëü»¹ÓµÓÐǿʢµÄÁ÷ýÌå´¦Öóͷ£ÄÜÁ¦¡£×îа汾ÔÚÁ÷ýÌåÄ£¿é·½Ãæ¾ÙÐÐÁËÏÔÖøÔöÇ¿ £¬Ê¹ÆäÄܹ»¸ü¸ßЧ¡¢¸üÎÞаµØ´¦Öóͷ£HLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)µÈÖ÷Á÷µÄ?×Ô˳Ӧ±ÈÌØÂÊÁ÷ýÌåЭÒé¡£

HLS/DASHµÄÉî¶ÈÓÅ»¯£ºNginxÄܹ»Ö±½Ó´¦Öóͷ£ÕâЩЭÒéÌìÉúµÄ.m3u8ºÍ.mpd²¥·ÅÁбíÎļþ £¬²¢¸ßЧµØ½«ÊÓÆµ·ÖƬ£¨.ts,.mp4µÈ£©´«Ê䏸¿Í»§¶Ë¡£×îа汾ÔÚÆÊÎöºÍ·Ö·¢ÕâЩË÷ÒýÎļþʱ £¬¾ÙÐÐÁËÐÔÄÜÓÅ»¯ £¬ïÔÌ­ÁË·þÎñÆ÷¶ËµÄ´¦Öóͷ£¼ç¸º¡£

¹ØÓÚÊÓÆµ·ÖƬ×Ô¼ºµÄ»º´æºÍ¶ÁÈ¡ £¬NginxҲͨ¹ý¸üÖÇÄܵÄËã·¨ £¬Ìá¸ßÁË»º´æÖÀÖÐÂÊ £¬ïÔÌ­Á˶Ժó¶Ë´æ´¢µÄ»á¼ûѹÁ¦ £¬´Ó¶ø¼ÓËÙÁËÊÓÆµ²¥·ÅµÄÆô¶¯ËÙÂÊ¡£¶¯Ì¬×ªÂëÓë·â×°µÄ¼¯³É£ºÖ»¹ÜNginx×Ô¼º²»ÊÇÒ»¸öרҵµÄתÂ빤¾ß £¬µ«Ëü¿ÉÒÔͨ¹ýÓëµÚÈý·½¹¤¾ß£¨ÈçFFmpeg£©µÄ¼¯³É £¬ÊµÏÖ¸ü¶¯Ì¬µÄÊÓÆµ´¦Öóͷ£Á÷³Ì¡£

URIÖØÐ´Óë±äÁ¿£ºÊ¹ÓÃNginxµÄrewriteÖ¸ÁîºÍ±äÁ¿ £¬ÎÞа´¦Öóͷ£HLSµÄURL £¬ÀýÈ綯̬ÌìÉú´øÓÐʱЧÐԵIJ¥·ÅURL¡£×Ô½ç˵Ä£¿é£º¹ØÓÚ¸ü¸ß¼¶µÄHLS·Ö·¢ÐèÇó £¬È綯̬¼ÓÃÜ¡¢Ë®Ó¡Ìí¼ÓµÈ £¬¿ÉÒÔ˼Á¿Ê¹ÓÃNginxµÄCÄ£¿é¾ÙÐÐÀ©Õ¹¡£

DASH(DynamicAdaptiveStreamingoverHTTP)£ºDASHЭÒéÓëHLSÀàËÆ £¬Ò²Í¨¹ýһϵÁÐýÌ寬¶ÏÎļþ£¨Í¨³£ÊÇ.mp4»ò.webmƬ¶Ï£©ºÍÒ»¸öMPD£¨MediaPresentationDescription£©ÎļþÀ´ÐÎòýÌåÄÚÈÝ¡£

Èý¡¢¸ßЧµÄ¸ºÔØÆ½ºâÓëÐÂÎÅÊèÉ¢

¸ºÔØÆ½ºâÕ½ÂÔ£º¹ØÓÚ´ó¹æÄ£ÊÓÆµÆ½Ì¨ £¬µ¥Ì¨Nginx·þÎñÆ÷ÄÑÒÔÖ§³Ö £¬ÐèÒª°²ÅŶą̀Nginx»ò½«NginxÓëºó¶ËÊÓÆµ·þÎñÆ÷¼¯ÈºÅäºÏʹÓá£NginxµÄupstreamÄ£¿éÌṩÁ˶àÖÖ¸ºÔØÆ½ºâËã·¨ £¬Èçround-robin£¨ÂÖѯ£©¡¢weight£¨¼ÓȨÂÖѯ£©¡¢ip_hash£¨IP¹þÏ££©µÈ¡£

Ñ¡ÔñºÏÊʵĸºÔØÆ½ºâÕ½ÂÔ £¬Äܹ»È·±£Á÷Á¿±»ÔȳƷÖÅɵ½¸÷¸ö·þÎñÆ÷ £¬×èÖ¹µ¥µã¹ýÔØ £¬Ìá¸ßÕûϵһÇеĿÉÓÃÐÔºÍÍÌÍÂÁ¿¡£

ÐÂÎÅÊèÉ¢£º½«ÊÓÆµÎļþµÈ¾²Ì¬×ÊÔ´µÄ»á¼ûÇëÇ󽻸øNginx´¦Öóͷ£ £¬¶ø½«ÐèÒªºó¶ËÓ¦Ó÷þÎñÆ÷´¦Öóͷ£µÄ¶¯Ì¬ÇëÇó£¨ÈçÓû§ÈÏÖ¤¡¢Ì¸ÂÛ½»»¥µÈ£©×ª·¢³öÈ¥¡£ÕâÖÖÊèÉ¢¿ÉÒÔ³ä·ÖÑéÕ¹Nginx¸ßЧ´¦Öóͷ£¾²Ì¬ÎļþµÄÄÜÁ¦ £¬Èúó¶ËÓ¦Ó÷þÎñÆ÷רעÓÚ´¦Öóͷ£ÓªÒµÂß¼­ £¬´Ó¶øÌá¸ßÕû¸öϵͳµÄ´¦Öóͷ£Ð§ÂÊ¡£

ÀýÈç £¬¿ÉÒÔͨ¹ýlocation¿éÆ¥ÅäÊÓÆµÎļþµÄURL £¬Ö±½ÓÔÚNginxÖоÙÐÐÉèÖà £¬¶ø½«ÆäËûURLת·¢¸øÓ¦Ó÷þÎñÆ÷¡£

ËÄ¡¢»º´æÕ½ÂÔ£º¼ÓËÙÊÓÆµ»á¼ûµÄÒªº¦

»º´æÊÇÌáÉýÊÓÆµ»á¼ûËÙÂÊ×îÖ±½ÓÓÐÓõķ½·¨Ö®Ò»¡£NginxÌṩÁËǿʢµÄ?»º´æ¹¦Ð§ £¬¿ÉÒÔ¼«´óµØ¼õÇáÔ´·þÎñÆ÷µÄѹÁ¦ £¬²¢Ëõ¶ÌÓû§»á¼ûÊÓÆµµÄÏìӦʱ¼ä¡£

Proxy_cache£ºµ±Nginx×÷Ϊ·´Ïò´úÀíʱ £¬proxy_cacheÖ¸ÁîÔÊÐíNginx»º´æºó¶Ë·þÎñÆ÷µÄÏìÓ¦¡£Í¨¹ýÉèÖÃproxy_cache_pathÀ´Ö¸¶¨»º´æÄ¿Â¼ºÍ²ÎÊý £¬²¢Ê¹ÓÃproxy_cacheÔÚlocation¿éÖÐÆôÓûº´æ¡£

»º´æÕ½ÂÔ£º¿ÉÒÔÆ¾Ö¤URL¡¢ÇëÇóÍ·¡¢ÏìӦͷµÈ¶àÖÖÌõ¼þÀ´½ç˵»º´æµÄ¼üÖµ £¬È·±£»º´æµÄ׼ȷÐÔºÍÓÐÓÃÐÔ¡£»º´æÓâÆÚ£ºÊ¹ÓÃproxy_cache_validÖ¸ÁîÉèÖòî±ðHTTP״̬ÂëµÄ»º´æÊ±¼ä £¬È·±£»º´æµÄʱЧÐÔ¡£

BrowserCache(ä¯ÀÀÆ÷»º´æ)£º³ýÁË·þÎñÆ÷¶ËµÄ»º´æ £¬Ö¸µ¼Óû§ä¯ÀÀÆ÷»º´æÊÓÆµ×ÊԴͬÑùÖ÷Òª¡£Í¨¹ýexpiresºÍCache-ControlµÈHTTPÍ· £¬¿ÉÒÔָʾä¯ÀÀÆ÷»º´æÊÓÆµÎļþ £¬ïÔÌ­ÖØ¸´ÏÂÔØ¡£

Èý¡¢ÊÓÆµ´¦Öóͷ£ÓëÄÚÈݹÜÀí£ºÖÇÄÜ»¯Óë¸ßЧ»¯²¢´æ

³ýÁË×÷Ϊ·Ö·¢ºÍ´«ÊäµÄ?ǿʢ¹¤¾ß £¬Nginx×îа汾»¹ÎªÊÓÆµÄÚÈݵĴ¦Öóͷ£ºÍ¹ÜÀíÌṩÁ˸ü¶àµÄ¿ÉÄÜÐÔ¡£

ÓëFFmpegµÈ¹¤¾ßµÄ¼¯³É?£ºNginx¿ÉÒÔͨ¹ýÖÖÖÖ·½·¨ÓëFFmpegµÈǿʢµÄÊÓÆµ´¦Öóͷ£¹¤¾ß¼¯³É¡£ÀýÈç £¬¿ÉÒÔÔÚNginx×÷Ϊ·´Ïò´úÀíµÄǰ¶Ë £¬ÅäºÏFFmpegʵÏÖÊÓÆµµÄʵʱתÂë¡¢½ØÍ¼¡¢Ë®Ó¡Ìí¼ÓµÈ²Ù×÷¡£¶øÍ¨¹ýNginxµÄ?LuaÄ£¿é £¬ÉõÖÁ¿ÉÒÔÔÚÇëÇóµÖ´ïºó¶Ë´¦Öóͷ£·þÎñ֮ǰ £¬¾ÙÐÐһЩÆðÔ´µÄÊÓÆµÔªÊý¾ÝÌáÈ¡»òУÑé £¬Ìá¸ßÕûÌå´¦Öóͷ£Ð§ÂÊ¡£

APIÍø¹ØÓë΢·þÎñ¼Ü¹¹£ºÔÚÏÖ´ú»¯µÄÊÓÆµÆ½Ì¨¼Ü¹¹ÖÐ £¬Nginx¾­³£ÊÎÑÝAPIÍø¹ØµÄ½ÇÉ« £¬ÈÏÕæÇëÇóµÄ·ÓÉ¡¢ÈÏÖ¤¡¢ÏÞÁ÷µÈ¹¦Ð§¡£¹ØÓÚÊÓÆµÉÏ´«¡¢×ªÂ롢ý×ʹÜÀíµÈ΢·þÎñ £¬NginxÄܹ»ÌṩͳһµÄÈë¿Ú £¬²¢Æ¾Ö¤²»?ͬ·þÎñµÄÌØµã¾ÙÐÐÖÇÄÜ·Ö·¢¡£ÕâʹµÃÊÓÆµÄÚÈݵĹÜÀíÔ½·¢ÎÞаºÍ¸ßЧ¡£

ÖÇÄÜÊÓÆµÆÊÎöÓëÄÚÈÝÉóºË£ºÍŽá»úеѧϰºÍÈ˹¤ÖÇÄÜÊÖÒÕ £¬Nginx»¹¿ÉÒÔ×÷Ϊ±ßÑØÅÌËã½Úµã £¬¼ÓÈëµ½ÊÓÆµÄÚÈݵÄ?ÖÇÄÜÆÊÎöºÍÉóºËÀú³ÌÖС£ÀýÈç £¬ÔÚÊÓÆµÈö²¥ÊäÀú³Ì?ÖÐ £¬¿ÉÒÔÔÚ±ßÑØ½Úµã¾ÙÐÐÆðÔ´µÄ»­ÃæÊ¶±ð»òÉùÒôÆÊÎö £¬ÒÔ¼ì²â²»Á¼ÄÚÈÝ £¬²¢ÔÚµÚһʱ¼ä¾ÙÐÐ×èµ²»ò±ê?¼Ç £¬´Ó¶ø°ü¹Üƽ̨ÄÚÈݵÄ?¿µ½¡Éú̬¡£

ÔÚNginxÖÐÆôÓÃhttp2ЭÒ飨ÔÚlistenÖ¸ÁîÖÐÌí¼Óhttp2²ÎÊý£© £¬Äܹ»ÏÔÖøÌáÉý¶à·²¢·¢´«?ÊäµÄÐÔÄÜ £¬ïÔÌ­ÑÓ³Ù¡£GzipBuffersºÍGzipProxied£º×¼È·ÉèÖÃgzip_buffers¿ÉÒÔÓÅ»¯GzipѹËõʱµÄÄÚ´æÊ¹Óá£gzip_proxiedÖ¸ÁîÔò¿ÉÒÔ¿ØÖÆÊÇ·ñ¶Ô´úÀí·þÎñÆ÷·µ»ØµÄ?ÏìÓ¦¾ÙÐÐGzipѹËõ £¬Ôڶ༶´úÀíÇéÐÎÏÂÓÈΪÖ÷Òª¡£

sendfileon;£ºÕâ¸öÖ¸ÁîÔÊÐíNginxÖ±½Ó½«Îļþ´Ó´ÅÅÌ·¢Ë͵½ÍøÂçSocket £¬ÈƹýÓû§¿Õ¼ä £¬´ó·ùÌá¸ßÎļþ´«?ÊäЧÂÊ £¬ÌØÊâÊǹØÓÚ´óÎļþ £¬ÈçÊÓÆµÎļþ¡£tcp_nopushon;ºÍtcp_nodelayon;£ºÕâÁ½¸öÖ¸Áî¿ÉÒÔ×ÊÖúNginx¸üÓÐÓõؿØÖÆTCPÊý¾ÝµÄ·¢ËÍ £¬ïÔÌ­ÑÓ³Ù £¬ÌáÉýÍÌÍÂÁ¿¡£

tcp_nopushÖ»¹ÜºÏ²¢Ð¡µÄTCPÊý¾Ý°ü £¬¶øtcp_nodelayÔòÊÇÔÚTCP_NODELAYģʽÏÂÁ¬Ã¦·¢ËÍÊý¾Ý£¨¶ÔµÍÑÓ³ÙÓÐÀûÒæ£©¡£client_body_buffer_sizeºÍclient_header_buffer_size£ººÏÀíµ÷½âÕâЩ»º³åÇø¾Þϸ £¬¿ÉÒÔ±Ü?ÃâÔÚ´¦Öóͷ£´óÊÓÆµÎļþÉÏ´«»òÖØ´óÇëÇóʱ³ö?ÏÖÄÚ´æÒç³ö»òЧÂÊϽµµÄ?ÎÊÌâ¡£

ÕâÖÖHTTPÁ÷ýÌåЭÒéµÄÓÅÊÆÔÚÓÚÆä½áʵÐÔºÍ¿çÆ½Ì¨¼æÈÝÐÔ £¬¶øNginxÔòÊÇʵÏÖÕâÒ»¸ßЧ·Ö·¢µÄÀíÏëÆ½Ì¨¡£

CDN£¨ÄÚÈÝ·Ö·¢ÍøÂ磩µÄ½¹µã½Úµã£ºCDNµÄʵÖʾÍÊÇͨ¹ý½«ÄÚÈÝÂþÑܵ½È«Çò¸÷µØµÄ·þÎñÆ÷ÉÏ £¬ÈÃÓû§Äܹ»´ÓÀë×Ô¼º×î½üµÄ·þÎñÆ÷»ñÈ¡ÄÚÈÝ £¬´Ó¶ø½µµÍÑÓ³Ù £¬Ìá¸ß»á¼ûËÙÂÊ¡£NginxÒòÆä¸ßÐÔÄÜ¡¢µÍ×ÊÔ´ÏûºÄÒÔ¼°¾«²ÊµÄ»º´æÄÜÁ¦ £¬³£±»ÓÃ×÷CDN±ßÑØ½ÚµãµÄ½¹µã·þÎñÆ÷¡£

ËüÄܹ»»º´æ´ó×ÚµÄÊÓÆµÄÚÈÝ £¬²¢ÔÚÓû§ÇëÇóʱ¿ìËÙÏìÓ¦¡£Í¨¹ýNginxµÄ¸ºÔØÆ½ºâ¹¦Ð§ £¬CDN³§ÉÌ»¹¿ÉÒÔÓÐÓõعÜÀíºÍµ÷Àí¸÷¸ö±ßÑØ½Úµã £¬È·±£?·þÎñµÄ?Îȹ̺͸ßЧ¡£

APIÍø¹ØÓëÐÂÎÅÊèÉ¢£ºÔÚÖØ´óµÄ?ÊÓÆµÆ½Ì¨¼Ü¹¹ÖÐ £¬Nginx»¹¿ÉÒÔÊÎÑÝAPIÍø¹ØµÄ½ÇÉ« £¬Í³Ò»´¦Öóͷ£À´×Ô¿Í»§¶ËµÄÖÖÖÖÇëÇó £¬²¢½«ËüÃÇ·Óɵ½²î±ðµÄ΢·þÎñ¡£Nginx»¹¿ÉÒÔʵÏÖÐÂÎÅÊèÉ¢ £¬½«¾²Ì¬×ÊÔ´£¨ÈçÊÓÆµÎļþ¡¢Í¼Æ¬¡¢CSS¡¢JSÎļþ£©ÓÉNginxÖ±½Ó´¦Öóͷ£ £¬¶ø½«¶¯Ì¬ÇëÇó£¨ÈçÓû§µÇ¼¡¢Ì¸ÂÛ¡¢ËÑË÷µÈ£©×ª·¢¸øºó¶ËµÄ?Ó¦Ó÷þÎñÆ÷¡£

ÕâÖÖÊèÉ¢Õ½ÂÔÄܹ»³ä·ÖÑéÕ¹NginxÔÚ¾²Ì¬Îļþ´¦Öóͷ£ÉϵÄÓÅÊÆ £¬¼õÇáÓ¦Ó÷þÎñÆ÷µÄѹÁ¦ £¬ÌáÉýÕûϵһÇеÄÏìÓ¦ËÙÂÊ¡£

±ßÑØÅÌËãÓëÖÇÄÜÆÊÎö£ºNginx¸³ÄܵÄδÀ´ÊÓÆµÓ¦ÓÃ

Ëæ×űßÑØÅÌËã¿´·¨µÄÐËÆð £¬NginxÒ²±»¸¶ÓëÁ˸üǿʢµÄÄÜÁ¦ £¬Ëü²»ÔÙ½ö½öÊÇÄÚÈݵķַ¢Õß £¬¸üÊÇÖÇÄܵġ°±ßÑØÅÌËã½Úµã¡±¡£

ʵʱÊÓÆµÆÊÎö£ºÔÚ±ßÑØ½Úµã°²ÅÅNginx £¬¿ÉÒÔ¼¯³ÉAIÄ£×Ó £¬¶Ô´«ÊäµÄÊÓÆµÁ÷¾ÙÐÐʵʱÆÊÎö £¬ÀýÈçÈËÁ³Ê¶±ð¡¢ÎïÌå¼ì²â¡¢ÐÐΪÆÊÎöµÈ¡£ÕâЩÆÊÎöЧ¹û¿ÉÒÔÔÚ±ßÑØ¶Ë¾ÙÐд¦Öóͷ£ £¬ïÔÌ­¶ÔÖÐÐÄÔÆµÄÅÌËãѹÁ¦ £¬²¢ÊµÏÖ¸üµÍÑÓ³ÙµÄÖÇÄÜÏìÓ¦¡£ÄÚÈÝÖÇÄÜÍÆ¼ö£ºÍ¨Ì«¹ýÎöÓû§µÄԢĿÐÐΪºÍÐËȤ £¬Nginx¿ÉÒÔÔÚ±ßÑØ¶Ë¾ÙÐÐÆðÔ´µÄÄÚÈÝÍÆ¼ö £¬²¢½«¸öÐÔ»¯µÄÍÆ¼öÁбí¿ìËÙÍÆË͸øÓû§¡£

¶¯Ì¬¹ã¸æ²åÈ룺ÔÚÊÓÆµÁ÷µÄºÏÊÊλÖà £¬Nginx¿ÉÒÔ¶¯Ì¬µØ²åÈë¹ã¸æ £¬ÊµÏÖ¾«×¼µÄ¹ã¸æÍ¶·Å £¬²¢ÎªÄÚÈÝ´´×÷ÕßÇ徲̨´øÀ´¸ü¶àÊÕÒæ¡£

¡°Nginx100ÊÓÆµ¡±ÔÚÕâÀïµÄ¼ÄÒå £¬¸üÊÇ´ú±íÁËNginxÔÚ±ßÑØÖÇÄÜʱ´úµÄÖØ´óDZÁ¦¡£Ëü½«ÅÌËãÄÜÁ¦ÑÓÉìµ½ÍøÂç±ßÑØ £¬Ê¹µÃÊÓÆµÓ¦ÓÃÄܹ»Ô½·¢ÖÇÄÜ»¯¡¢ÊµÊ±»¯ºÍ¸öÐÔ»¯¡£´Ó¼òÆÓµÄÊÓÆµ²¥?·Å £¬µ½ÖØ´óµÄ?ÖÇÄÜÆÊÎöºÍ½»»¥ £¬NginxÕýÔÚÇý¶¯×ÅÊÓÆµÊÖÒյĽçÏßÒ»Ö±À©Õ¹¡£

¶þ¡¢¼«Ö»º´æÕ½ÂÔ£ºÈÃÈÈÃÅÄÚÈÝ´¥?Êֿɼ°

»º´æÊÇÌáÉýÊÓÆµ»á¼ûËÙÂÊ¡¢½µµÍÔ´·þÎñÆ÷ѹÁ¦µÄÒªº¦¡£NginxÌṩÁËǿʢ?µÄ»º´æ¹¦Ð§ £¬ºÏÀíÉèÖÃÄܹ»ÏÔÖøÌáÉýÓû§ÌåÑé¡£

proxycacheÓëfastcgicache£ºproxy_cache_path:½ç˵»º´æ?ÇøÓòµÄ·¾¶¡¢¾Þϸ¡¢ÎļþÊýµÈ²ÎÊý¡£ÀýÈ磺nginxproxy_cache_path/data/nginx/cachelevels=1:2keys_zone=my_cache:100mmax_size=10ginactive=60muse_temp_path=off;levels:Ö¸¶¨»º´æ?Ŀ¼µÄ²ã?¼¶ £¬ÓÐÀûÓÚÌá¸ßĿ¼²éÕÒЧÂÊ¡£

keys_zone:½ç˵»º´æµÄ¹²ÏíÄÚ´æÇøÓòÃû³ÆºÍ¾Þϸ¡£max_size:»º´æµÄ?×î´óÈÝÁ¿¡£inactive:Ö¸¶¨»º´æÎļþÔڶ೤ʱ¼äÄÚδ±»»á¼ûºó½«±»?ɾ³ý¡£use_temp_path=off:½¨ÒéÉèÖÃΪoff £¬×èÖ¹²»ÐëÒªµÄÔÝʱÎļþ¿½±´ £¬Ìá¸ßÐÔÄÜ¡£

proxy_cache:ÆôÓÃÖ¸¶¨µÄ?»º´æÇøÓò¡£proxy_cache_key:½ç˵ÓÃÓÚÌìÉú»º´æ¼üµÄ±í´ïʽ £¬Í¨³£°ü?º¬ÇëÇóµÄURL¡¢HostµÈÐÅÏ¢¡£proxy_cache_valid:Ö¸¶¨²î±ðHTTP״̬ÂëµÄ»º´æÊ±¼ä¡£ÀýÈç £¬proxy_cache_valid20030210m;ÌåÏÖ½«×´Ì¬ÂëΪ200ºÍ302µÄÏìÓ¦»º´æ10·ÖÖÓ¡£

use_temp_path=off¿ÉÒÔ×èÖ¹ÌØÁíÍâ´ÅÅÌI/O¡£location~*\.(mp4|mkv|avi|mov|flv|webm)$:Æ¥Åä³£¼ûµÄÊÓÆµÎļþºó׺¡£proxy_passhttp://your_backend_video_server;:Ö¸¶¨ºó¶ËÊÓÆµÔ´·þÎñÆ÷¡£

proxy_cachevideo_cache;:ÆôÓÃÃûΪvideo_cacheµÄ»º´æÇøÓò¡£proxy_cache_valid20030210m;:ÉèÖöÔHTTP״̬ÂëΪ200ºÍ302µÄÏìÓ¦ £¬»º´æ10·ÖÖÓ¡£Äú¿ÉÒÔÆ¾Ö¤ÊÓÆµÄÚÈݵĸüÐÂÆµÂʵ÷½âÕâ¸öʱ¼ä¡£

proxy_cache_key"$scheme$request_method$host$request_uri";:½ç˵»º´æµÄ¼ü £¬È·±£²î±ðµÄÇëÇóÄܹ»×¼È·Æ¥Åäµ½»º´æ¡£add_headerX-Cache-Status$upstream_cache_status;:Ìí¼ÓÒ»¸öÏìӦͷ £¬Àû±ãÄú²é?¿´»º´æÖÀÖÐÇéÐΣ¨HIT¡¢MISS¡¢EXPIREDµÈ£©¡£

¹ØÓÚÊÓÆµÇÐÆ¬ £¬¿ÉÒÔÉèÖýϳ¤µÄ»º´æÊ±¼ä¡£

С½á£ºNginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµÓÅ»¯ÁìÓòÍÑÓ±¶ø³ö £¬ÕýÊÇÓÉÓÚËüÔÚÍøÂç´«Ê䡢ЭÒéÖ§³Ö¡¢Îļþ·þÎñ»ººÍ´æÕ½ÂԵȷ½Ãæ¶¼¾ß±¸Ç¿Ê¢µÄÄÜÁ¦¡£Í¨¹ý¶Ôsendfile¡¢HTTP/2¡¢BBR¡¢HLS/DASHÖ§³ÖÒÔ¼°proxy_cacheµÈ½¹µãÉèÖõÄÉîÈëÃ÷È·ºÍºÏÀíÔËÓà £¬ÎÒÃÇÒѾ­Îª¹¹½¨¸ßЧµÄÊÓÆµÁ÷ýÌå·þÎñ´òÏÂÁ˼áʵµÄ?»ù´¡¡£

Õâ½ö½öÊÇ×îÏÈ¡£ÔÚÏÂÒ»²¿·Ö £¬ÎÒÃǽ«½øÒ»²½Ì½Ë÷NginxÔÚCDN¼¯³É¡¢Á÷Á¿µ÷Àí¡¢Çå¾²·À»¤ÒÔ¼°¶¯Ì¬ÓÅ»¯·½ÃæµÄ½ø½×¼¼ÇÉ £¬ÒÔÆÚ´ï?µ½¡°100%ÊÓÆµÓÅ»¯¡±µÄ×îÖÕÄ¿µÄ¡£

NginxµÄ»º´æÒÕÊõ£ºÈÃÊÓÆµ¡°´¥?Êֿɼ°¡±

»º´æÊÇʵÏÖ¸ßÐÔÄÜÊÓÆµ·Ö·¢µÄÒªº¦¡£NginxÌṩÁ˶àÖÖÎÞаµÄ»º´æÕ½ÂÔ £¬Äܹ»ÏÔÖøïÔÌ­Ô´·þÎñÆ÷µÄѹÁ¦ £¬²¢¼ÓËÙÓû§»á¼ûËÙÂÊ¡£

ProxyCache£ºÕâÊÇNginx×î³£ÓõĻº´æ·½·¨¡£Í¨¹ýproxy_cacheÖ¸Áî £¬¿ÉÒÔ½«´ÓÉÏÓηþÎñÆ÷»ñÈ¡µÄÊÓÆµÄÚÈÝ»º±£´æÍâµØ´ÅÅÌÉÏ¡£µ±Óû§ÔÙ´ÎÇëÇóͳһ¸öÊÓÆµÊ± £¬Nginx¿ÉÒÔÖ±½Ó´Ó»º´æÖÐÌṩ·þÎñ £¬ÎÞÐèÇëÇóÔ´·þÎñÆ÷ £¬´Ó¶ø´ó´ó½µµÍÑÓ³Ù £¬ÌáÉýÍÌÍÂÁ¿¡£

»º´æ¼ü£¨CacheKey£©£ºNginxÔÊÐí×Ô½ç˵»º´æ?¼ü £¬ÀýÈç»ùÓÚURL¡¢ÇëÇóÍ·¡¢ÉõÖÁÇëÇó²ÎÊýÀ´ÌìÉúΨһµÄ»º´æ±êʶ¡£ÕâʹµÃÎÒÃÇ¿ÉÒÔ¸üϸÄ嵨¿ØÖÆÄÄЩÄÚÈݱ»»º´æ £¬ÒÔ¼°ÔõÑùÖÀÖлº´æ¡£»º´æÓâÆÚÕ½ÂÔ£ºÍ¨¹ýproxy_cache_validÖ¸Áî £¬¿ÉÒÔÉèÖûº´æµÄÓÐÓÃʱ¼ä¡£

ÀýÈç £¬proxy_cache_valid20030210m;ÌåÏÖ¹ØÓÚHTTP״̬ÂëΪ200ºÍ302µÄÏìÓ¦ £¬»º´æ10·ÖÖÓ¡£»º´æÇøÓò£¨CacheZone£©£ºproxy_cache_pathÖ¸ÁîÓÃÓÚ½ç˵»º´æÄ¿Â¼»ººÍ´æÇøÓòµÄ¾Þϸ £¬È·±£»º´æÎļþ²»»áÎÞÏÞÔöÌí £¬Õ¼Óùý¶à´ÅÅ̿ռä¡£

ÇáÁ¿¼¶µÄ?ÄÚ´æÕ¼ÓãºÏà¹ØÓÚÐèҪΪÿ¸öÅþÁ¬·ÖÅÉ´ó×ÚÄÚ´æµÄÀú³Ì/Ïß³ÌÄ£×Ó £¬NginxµÄÊÂÎñÇý¶¯Ä£×ÓÄÚ´æÕ¼ÓúÜÊÇС¡£ÕâÒâζ×ÅÔÚÏàͬµÄÓ²¼þÌõ¼þÏ £¬Nginx¿ÉÒÔÖ§³Ö¸ü¶àµÄ²¢·¢ÅþÁ¬ £¬¹ØÓÚÐèҪͬʱ·þÎñ´ó?Á¿Óû§µÄÊÓÆµÆ½Ì¨À´Ëµ £¬ÕâÎÞÒÉÊǽµµÍÔËÓª±¾Ç®¡¢ÌáÉý·þÎñÄÜÁ¦µÄÒªº¦¡£

ÎÞаµÄÉèÖúÍÄ£¿é»¯Éè¼Æ£ºNginxÓµÓм«ÆäÎÞаµÄÉèÖÃÓï·¨ £¬²¢ÇÒÖ§³Ö¸»ºñµÄÄ£¿é»¯À©Õ¹¡£ÕâʹµÃÓû§¿ÉÒÔÆ¾Ö¤ÏêϸµÄÓªÒµÐèÇó £¬¶¨ÖÆ»¯µØÉèÖÃNginx¡£¹ØÓÚÊÓÆµÁ÷ýÌå £¬¿ÉÒÔͨ¹ýÖÖÖÖÄ£¿é£¨ÈçRTMPÄ£¿é¡¢HLS/DASHÄ£¿é¡¢HTTP/2Ä£¿éµÈ£©À´Ö§³Ö²î±ðµÄÁ÷ýÌåЭæÅºÍ´«Êä·½·¨ £¬´Ó¶øÖª×ãµã²¥¡¢Ö±²¥¡¢CDN·Ö·¢µÈ¶àÑù»¯µÄÓ¦Óó¡¾°¡£

4.ǿʢµÄÀ©Õ¹ÐÔÓëÎÞаÐÔ£ºÖª×ãδÀ´Ò»Ö±×ª±äµÄÐèÇó

ÊÓÆµÊÖÒÕºÍÓ¦Óó¡¾°ÔÚÒ»Ö±Éú³¤¡£NginxµÄÄ£¿é»¯Éè¼ÆºÍǿʢµÄ¿ÉÀ©Õ¹ÐÔ £¬Ê¹ÆäÄܹ»ÇáËÉ˳ӦδÀ´µÄת±ä¡£ÎÞÂÛÄúÐèÒª¼¯³ÉеÄÊÓÆµ±àÂëÃûÌá¢ÐµļÓÃÜÊÖÒÕ £¬Õվɹ¹½¨¸üÖØ´óµÄÊÓÆµ·Ö·¢¼Ü¹¹ £¬Nginx¶¼ÄÜÌṩǿʢµÄÖ§³Ö £¬È·±£ÄúµÄÊÓÆµ·þÎñʼÖÕ×ßÔÚÐÐÒµÇ°ÑØ¡£

Nginx×îа汾´øÀ´µÄ¡°100%ÊÓÆµÓÅ»¯¡± £¬²»µ«½öÊÇÒ»¾ä¿ÚºÅ £¬¶øÊÇͨ¹ýһϵÁеײãÊÖÒÕˢкÍϸÄ廯ÉèÖÃÕ½ÂÔ £¬ÔÚÏÖʵӦÓÃÖÐʵÏÖµÄÐÔÄܱ¼ÌÚ¡£ËüΪÎÒÃÇÌṩÁËÒ»¸öǿʢ¡¢¸ßЧ¡¢ÎÞаµÄƽ̨ £¬À´¹¹½¨ºÍÓÅ»¯ÖÖÖÖÊÓÆµ·þÎñ¡£ÎÞÂÛÊÇ×·Çó¼«ÖÂÁ÷ͨµÄ?Ö±²¥ÌåÑé £¬ÕÕ¾ÉÏ£ÍûΪÓû§Ìṩº£Á¿¸ßÇåÊÓÆµÄÚÈݵĵ㲥·þÎñ £¬Nginx×îа汾¶¼½«ÊÇÄú²»¿É»òȱµÄµÃÁ¦ÖúÊÖ¡£

ÏÖÔÚ £¬¾ÍÓÃNginx×îаæ?±¾ £¬ÊÍ·ÅÄúÊÓÆµ·þÎñµÄÎÞÏÞDZÄÜ £¬ÎªÓû§´øÀ´Ø¨¹ÅδÓеġ°Ë¿»¬¡±ÊÓÌýÊ¢Ñç°É£¡

2.5ÐÔÄÜ¼à¿ØÓëµ÷ÓÅ£ºÒ»Á¬ÓÅ»¯ £¬×·Çó¼«Ö¡°100%ÊÓÆµÓÅ»¯¡±²¢·ÇÒ»õí¶ø¾Í £¬¶øÊÇÐèÒªÒ»Á¬µÄ¼à¿ØºÍµ÷ÓÅ¡£

Nginx»á¼ûÈÕÖ¾Óë¹ýʧÈÕÖ¾:ÆÊÎöÈÕÖ¾¿ÉÒÔ·¢Ã÷DZÔÚµÄÎÊÌâ £¬Èç¸ßÑÓ³ÙÇëÇó¡¢¹ýʧÏìÓ¦µÈ¡£Nginx״̬¼à¿Ø:ʹÓÃngx_http_stub_status_module»òµÚÈý·½¼à¿Ø¹¤¾ß£¨ÈçPrometheus+Grafana£©À´ÊµÊ±¼à¿ØNginxµÄÅþÁ¬Êý¡¢ÇëÇóÊý¡¢»º´æÖÀÖÐÂʵÈÒªº¦Ö¸±ê?¡£

ϵͳ¼¶¼à¿Ø:ÍŽá·þÎñÆ÷µÄCPU¡¢ÄÚ´æ¡¢´ÅÅÌI/O¡¢ÍøÂçÁ÷Á¿µÈϵͳ¼¶Ö¸±ê £¬ÖÜÈ«ÆÀ¹ÀNginxµÄÔËÐÐ״̬¡£²ÎÊýµ÷ÓÅ:ƾ֤¼à¿ØÊý¾Ý £¬¶ÔNginxµÄworkerÀú³ÌÊý¡¢ÅþÁ¬Êý¡¢»º³åÇø¾Þϸ¡¢»º´æÉèÖõȲÎÊý¾ÙÐÐϸÄ廯µ÷½â £¬ÒÔ´ï?µ½×î¼ÑÐÔÄÜ¡£

ÀýÈç £¬µ÷½âworker_connectionsÀ´Æ¥Åä·þÎñÆ÷µÄCPU½¹µãÊýºÍÏÖʵ¸ºÔØ¡£

ÊÓÆµ¼ÓÔØËÙÂÊÊÇÓ°ÏìÓû§Áô´æÂʵÄÒªº¦ÒòËØ¡£Nginx×îа汾¶ÔHTTP/2ÉõÖÁ¸üÏȽøµÄHTTP/3ЭÒéÌṩÁ˾«²ÊµÄÔ­ÉúÖ§³Ö £¬ÕâΪ¼ÓËÙÊÓÆµ¼ÓÔØ´ø?À´Á˸ïÃüÐԵĸıä¡£HTTP/2ÒýÈëµÄ¶à·¸´ÓÃÊÖÒÕ £¬ÔÊÐíÔÚÒ»¸öTCPÅþÁ¬Éϲ¢Ðд«Êä¶à¸öÊÓÆµÎļþ»òÊý¾Ý¿é £¬ÏÔÖøïÔÌ­ÁËÅþÁ¬½¨ÉèµÄ¿ªÏúºÍÒ³Ãæ¼ÓÔØÊ±¼ä¡£

¶øHTTP/3Ôò½øÒ»²½»ùÓÚQUICЭÒé £¬Í¨¹ý¸ü¿ìµÄÅþÁ¬½¨ÉèËÙÂÊ¡¢Ïû³ý¶ÓÍ·ÛÕ±ÕÒÔ¼°¸üÖÇÄܵÄÓµÈû¿ØÖÆ £¬ÔÚ²»Îȹ̵ÄÍøÂçÇéÐÎÏÂÒ²ÄÜÌṩ¸ü¿É¿¿¡¢¸ü¿ìËÙµÄÊÓÆµ´«Êä¡£¹ØÓÚÊÓÆµµã²¥·þÎñ¶øÑÔ £¬ÕâÒâζ×ÅÓû§¿ÉÒÔÔÚ¼«¶ÌµÄʱ¼äÄÚ×îÏÈԢĿ £¬´ó´óÌáÉýÁËÓû§µÄÖª×ã¶ÈºÍת»¯ÂÊ¡£

¶þ¡¢ÐÔÄܱ¼ÌÚ£ºÄÚ´æ¹ÜÀíÓë²¢·¢´¦Öóͷ£µÄ¼«ÖÂ×·Çó

Á÷ͨµÄÊÓÆµ²¥·ÅÀë²»¿ªÇ¿Ê¢µÄÐÔÄÜÖ§³Ö¡£Nginx×îа汾ÔÚÄÚ´æ¹ÜÀíºÍ²¢?·¢´¦Öóͷ£·½Ãæ¾ÙÐÐÁËÉîÈëµÄÓÅ»¯ £¬Îªº£Á¿²¢·¢ÊÓÆµÇëÇóÌṩÁËǿʢµÄ°ü¹Ü¡£

¸ßЧµÄÄÚ´æ¹ÜÀí»úÖÆ£ºÊÓÆµÁ÷ýÌåÊý¾ÝÁ¿ÖØ´ó £¬¶Ô·þÎñÆ÷ÄÚ´æ×ÊÔ´µÄÐèÇ󼫸ß¡£NginxÔÚ×îаæ?±¾ÖнøÒ»²½¾«Á¶ÁËÆäÄÚ´æ¹ÜÀíÕ½ÂÔ £¬½ÓÄɸüϸÄ廯µÄÄÚ´æ·ÖÅÉÓë½ÓÄÉ»úÖÆ £¬ÓÐÓÃ×èÖ¹ÄÚ´æ×ß© £¬ïÔÌ­ÄÚ´æË鯬 £¬´Ó¶øÌá¸ßÄÚ´æÊ¹ÓÃÂÊ¡£Õâ²»µ«½µµÍÁË·þÎñÆ÷µÄÔËÐб¾Ç® £¬¸üÖ÷ÒªµÄÊÇ £¬Îª³¤Ê±¼ä¡¢¸ß²¢·¢µÄÊÓÆµÈö²¥ÊäÌṩÁËÎȹ̿ɿ¿µÄ×ÊÔ´°ü¹Ü¡£

Í»ÆÆÐԵIJ¢·¢´¦Öóͷ£ÄÜÁ¦£ºNginxÒ»Ö±ÒÔÆä׿ԽµÄ²¢·¢´¦?ÀíÄÜÁ¦Öø³Æ £¬¶ø×îа汾¸üÊǽ«ÕâÒ»ÓÅÊÆÊ©Õ¹µ½?Á˼«Ö¡£Í¨¹ýÊÂÎñÇý¶¯µÄ?Òì²½?·ÇÛÕ±ÕI/OÄ£×Ó £¬NginxÄܹ»ÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄͬʱ´¦Öóͷ£³ÉǧÉÏÍòµÄ?²¢·¢ÅþÁ¬¡£ÕâÒâζ×Å £¬×ÝÈ»ÔÚԢĿá¯ÁëÆÚ £¬Óû§Ò²ÄÜÏíÊܵ½Á÷ͨµÄÊÓÆµ²¥·ÅÌåÑé £¬Àë±ð¿¨¶ÙºÍÆÚ´ý¡£

¹ØÓÚÖ±²¥Æ½Ì¨¡¢µã²¥·þÎñÉ̶øÑÔ £¬ÕâÒâζ×ÅÄܹ»¸üÓÐÓõش¥´ï¸üÆÕ±éµÄÓû§ÈºÌå £¬Ìṩ¸üÓÅÖʵķþÎñ¡£Ï¸Ä廯»º´æÕ½ÂÔ£ºÊÓÆµÄÚÈݵĻº´æÊÇÌáÉý²¥·ÅÁ÷ͨ¶ÈµÄÒªº¦¡£Nginx×îа汾ÌṩÁËÔ½·¢Ï¸Ä廯µÄ»º´æ¿ØÖÆÕ½ÂÔ £¬¿ÉÒÔÆ¾Ö¤ÊÓÆµÎļþµÄÌØÕ÷¡¢Óû§»á¼ûƵÂʵÈ?ÒòËØ £¬ÖÇÄܵص÷½â»º´æÕ½ÂÔ £¬×î´ó»¯»º´æÖÀÖÐÂÊ¡£

Nginx¿ÉÒÔͨ¹ýHTTPЭÒé¸ßЧµØ·Ö·¢ÕâЩÎļþ¡£DASHÓÅ»¯Òªµã£ºÄÚÈݶàÑùÐÔ£ºÈ·±£ÄãµÄNginx·þÎñÆ÷Äܹ»Æ¾Ö¤¿Í»§¶ËÇëÇóµÄAcceptÍ·²¿»òURL²ÎÊý £¬Ìṩ²î±ðÇø·ÖÂʺͱÈÌØÂʵÄÊÓÆµÆ¬¶Ï £¬ÕâÊÇDASHʵÏÖ×Ô˳ӦµÄÒªº¦¡£µÍÑÓ³ÙDASH£¨LL-DASH£©£º¹ØÓÚʵʱÐÔÒªÇó¸ü¸ßµÄ³¡¾° £¬¿ÉÒÔ˼Á¿ÊµÏÖµÍÑÓ³ÙDASH¡£

Nginx¿ÉÒÔͨ¹ýÉèÖÃÀ´Ö§³Ö¸üСµÄ·ÖƬ¾ÞϸºÍ¸ü¿ìµÄ¸üÐÂÆµÂÊ £¬ÒÔïÔÌ­ÑÓ³Ù¡£Ê¹ÓÃngx_http_vhost_traffic_status_module£ºÕâ¸öÄ£¿é¿ÉÒÔ×ÊÖúÄãʵʱ¼à¿ØNginxµÄÁ÷Á¿×´Ì¬ £¬°üÀ¨ÇëÇóÊý¡¢ÅþÁ¬Êý¡¢´ø¿íʹÓÃµÈ £¬¹ØÓÚÃ÷È·DASHÁ÷µÄ·Ö·¢ÇéÐκÜÊÇÓÐ×ÊÖú¡£

RTMP£¨Real-TimeMessagingProtocol£©£ºËäÈ»RTMPÔÚÒÑÍù³£ÓÃÓÚÖ±²¥ £¬µ«Æä»ùÓÚTCPµÄÌØÕ÷ÔÚÍøÂç²»ÎȹÌʱÈÝÒ×·ºÆð¿¨¶Ù £¬ÇÒ²»ÊʺÏÒÆ¶¯¶Ë¡£²»¹ý £¬Nginx¿ÉÒÔͨ¹ýnginx-rtmp-moduleÄ£¿éÀ´Ö§³ÖRTMPЭÒé £¬ÊµÏÖÖ±²¥ÍÆÁ÷ºÍ²¥·Å¡£

¶þ¡¢½¹µãÄ£¿éÆÊÎö£ºNginxÊÓÆµÁ÷ýÌåÄÜÁ¦µÄÒªº¦

Nginx²¢·ÇÌìÉú¾ÍÊÇÊÓÆµÁ÷ýÌå·þÎñÆ÷ £¬µ«ÆäǿʢµÄ?À©Õ¹ÐÔÔÊÐíÎÒÃÇͨ¹ý¼ÓÔØÌØ¶¨µÄÄ£¿éÀ´¸¶ÓëËüǿʢµÄÊÓÆµ´¦Öóͷ£ÄÜÁ¦¡£

RTMPÄ£¿é£ºÖ±²¥µÄ½¹µãÒýÇæ¹ØÓÚʵʱÊÓÆµÁ÷ £¬RTMP(Real-TimeMessagingProtocol)ÊÇÏÖÔÚ×îÖ÷Á÷µÄЭÒéÖ®Ò»¡£Í¨¹ý×°ÖÃnginx-rtmp-module £¬Nginx¿ÉÒÔÇáËÉתÐÍΪǿʢ?µÄRTMP·þÎñÆ÷¡£

ËüÄܹ»ÎüÊÕÀ´×ÔOBS¡¢FFmpegµÈÍÆÁ÷¶ËµÄÊÓÆµÁ÷ £¬²¢½«Æä·Ö·¢¸ø´ó×Ú¹ÛÖÚ¡£Õâ¸öÄ£¿é²»µ«Ö§³ÖRTMPÍÆÁ÷ºÍ²¥·Å £¬»¹ÌṩÁËHLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)µÄתÂëºÍ·Ö·¢ÄÜÁ¦ £¬¼«´óµØÀ©Õ¹ÁËNginxµÄÊÓÆµ´¦Öóͷ£¹æÄ£¡£

HTTPÄ£¿é£ºµã²¥µÄ¼áʵºóÔ®¹ØÓÚÊÓÆµµã²¥ £¬NginxµÄÔ­ÉúHTTPÄ£¿éÒѾ­×㹻ǿʢ¡£Í¨¹ýÉèÖÃsendfileÖ¸Áî £¬Nginx¿ÉÒÔʵÏÖÁ㿽±´µÄÎļþ´«Êä £¬½«ÊÓÆµÎļþÖ±½Ó´Ó´ÅÅÌ·¢Ë͵½ÍøÂç½Ó¿Ú £¬´ó´óïÔÌ­CPUµÄ¿ªÏúºÍÄڴ濽±´µÄ´ÎÊý¡£

aio(AsynchronousI/O)µÄÖ§³Ö½øÒ»²½ÌáÉýÁËNginx´¦?Àí´óÎļþI/OµÄЧÂÊ¡£

ÉèÖÃʾÀý£º

http{#...otherhttpconfigurations...gzipon;gzip_varyon;gzip_proxiedany;gzip_comp_level6;#Compressionlevel(1-9)gzip_typestext/plaintext/cssapplication/jsonapplication/javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;#Browsercachinglocation~*\.(mp4|mkv|avi|flv|mov|wmv)${add_headerCache-Control"public,max-age=31536000,immutable";}location~*\.(css|js|jpg|jpeg|gif|png|svg|ico)${add_headerCache-Control"public,max-age=86400,immutable";}}

ЭÒéÓëÇå¾²¼Ó¹Ì£º

HTTPS£ºÎªÊÓÆµ²¥·ÅÆôÓÃHTTPS £¬È·±£Êý¾Ý´«ÊäµÄ°²?È«ÐÔ¡£DDoS·À»¤£ºÍ¨¹ýNginxµÄÅþÁ¬ÏÞÖÆ(limit_conn)¡¢ÇëÇóƵÂÊÏÞÖÆ(limit_req)µÈÄ£¿é £¬µÖÓùDDoS¹¥»÷¡£HTTP/2&HTTP/3£ºÉý¼¶µ½HTTP/2»òHTTP/3ЭÒé £¬Ê¹Óöà·¸´Óá¢Í·²¿Ñ¹ËõµÈÌØÕ÷ £¬½øÒ»²½ÌáÉý´«?ÊäЧÂÊ £¬ÓÈÆäÊÇÔÚ¸ßÑÓ³ÙÍøÂçÇéÐÎÏ¡£

ÐÔÄÜ¼à¿ØÓëÕï¶Ï£ºÊ¹ÓÃngx_http_stub_status_moduleÄ£¿éÉó²éNginxµÄʵʱÅþÁ¬Êý¡¢ÇëÇóÊýµÈÐÅÏ¢¡£ÍŽáPrometheus,GrafanaµÈ¹¤¾ß¾ÙÐиüÖÜÈ«µÄÐÔÄÜ¼à¿ØºÍÈÕÖ¾ÆÊÎö £¬ÒÔ±ãʵʱ·¢Ã÷Ï¢Õù¾öÐÔÄÜÆ¿¾±¡£

RTMPÄ£¿éÉèÖãº

RTMPÄ£¿é°²?×°£ºNginxĬÈϲ»°üÀ¨RTMPÄ£¿é £¬ÐèҪͨ¹ý±àÒëʱÌí¼Óngx_http_vhost_traffic_status_moduleÄ£¿é»òʹÓÃÔ¤±àÒëµÄ°üÀ¨RTMPÄ£¿éµÄNginx°æ±¾¡£RTMPÁ÷ת·¢£ºNginxµÄRTMPÄ£¿é¿ÉÒÔ×÷Ϊֱ²¥Á÷µÄ½ÓÈëµã £¬½«ÍÆÁ÷µÄRTMPÐźÅת·¢µ½ºó¶ËÁ÷ýÌå·þÎñÆ÷£¨ÈçSRS,FFmpeg,WowzaµÈ£© £¬»òÕßÖ±½Ó¾ÙÐзַ¢¡£

ÉèÖÃrtmp¿é £¬ÉèÖÃserver¡¢listen¡¢applicationµÈ²ÎÊý £¬²¢Ê¹ÓÃpush»òrelayÖ¸ÁîʵÏÖÁ÷µÄת·¢¡£´øÍÑÆÚÖÆºÍÅþÁ¬ÊÜÀí£ºRTMPÄ£¿éÒ²Ö§³ÖһЩ»ù±¾µÄÁ÷Á¿¿ØÖÆ £¬ÀýÈçͨ¹ýclient_limitºÍstream_limitÀ´ÏÞÖÆÍ³Ò»¿Í»§¶Ë»òͳһÁ÷µÄ×î´óÅþÁ¬Êý £¬ÓÐÖúÓÚ±ÜÃâ¶ñÒâ¹¥»÷ºÍ°ü¹ÜÖ±²¥µÄÎȹÌÐÔ¡£

Nginx100%ÊÓÆµÐÔÄÜ£º²»µ«½öÊÇWeb·þÎñÆ÷ £¬¸üÊÇÁ÷ýÌåµÄÍõÕß

ÔÚµ±½ñÐÅÏ¢±¬?Õ¨µÄʱ´ú £¬ÊÓÆµÄÚÈÝÒÑÈ»³ÉΪÐÅÏ¢Èö²¥ºÍÓéÀÖÏûºÄµÄÖ÷Á÷¡£´Ó¸ßÇåÓ°Ï·¡¢ÔÚÏ߿γ̵½Ö±²¥»¥¶¯ £¬Óû§¶ÔÊÓÆµµÄÁ÷ͨ¶ÈºÍ¼ÓÔØËÙÂÊÓÐ׎üºõ¿Á¿ÌµÄÒªÇó¡£¶øÔÚÕⳡºäºäÁÒÁÒµÄ?Á÷ýÌå¸ïÖÀÖÐ £¬Nginx £¬Õâ¸öÒÔ¸ßÐÔÄÜ¡¢¸ß²¢·¢Öø³ÆµÄWeb·þÎñÆ÷ £¬ÕýÒÀ¸½ÆäǿʢµÄÄÜÁ¦ £¬Öð½¥ÏÔ¶³öÆäÔÚÊÓÆµÁ÷ýÌåÁìÓò¡°ÍõÕß¡±µÄDZÖÊ¡£

Ðí¶àÈË¿ÉÄÜÖ»½«NginxÊÓΪ°²ÅÅÍøÕ¾µÄÀûÆ÷ £¬Êâ²»Öª £¬Í¨¹ý¾«ÃîµÄÉèÖúÍÉîÈëµÄÃ÷È· £¬NginxÄܹ»½«ÊÓÆµ´«ÊäµÄÐÔÄÜÌáÉýÖÁ¼«Ö £¬ÊµÏÖ¿¿½ü¡°100%¡±µÄÐÔÄÜÌåÏÖ¡£Õâ²¢?·Ç¿äÕŵÄÐû´« £¬¶øÊÇ»ùÓÚNginxÆæÒì¼Ü¹¹ºÍ¸»ºñÄ£¿éµÄÉî¶ÈÍÚ¾ò¡£

µÚÒ»Õ£ºNginxµÄÊÓÆµÓÅ»¯»ùʯ£ºÃ÷È·½¹µãÓë»ù´¡ÉèÖÃ

ҪʵÏÖNginxµÄÊÓÆµÓÅ»¯ £¬Ê×ÏÈÐèÒª¶ÔÆä½¹µãÄÜÁ¦ºÍ»ù´¡ÉèÖÃÓÐÉî¿ÌµÄÃ÷È·¡£NginxÖ®ÒÔÊÇÄÜÔڸ߲¢?·¢³¡¾°ÏÂÌåÏÖ¾«²Ê £¬Àë²»¿ªÆäÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄI/OÄ£×Ó¡£ÕâÒâζ×ÅNginx¿ÉÒÔÓýÏÉÙµÄÀú³ÌºÍÏ̴߳¦Öóͷ£´ó×ڵIJ¢·¢ÅþÁ¬ £¬¼«´óµØÌá¸ßÁË×ÊԴʹÓÃÂʺÍÏìÓ¦ËÙÂÊ £¬Õâ¹ØÓÚÐèÒªÒ»Á¬¡¢Îȹ̴«Êä´ó×ÚÊý¾ÝµÄÊÓÆµÁ÷À´ËµÖÁ¹ØÖ÷Òª¡£

1.1¾²Ì¬Îļþ·þÎñµÄ?ЧÂÊÓÅ»¯£ºËäÈ»ÊÓÆµÁ÷ýÌåÍùÍùÉæ¼°¶¯Ì¬ÄÚÈݵÄÌìÉúºÍ´¦?Àí £¬µ«Æä×îÖյĴ«ÊäÔØÌåÈÔÈ»ÊǾ²Ì¬Îļþ£¨ÈçHLSµÄ.tsÇÐÆ¬ £¬DASHµÄ.mp4»ò.m4sÎļþ£©¡£NginxÔÚ¾²Ì¬Îļþ·þÎñ·½ÃæµÄÄÜÁ¦ÎãÓ¹ÖÃÒÉ¡£

aioÖ¸Áî:¹ØÓÚʹÓÃNginxPlus»òÔÚÖ§³Ö?AIO(AsynchronousI/O)µÄ²Ù×÷ϵͳÉÏ £¬ÆôÓÃaioon;¿ÉÒÔ½øÒ»²½ÌáÉý´óÎļþI/OµÄÐÔÄÜ £¬ÓÈÆäÊÇÔÚ´¦Öóͷ£´ó×ÚСÎļþ£¨ÈçHLSµÄtsÇÐÆ¬£©Ê± £¬¿ÉÒÔÓÐÓÃïÔÌ­I/OÛÕ±Õ¡£

openfilecacheÖ¸Áî:»º´æ·­¿ªµÄÎļþÐÎò·ûºÍÔªÊý¾Ý £¬×èÖ¹ÁËÆµÈԵط­¿ªºÍ¹Ø±ÕÎļþ £¬Ìá¸ßÁËÎļþ»á¼ûµÄËÙÂÊ¡£open_file_cachemax=1000inactive=20s;µÈÉèÖÿÉÒÔÆ¾Ö¤ÏÖÕæÏàÐξÙÐе÷½â¡£

Ò»¡¢Nginx¼Ü¹¹ÓÅÊÆ£ºÎªÊÓÆµ´«ÊäÁ¿Éí´òÔì

NginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµ´«?ÊäÁìÓòÍÑÓ±¶ø³ö £¬Ô´ÓÚÆäÆæÒìµÄ?Éè¼Æ¼Ü¹¹¡£Óë¹Å°åµÄApache·þÎñÆ÷²î±ð £¬Nginx½ÓÄɵÄÊÇÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄÊÂÇéģʽ¡£ÕâÒâζ×ÅNginx¿ÉÒÔÓÃÉÙÉÙµÄÀú³Ì»òÏß³Ì? £¬Í¬Ê±´¦Öóͷ£³ÉǧÉÏÍò¸ö²¢·¢ÅþÁ¬ £¬¶øÎÞÐèΪÿ¸öÅþÁ¬½¨Éè×ÔÁ¦µÄÀú³Ì»òÏß³Ì £¬´Ó¶ø¼«´óµØ½µµÍÁËϵͳ×ÊÔ´ÏûºÄ £¬ÏÔÖøÌáÉýÁË´¦Öóͷ£ÄÜÁ¦¡£

ÊÂÎñÇý¶¯Ä£×Ó£ºNginx½«I/O²Ù×÷ÁýͳΪÊÂÎñ £¬µ±Ò»¸öÅþÁ¬ÐèÒª¾ÙÐÐI/O²Ù×÷ʱ £¬Nginx²»»áÛÕ±ÕÆÚ´ý £¬¶øÊǽ«¸ÃÅþÁ¬·ÅÈëÊÂÎñÐÐÁÐ £¬¼ÌÐø´¦Öóͷ£ÆäËûÅþÁ¬¡£µ±I/O²Ù×÷Íê³Éʱ £¬ÏµÍ³»á֪ͨNginx £¬NginxÔÙ»ØÀ´´¦Öóͷ£¸ÃÅþÁ¬¡£

ÕâÖÖģʽʹµÃNginxÄܹ»¸ßЧµØ´¦Öóͷ£´ó×Ú²¢·¢ÅþÁ¬ £¬ÓÈÆäÊÊÓÃÓÚÊÓÆµÁ÷ÕâÖÖÐèÒªÒ»Á¬¡¢ÎȹÌÅþÁ¬µÄ³¡¾°¡£Òì²½·ÇÛÕ±ÕI/O£ºNginxʹÓÃepoll(Linux)»òkqueue(BSD)µÈ¸ßЧµÄI/O¶à·¸´ÓûúÖÆ £¬Äܹ»Í¬Ê±¼àÌý¶à¸öÍøÂçÐÎò·û £¬¶øÎÞÐèΪÿ¸öÐÎò·û½¨Éèµ¥¶ÀµÄÏ̡߳£

3.GzipºÍBrotliѹËõ£ºÎª¸¨Öú×ÊÔ´ÊÝÉí

ËäÈ»ÊÓÆµ×Ô¼ºÄÑÒÔѹËõ £¬µ«ÊÓÆµ²¥·ÅÁÐ±í£¨.m3u8,.mpd£©ºÍ×ÖÄ»ÎļþµÈ¸¨Öú×ÊÔ´ £¬È´¿ÉÒÔÊÜÒæÓÚGzip»òBrotliѹËõ¡£

http{gzipon;gzip_typestext/plaintext/cssapplication/jsonapplication/javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascriptimage/svg+xml;gzip_comp_level6;gzip_min_length1024;#ÈôÊÇ×°ÖÃÁËBrotliÄ£¿é £¬¿ÉÒÔ˼Á¿Ê¹ÓÃBrotli#brotlion;#brotli_typestext/plaintext/cssapplication/jsonapplication/javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascriptimage/svg+xml;#brotli_comp_level4;#brotli_min_length1024;#...ÆäËûÉèÖÃ...}gzipon;:ÆôÓÃGzipѹËõ¡£

Nginx£ºÎªºÎÊÇÊÓÆµ·Ö·¢µÄ?½¾×Ó£¿

ÎÒÃÇÐèÒªÃ÷È·NginxµÄ½¹µãÓÅÊÆ¡£NginxÒÔÆäÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄÍøÂçÄ£×Ó¶øÖøÃû £¬ÕâÒâζ×ÅËüÔÚ´¦Öóͷ£¸ß²¢·¢ÅþÁ¬Ê± £¬Äܹ»ÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄ £¬Ìṩ׿ԽµÄÐÔÄÜ¡£¹Å°å·þÎñÆ÷ÔÚ´¦Öóͷ£Ã¿¸öÅþÁ¬Ê± £¬¶¼ÐèÒª½¨ÉèÒ»¸ö×ÔÁ¦µÄÀú³Ì»òÏß³Ì £¬ÕâÔڸ߲¢·¢³¡¾°Ï»áѸËٺľ¡ÏµÍ³×ÊÔ´¡£

¶øNginx½ÓÄɵÄ?¡°¶àÀú³Ì/µ¥Ïß³Ì+ÊÂÎñÇý¶¯¡±Ä£Ê½ £¬Ê¹µÃÒ»¸öÖ÷Àú³Ì¿ÉÒÔ¹ÜÀí¶à¸öÊÂÇéÀú³Ì £¬Ã¿¸öÊÂÇéÀú³ÌÓÖ¿ÉÒÔͨ¹ýepoll/kqueueµÈ¸ßЧµÄI/O¶à·¸´ÓûúÖÆ £¬Í¬Ê±´¦Öóͷ£³ÉǧÉÏÍòµÄÅþÁ¬¡£

¹ØÓÚÊÓÆµ·Ö·¢¶øÑÔ £¬ÕâÒâζ×Åʲô£¿ÊÓÆµÎļþͨ³£½Ï´ó £¬Óû§²¢·¢Ô¢Ä¿Á¿ÖØ´ó £¬¶Ô·þÎñÆ÷µÄÍÌÍÂÁ¿ºÍÅþÁ¬ÊÜÀíÄÜÁ¦Ìá³ö?Á˼«¸ßµÄÒªÇó¡£NginxµÄÕâÖּܹ¹ £¬Ç¡Ç¡Äܹ»¸ßЧµØÓ¦¶ÔÕâЩÌôÕ½¡£ËüÄܹ»ÇáËɵش¦Öóͷ£ÊýÍòÉõÖÁÊýÊ®ÍòµÄ²¢·¢ÅþÁ¬ £¬ÎªÃ¿¸öԢĿÕßÌṩÎȹ̡¢¿ìËÙµÄÊÓÆµÁ÷¡£

HTTPЭÒéϵÄÊÓÆµ·Ö·¢£ºÌôÕ½ÓëNginxµÄ½â¾ö¼Æ»®

ÔçÆÚµÄÊÓÆµ·Ö·¢Ö÷ÒªÒÀÀµÓÚHTTPЭÒé¡£ËäÈ»HTTPЭÒéµÄÓ¦ÓÃÆÕ±é £¬µ«ÆäÔÚÊÓÆµÁ÷ýÌå´«Êä·½ÃæÒ²±£´æÒ»Ð©¹ÌÓеÄÌôÕ½ £¬ÀýÈ磺

²¢·¢ÅþÁ¬µÄ¹ÜÀí£ºworker_processes¡¢worker_connectionsÊÇNginx´¦Öóͷ£¸ß²¢·¢µÄÒªº¦²ÎÊý¡£ÐèҪƾ֤·þÎñÆ÷CPU½¹µãÊýºÍÄÚ´æ¾ÞϸÀ´ºÏÀíÉèÖá£keepalive_timeoutµÄÉèÖÃÒ²Ó°Ïì×ÅÅþÁ¬µÄ¸´ÓÃÂÊ¡£

»º´æÕ½ÂÔµÄÓÅ»¯£º¹ØÓÚ¸ßÆµ»á¼ûµÄÊÓÆµ £¬Ê¹ÓÃNginxµÄproxy_cache¹¦Ð§¿ÉÒÔ¼«´óµØ¼õÇáºó¶Ë·þÎñÆ÷µÄѹÁ¦¡£ÉèÖúÏÀíµÄ»º´æ¼ü¡¢»º´æÓâÆÚʱ¼äÒÔ¼°»º´æÄÚÈÝ £¬Äܹ»ÏÔÖøÌáÉýµã²¥µÄÏìÓ¦ËÙÂÊ¡£

Ó²¼þÓëÍøÂçµÄЭͬ£ºNginxµÄÐÔÄÜʩչҲÊܾ¿¾¹²ãÓ²¼þºÍÍøÂçÇéÐεÄÖÆÔ¼¡£SSDÓ²ÅÌ¡¢¸ß´ø¿íÍø¿¨¡¢µÍÑÓ³ÙµÄÍøÂçÅþÁ¬ £¬ÒÔ¼°ÓÅ»¯µÄÍøÂçЭÒéÕ» £¬¶¼ÊÇʵÏÖ¡°100%¡±ÊÓÆµÐÔÄܲ»¿É»òȱµÄ×é³É²¿·Ö¡£

Nginx100%ÊÓÆµÐÔÄÜ£º´Ó»ù´¡?ÉèÖõ½¸ß¼¶½ø½×µÄÈ«·½Î»ÆÊÎö

ÔÚÉÏÒ»²¿·Ö £¬ÎÒÃÇÉîÈë̽ÌÖÁËNginxÔÚÊÓÆµÁ÷ýÌåÁìÓòµÄ½¹µãÓÅÊÆ¼°×ÅʵÏÖ¡°100%¡±ÐÔÄܵÄÀíÂÛ»ù´¡¡£ÏÖÔÚ £¬ÎÒÃǽ«¾Û½¹ÓÚÏêϸµÄʵ¼ù²ã?Ãæ £¬´Ó»ù´¡ÉèÖÃÈëÊÖ £¬Öð²½½ø½×µ½¸ü¸ß¼¶µÄÓÅ»¯¼¼ÇÉ £¬×ÊÖúÄúÕæÕý½âËøNginxµÄÊÓÆµÁ÷ýÌåDZÁ¦¡£

4.CDN¼¯³É£º½«ÄÚÈÝÍÆË͵½ÀëÓû§×î½üµÄµØ·½

¹ØÓÚÃæÏòÈ«ÇòÓû§µÄÊÓÆµ·þÎñ £¬ÓëCDN(ContentDeliveryNetwork)¼¯³ÉÊDZز»¿ÉÉٵġ£Nginx¿ÉÒÔ×÷ΪCDNµÄ»ØÔ´·þÎñÆ÷ £¬»òÕßÖ±½Ó×÷Ϊ±ßÑØ½Úµã°²ÅÅ¡£

×÷Ϊ»ØÔ´·þÎñÆ÷:ÉèÖÃNginxµÄproxy_cacheÖ¸ÏòCDNµÄ»º´æ½Úµã £¬µ±CDN½Úµã»º´æÊ§Ð§Ê± £¬ÇëÇó»á»ØÔ´µ½Nginx¡£×÷Ϊ±ßÑØ½Úµã:Ö±½Ó°²ÅÅNginx×÷ΪCDNµÄ±ßÑØ½Úµã £¬³ä·ÖʹÓÃNginxµÄ¸ßÐÔÄÜ»ººÍ´æÄÜÁ¦ £¬ÎªÓû§Ìṩ×î¿ìËÙÂʵÄÊÓÆµ·þÎñ¡£

6.Õë¶ÔÐÔÓÅ»¯£ºHLS/DASHÓëÊÓÆµ·ÖƬսÂÔ

¹ØÓÚÁ÷ýÌåÊÓÆµ £¬ÓÈÆäÊǵ㲥ºÍÖ±²¥? £¬Í¨³£½ÓÄÉHTTPLiveStreaming(HLS)»òMPEG-DASHµÈ?Á÷ýÌåЭÒé £¬½«ÊÓÆµÖ§½â³ÉСµÄýÌ寬¶Ï£¨segments£©¡£NginxÔÚ´Ë?Àú³ÌÖÐÊÎÑÝ×ÅÖÁ¹ØÖ÷ÒªµÄ½ÇÉ«¡£

¸ßЧµÄÇÐÆ¬·þÎñ£ºNginxÐèÒªÄܹ»¿ìËÙ¡¢Îȹ̵ØÏìÓ¦¶ÔÕâЩýÌ寬¶ÏµÄÇëÇó¡£Í¨¹ýÇ°ÃæÌáµ½µÄ»º´æ¡¢´ø¿í¿ØÖÆÒÔ¼°HTTP/2/3ÓÅ»¯ £¬NginxÄܹ»¸ßЧµØÌṩÕâЩСÎļþ¡£M3U8/MPDÎļþ¹ÜÀí£ºHLSЭÒéʹÓÃ.m3u8Îļþ×÷Ϊ²¥?·ÅÁбí £¬DASHʹÓÃ.mpdÎļþ¡£

NginxÐèÒªÄܹ»×¼È·µØÌṩÕâЩÎļþ £¬²¢È·±£ÆäʱЧÐÔ¡£¿ÉÒÔͨ¹ýNginxµÄalias»òrewriteÖ¸ÁîÀ´ÓÅ»¯ÕâЩÎļþµÄ?»á¼û·¾¶¡£¶¯Ì¬ÄÚÈÝÌìÉú£ºÔÚijЩ¸ß¼¶³¡¾°Ï £¬.m3u8»ò.mpdÎļþ¿ÉÄÜÐèÒª¶¯Ì¬ÌìÉú £¬ÒÔ·´Ó¦ÊµÊ±µÄ²¥·ÅÁбíת±ä£¨ÀýÈç £¬Ö±²¥ÖÐÐÂÇÐÆ¬µÄÌí¼Ó£©¡£

Nginx¿ÉÒÔͨ¹ýÓëºó¶ËÓ¦Ó÷þÎñÆ÷£¨ÈçPHP¡¢Python¡¢Go£©¼¯³É £¬ÊµÏÖ¶¯Ì¬ÄÚÈݵÄÌìÉúºÍ·Ö·¢¡£

ËÄ¡¢Î´À´Õ¹Íû£ºNginxÔÚÊÓÆµÁìÓòµÄ?ÎÞÏÞ¿ÉÄÜ

Nginx²¢·ÇÕϰ­²»Ç° £¬Æä¿ª·¢ÕßÉçÇøºÍÉÌÒµ°æ±¾NginxPlus¶¼ÔÚ³Ö?ÐøÍÆ¶¯ÆäÔÚÊÓÆµÁìÓòµÄÄÜÁ¦½çÏß¡£

HTTP/3µÄÖÜÈ«ÆÕ¼°£ºËæ×ÅQUICЭÒéµÄ³ÉÊìºÍä¯ÀÀÆ÷Ö§³ÖµÄÆÕ¼° £¬HTTP/3½«³ÉΪNginx´¦Öóͷ£ÊÓÆµÁ÷Á¿µÄ±ê׼ЭÒé £¬´øÀ´¸ü¿ìµÄÅþÁ¬½¨ÉèËÙÂʺ͸üÇ¿µÄÍøÂç˳ӦÐÔ¡£WebRTCµÄÉî¶È¼¯³É£º¹ØÓÚµÍÑÓ³ÙÖ±²¥¡¢ÊµÊ±»¥¶¯ÊÓÆµµÈ³¡¾° £¬WebRTCµÄ¼¯³É½«ÊÇÖ÷ÒªµÄÉú³¤Æ«Ïò¡£

NginxÓÐÍû³ÉΪWebRTCýÌå·þÎñÆ÷µÄÖ÷Òª×é³É²¿·Ö £¬Ìṩ¸üǿʢµÄÐÅÁýÌåת·¢ºÍ¹ÜÀíÄÜÁ¦¡£AIÓëÊÓÆµÆÊÎöµÄÍÅ½á£ºËæ×ÅAIÊÖÒÕµÄÉú³¤ £¬ÊÓÆµÄÚÈÝÆÊÎö£¨ÈçÄÚÈÝʶ±ð¡¢ÖÇÄÜÍÆ¼ö£©½«±äµÃÔ½À´Ô½Ö÷Òª¡£Nginx¿ÉÒÔ×÷ΪÊý¾ÝÍøÂçºÍÆðÔ´´¦Öóͷ£µÄÈë¿Ú £¬ÓëAIÄ£×ÓЭͬÊÂÇé £¬ÎªÊÓÆµÄÚÈÝÆ½Ì¨Ìṩ¸üÖÇÄܵķþÎñ¡£

ÔÆÔ­ÉúÓë΢·þÎñ¼Ü¹¹µÄ˳Ӧ£ºÔÚÔÆÔ­ÉúºÍ΢·þÎñÊ¢ÐеĽñÌì £¬Nginx×÷Ϊ±ßÑØ´úÀí¡¢APIÍø¹ØµÄ½ÇÉ«½«Óú·¢Ö÷Òª¡£ÆäÇáÁ¿¼¶¡¢¸ßÉìËõÐÔµÄÌØµã £¬Ê¹ÆäÄܹ»ÍêÉÆÈÚÈëÖÖÖÖÔÆÆ½Ì¨ºÍÈÝÆ÷»¯°²ÅÅÇéÐÎÖÐ £¬ÎªÊÓÆµ·þÎñµÄµ¯ÐÔÉìËõÌṩ֧³Ö¡£¸üÖÇÄܵÄÁ÷Á¿µ÷ÀíÓëÓÅ»¯£ºÎ´À´ £¬Nginx¿ÉÄܻἯ³É¸üÏȽøµÄÁ÷Á¿µ÷ÀíËã·¨ £¬Äܹ»Æ¾Ö¤ÊµÊ±ÍøÂç״̬¡¢Óû§×°±¸ÄÜÁ¦ÒÔ¼°ÄÚÈÝÀàÐÍ £¬¶¯Ì¬µ÷½â´«ÊäÕ½ÂÔ £¬ÊµÏÖ¡°100%ÊÓÆµÁ÷Á¿¡±µÄ?ÖÇÄÜÓÅ»¯¡£

Nginx½ÓÄÉÁËÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄI/OÄ£×Ó £¬ÌØÊâÊÇ»ùÓÚepoll»úÖÆ £¬Äܹ»¸ßЧµØ´¦Öóͷ£´ó×Ú²¢·¢ÅþÁ¬¡£¹ØÓÚÊÓÆµ´«Êä¶øÑÔ £¬ÕâÒâζ×Åʲô£¿ÏëÏóһϠ£¬µ±³ÉǧÉÏÍòµÄÓû§Í¬Ê±Ô¢Ä¿Í³Ò»³¡Ö±²¥ £¬»òÕßÏÂÔØ¸ßÇåӰϷʱ £¬·þÎñÆ÷ÐèҪͬʱά³Ö´ó×ÚµÄÅþÁ¬ £¬²¢ÊµÊ±´«ÊäÊý¾Ý¡£

¹Å°åµÄÛÕ±ÕʽI/OÄ£×ÓÔÚÕâÖÖ³¡¾°Ï»᲻¿°Öظº £¬µ¼ÖÂÅþÁ¬³¬Ê±¡¢ÏìÓ¦»ºÂý £¬Óû§ÌåÑéÖ±ÏßϽµ¡£¶øNginxµÄepollÄ£×Ó £¬Äܹ»ÔÚÒ»¸öÏß³ÌÖйÜÀí³É°ÙÉÏǧµÄÅþÁ¬ £¬µ±Ä³¸öÅþÁ¬ÓÐÊý¾Ý¿É¶Á»ò¿Éдʱ £¬ÏµÍ³»á֪ͨ¸ÃÏß³Ì £¬´Ó¶ø×èÖ¹ÁË´ó×ÚµÄÏ߳̽¨ÉèºÍÉÏÏÂÎÄÇл»¿ªÏú¡£

×îа汾µÄNginx £¬ÔÚepollµÄ?µ÷ÀíËã·¨ºÍ×ÊÔ´·ÖÅÉÉϾÙÐÐÁ˽øÒ»²½µÄ?ϸÄåµ÷ÓÅ £¬Ê¹µÃÔÚ´¦Öóͷ£ÊÓÆµÕâÀàÒ»Á¬¡¢´óÊý¾ÝÁ¿µÄ´«Êäʱ £¬Äܹ»Ô½·¢ÓÎÈÐÓÐÓà £¬È·±£Ã¿¸öÓû§µÄÅþÁ¬¶¼ÄÜ»ñµÃʵʱÏìÓ¦ £¬ÊµÏÖ¡°100%ÊÓÆµÓÅ»¯¡±µÄÎȹ̻ùʯ¡£

2.HTTP/2ºÍHTTP/3µÄÖÜȫӵ±§£ºÌáËÙÊÓÆµ¼ÓÔØµÄÒªº¦

HTTPЭÒéÊÇ»¥ÁªÍøÍ¨Ñ¶µÄ»ù´¡ £¬¶øHTTP/2ºÍHTTP/3µÄ·ºÆð £¬¸üÊÇÎªÍøÂç´«Êä´øÀ´Á˸ïÃüÐÔµÄÌáÉý¡£Nginx×îа汾¶ÔÕâЩÐÂЭÒéµÄÖ§³Ö £¬ÊÇʵÏÖÊÓÆµÓÅ»¯µÄÁíÒ»ÏîÖ÷ÒªÐж¯?¡£

ÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕÄ£×Ó£ºÕâÊÇNginx×îΪÈ˸èË̵ÄÌØÕ÷¡£Óë¹Å°åµÄÀú³Ì/Ïß³ÌÄ£×Ó²î±ð £¬Nginx½ÓÄÉÒ»¸öÖ÷Àú³ÌºÍ¶à¸öÊÂÇéÀú³ÌµÄģʽ¡£Ö÷Àú³ÌÈÏÕæ¶ÁÈ¡ÉèÖÃÎļþ¡¢¹ÜÀíÊÂÇéÀú³Ì £¬¶øÊÂÇéÀú³ÌÔòͨ¹ýÊÂÎñÇý¶¯µÄ»úÖÆ £¬¸ßЧµØ´¦Öóͷ£´ó×ڵIJ¢·¢ÅþÁ¬¡£µ±Ò»¸öÅþÁ¬ÓÐI/O²Ù×÷ʱ £¬Nginx²»?»áÛÕ±Õ £¬¶øÊǽ«¸ÃÅþÁ¬µÄÊÂÎñ½»¸ø²Ù×÷ϵͳ £¬ÐÐÖ¹ÖÃÆäËûÅþÁ¬ £¬±È¼°I/O²Ù×÷Íê³Éºó £¬ÔÙ»ØÀ´´¦Öóͷ£¡£

ÕâÖÖÄ£×Ó¼«´óµØïÔÌ­ÁËCPUºÍÄÚ´æµÄÏûºÄ £¬Ê¹µÃNginxÄܹ»ÒÔ¼«µÍµÄ×ÊÔ´Õ¼Óà £¬Ö§³ÖÆðº£Á¿µÄ²¢·¢ÅþÁ¬ £¬Õâ¹ØÓÚÐèҪͬʱ´¦Öóͷ£³ÉǧÉÏÍò¸öÊÓÆµÁ÷ÇëÇóµÄ³¡¾°ÖÁ¹ØÖ÷Òª¡£

ÄÚ´æÁ㿽±´£¨Zero-copy£©£ºÔÚÎļþ´«ÊäÀú³ÌÖÐ £¬¹Å°å·½·¨ÍùÍùÐèÒª¶à´ÎÊý¾Ý¸´ÖÆ £¬´Ó´ÅÅ̵½Äں˻º³åÇø £¬ÔÙµ½Óû§»º³åÇø £¬×îºóµ½ÍøÂ绺³åÇø¡£Nginxͨ¹ýsendfile()ϵͳŲÓà £¬ÊµÏÖÁËÄÚ´æ?Á㿽±´¡£ÕâÒâζ×ÅÊý¾Ý¿ÉÒÔÖ±½Ó´Ó´ÅÅ̵ÄÒ³»º´æ¸´ÖƵ½ÍøÂçÕ»µÄÌ×½Ó×Ö»º³åÇø £¬ÎÞÐè¾­ÓÉÓû§¿Õ¼äµÄ¸´ÖÆ £¬´ó´óÌá¸ßÁËÊý¾Ý´«ÊäµÄЧÂÊ £¬½µµÍÁËCPU¸ºÔØ¡£

¹ØÓÚ´«Êä´ó×ÚÊÓÆµÊý¾ÝµÄ?³¡¾° £¬ÕâÄÜ´øÀ´ÏÔÖøµÄÐÔÄÜÌáÉý¡£

»º´æÕ½ÂÔµÄϸÄ廯£º

proxy_cache£º¹ØÓÚCDN³¡¾° £¬ÉèÖÃproxy_cache_key¡¢proxy_cache_valid¡¢proxy_cache_min_usesµÈ²ÎÊý £¬Ï¸Äå¿ØÖÆ»º´æµÄÄÚÈݺÍʱ³¤¡£open_file_cache£º»º´æ·­¿ªµÄÎļþÐÎò·ûºÍÔªÊý¾Ý £¬ïÔÌ­open()ºÍstat()µÈϵͳŲÓà £¬Ìá¸ßÎļþ»á¼ûËÙÂÊ¡£

open_file_cachemax=1000inactive=20s;open_file_cache_valid30s;open_file_cache_min_uses2;open_file_cache_errorsoff;

¸ºÔØÆ½ºâÓë¸ß¿ÉÓ㺵±µ¥Ì¨·þÎñÆ÷ÎÞ·¨Öª×ãÐèÇóʱ £¬NginxµÄ¸ºÔØÆ½ºâÄÜÁ¦¾ÍÏÔµÃÓÈΪÖ÷Òª¡£Í¨¹ýupstreamÄ£¿é £¬¿ÉÒÔ½«Á÷Á¿·Ö·¢µ½¶ą̀ºó¶Ë·þÎñÆ÷ £¬²¢ÅäºÏkeepaliveºÍhealth_checkÄ£¿é £¬ÊµÏָ߿ÉÓÃÐÔ¡£

upstreamvideo_backend{serverbackend1.example.com;serverbackend2.example.com;#...}server{#...location/{proxy_passhttp://video_backend;#...»º´æºÍÆäËû´úÀíÉèÖÃ...}}

NginxÔÚÊÓÆµÈö²¥ÊäÖеÄÏêϸӦÓÃ

³ýÁË»ù´¡ÉèÖà £¬NginxÔÚ´¦Öóͷ£Ìض¨ÊÓÆµÁ÷ЭæÅºÍ³¡¾°Ê± £¬ÉÐÓиü½øÒ»²½µÄÓÅ»¯ºÍÓ¦Óá£

RTMPÄ£¿é£ºNginx²¢²»Ö±½ÓÖ§³ÖRTMPЭÒé £¬µ«¿ÉÒÔͨ¹ýµÚÈý·½Ä£¿é£¨Èçnginx-rtmp-module£©À´ÊµÏÖÖ±²¥Á÷µÄÍÆÀ­¡£¸ÃÄ£¿éÔÊÐíNginx×÷ΪRTMP·þÎñÆ÷ £¬ÎüÊÕÀ´×ÔÖ±²¥Ô´µÄÊÓÆµÁ÷ £¬²¢½«Æä·Ö·¢¸ø´ó×Ú¹ÛÖÚ¡£ÕâʹµÃNginxÄܹ»³ÉΪһ¸öǿʢÇÒÎÞаµÄÖ±²¥½â¾ö¼Æ»®¡£

HLS/DASHÁ÷ýÌåÖ§³Ö£ºNginx¿ÉÒÔºÜÊǸßЧµØ·Ö·¢HLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)ÕâÁ½ÖÖÖ÷Á÷µÄ×Ô˳Ӧ±ÈÌØÂÊÁ÷ýÌåЭÒé¡£

ÕâЩЭÒ齫ÊÓÆµÖ§½â³ÉСƬ¶Ï £¬²¢Ê¹ÓÃHTTP¾ÙÐд«Êä £¬NginxµÄ¸ßÍÌÍÂÁ¿ºÍµÍÑÓ³ÙÌØÕ÷ʹÆä³ÉΪ·Ö·¢ÕâЩƬ¶ÏµÄÀíÏëÑ¡Ôñ¡£CDN¼¯³É£ºNginx¾­³£×÷ΪCDN(ContentDeliveryNetwork)µÄ±ßÑØ½Úµã¡£Í¨¹ýÔÚÈ«Çò°²ÅÅNginx·þÎñÆ÷ £¬½«ÊÓÆµÄÚÈÝ»º´æµ½ÀëÓû§×î½üµÄ½Úµã £¬¿ÉÒÔÏÔÖø½µµÍÑÓ³Ù £¬ÌáÉýԢĿÌåÑé £¬²¢ÊèÉ¢Ô´Õ¾µÄѹÁ¦¡£

*¸ß¼¶ÓÅ»¯¼¼ÇÉ£ºÈÃNginxÊÓÆµÐÔÄܸüÉÏÒ»²ãÂ¥*

6.¶¯Ì¬ÊÓÆµÁ÷ÓÅ»¯(HLS/DASH)

¹ØÓÚHLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)µÈ×Ô˳Ӧ±ÈÌØÂÊÁ÷ýÌåЭÒé £¬NginxͬÑùÌåÏÖ¾«²Ê¡£Æä¸ßЧµÄÎļþ´«ÊäÄÜÁ¦¿ÉÒÔÈ·±£.ts»ò.m4sµÈýÌå·ÖƬÄܹ»¿ìËÙ¡¢Îȹ̵ش«Ê䏸Óû§¡£

ÅäºÏ»º´æ £¬×ÝÈ»ÊÇԢĿÈÈÃÅÊÓÆµ £¬Ò²Äܰü¹Ü¼«¸ßµÄ²¢·¢³ÐÔØÄÜÁ¦¡£

ͨ¹ýÒÔÉÏÕâЩÉèÖÃÕ½ÂÔµÄ×éºÏÓ¦Óà £¬Äú¿ÉÒÔ³ä·ÖÍÚ¾òNginxµÄDZÁ¦ £¬´òÔìÒ»¸öÐÔÄÜ׿Խ¡¢ÌåÑ鼫ÖµÄÊÓÆµ·þÎñƽ̨¡£Àë±ð¿¨¶Ù £¬Óµ±§Á÷ͨ £¬ÈÃÄúµÄÓû§ÔÚԢĿÊÓÆµÊ± £¬ÏíÊܵ½Ø¨¹ÅδÓеijÁ?½þʽÌåÑ飡

Nginx100%ÊÓÆµ´«Ê䣺мÍÔªµÄ»ùʯ £¬¼«ÖÂÁ÷ͨµÄÔÊÐí

ÔÚÐÅÏ¢±¬Õ¨µÄ½ñÌì £¬ÊÓÆµÒÑÈ»³ÉΪÎÒÃÇÏàͬ¡¢ÓéÀÖ¡¢Ñ§Ï°µÄ½¹µãÔØÌå¡£´Ó¸ßÇåÓ°Ï·¡¢ÊµÊ±Ö±²¥µ½ÔÚÏß½ÌÓý £¬Óû§¶ÔÊÓÆµÌåÑéµÄÒªÇó´ÓÎ´ÔÆÔÆÖ®¸ß¡ª¡ªÁ÷ͨ¡¢Îȹ̡¢µÍÑÓ³Ù £¬ËƺõÉíÁÙÆä¾³¡£Ö§³ÖÆðÕâÖØ´óÊÓÆµºéÁ÷µÄÊÖÒÕÌôÕ½Ò²ÈÕÒæÑÏËà¡£´ø¿íµÄÏÞÖÆ¡¢·þÎñÆ÷µÄѹÁ¦¡¢ÒÔ¼°ÖÖÖÖÍøÂçÇéÐÎϵIJ»È·¶¨ÐÔ £¬¶¼¿ÉÄÜÈÃÓû§ÌåÑé˲¼ä±ÀËú¡£

ÔÚÕⳡ¶Ô¼«ÖÂÊÓÆµÌåÑéµÄ×·ÇóÖÐ £¬Nginx £¬Õâ¸öÒÔ¸ßÐÔÄܺÍÎȹÌÐÔÖø³ÆµÄWeb·þÎñÆ÷ £¬ÕýÒÔÆä×îа汾µÄǿʢÄÜÁ¦ £¬³ÉΪʵÏÖ¡°100%ÊÓÆµÁ÷ͨ´«Ê䡱ÕâÒ»ÐÛΰĿµÄµÄ»ùʯ¡£

NginxÖ®ÒÔÊÇÄÜÔÚÊÓÆµ´«ÊäÁìÓò´ó·ÅÒì²Ê £¬²¢·ÇÎÞÒâ¡£Ëü¾«ÇɵÄÊÂÎñÇý¶¯¡¢Òì²½·ÇÛձյļܹ¹ £¬Ê¹ÆäÔÚ´¦Öóͷ£¸ß²¢·¢ÅþÁ¬Ê±ÌåÏÖ³ö?׿ԽµÄÐÔÄÜ £¬Õâ¹ØÓÚÐèҪͬʱ·þÎñº£Á¿Óû§Ô¢Ä¿ÊÓÆµµÄÁ÷ýÌå·þÎñÆ÷À´ËµÖÁ¹ØÖ÷Òª¡£Óë¹Å°åµÄ»ùÓÚÀú³Ì»òÏ̵߳ķþÎñÆ÷Ïà±È £¬NginxÄܹ»ÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄ £¬Î¬³Öº£Á¿µÄ²¢·¢ÅþÁ¬ £¬´Ó¶øÏÔÖø½µµÍÁË·þÎñÆ÷µÄÔËÐб¾Ç® £¬²¢Ìá¸ßÁËÕûÌåµÄÍÌÍÂÁ¿¡£

ͨ¹ýÔÚNginxÖÐÆôÓÃHTTP/2£¨Í¨³£ÔÚlistenÖ¸ÁîÖÐÌí¼Óhttp2²ÎÊý£© £¬ÎÒÃÇ¿ÉÒÔʹÓÃÕâЩÐÂÌØÕ÷ £¬ÎªÊÓÆµÁ÷ýÌå·þÎñÌṩ¸ü¿ìµÄ¼ÓÔØËÙÂʺ͸üÁ÷ͨµÄԢĿÌåÑé¡£Õâ½ö½öÊÇNginxÊÓÆµÓÅ»¯Ö®ÂÃµÄÆðÔ´ £¬ÔÚÏÂÒ»²¿·Ö £¬ÎÒÃǽ«ÉîÈë̽ÌÖ¸üÇ°ÑØµÄÊÖÒÕºÍÕ½ÂÔ £¬½«ÊÓÆµÌåÑéÍÆÏò¼«Ö¡£

Nginx100%ÊÓÆµÓÅ»¯£ºÓµ±§Î´À´ £¬½âËø¼«ÖÂÁ÷ýÌåÌåÑé

ÔÚ¼áʵµÄ»ù´¡Ö®ÉÏ £¬NginxµÄÊÓÆµÓÅ»¯Ö®Â·²¢Î´Ö¹²½¡£ÎªÁËÓ¦¶ÔÈÕÒæÔöÌíµÄÁ÷ýÌåÐèÇóºÍÒ»Ö±ÑݽøµÄÍøÂçÊÖÒÕ £¬ÎÒÃÇ»¹ÐèÒªÒýÈë¸üÏȽøµÄЭÒé¡¢¸üÖÇÄܵÄÄÚÈÝ·Ö·¢Õ½ÂÔ £¬²¢ÉîÈëÍÚ¾òNginxµÄÄ£¿é»¯Ç±Á¦¡£´ÓHTTP/3µÄ¸ïÃüÐÔÍ»ÆÆ £¬µ½±ßÑØÅÌËãµÄǿʢ¸³ÄÜ £¬ÔÙµ½Õë¶Ô²î±ð³¡¾°µÄ¶¨ÖÆ»¯ÉèÖà £¬NginxÕýÒÔØ¨¹ÅδÓеÄ?·½·¨ £¬ÖØËÜ×ÅÁ÷ýÌåµÄδÀ´¡£

3.HTTP/2ЭÒéµÄÓÅÊÆ£ºÂõÏò¸ü¿ìµÄ´«Êäʱ´ú?

HTTP/2ЭÒéÏà½ÏÓÚHTTP/1.1 £¬ÔÚÐÔÄÜÉÏÓÐÁËÖʵÄ?±¼ÌÚ £¬ÌØÊâÊʺϴ¦Öóͷ£°üÀ¨´ó×ÚС×ÊÔ´µÄWebÒ³Ãæ £¬¶øÊÓÆµÁ÷ýÌåÒ²¾­³£Éæ¼°¶à¸öС·ÖƬ£¨ÈçHLS¡¢DASH£©¡£

¶à·¸´ÓÃ(Multiplexing)£ºHTTP/2ÔÊÐíÔÚÒ»¸öTCPÅþÁ¬Éϲ¢?Ðд«?Êä¶à¸öÇëÇóºÍÏìÓ¦ £¬ÎÞÐèÏñHTTP/1.1ÄÇÑùÅÅ¶ÓÆÚ´ý¡£ÕâÒâζ×Å £¬µ±Óû§²¥·ÅÒ»¸öÊÓÆµÊ± £¬¿ÉÒÔͬʱÏÂÔØÊÓÆµÁ÷µÄ²î±ðÇÐÆ¬¡¢×ÖÄ»¡¢ÔªÊý¾ÝµÈ £¬¶øÎÞÐ轨Éè¶à¸öÅþÁ¬ £¬´ó´óïÔÌ­ÁËÑÓ³Ù¡£

Í·²¿Ñ¹Ëõ(HeaderCompression)£ºHTTP/2ʹÓÃHPACKË㷨ѹËõÇëÇóºÍÏìÓ¦µÄÍ·²¿ÐÅÏ¢ £¬ÏÔÖø¼õСÁË´«ÊäµÄÊý¾ÝÁ¿ £¬ÓÈÆäÊÇÔڵʹø¿íÇéÐÎÏ £¬Ð§¹ûÔ½·¢ÏÔ×Å¡£·þÎñÆ÷ÍÆËÍ(ServerPush)£ºHTTP/2»¹Ö§³Ö·þÎñÆ÷ÍÆËÍ £¬¼´ÔÚ¿Í»§¶ËÇëÇó֮ǰ £¬·þÎñÆ÷¾Í¿ÉÒÔ×Ô¶¯½«Ïà¹Ø×ÊÔ´ÍÆË͵½¿Í»§¶Ë¡£

ËäÈ»ÔÚÊÓÆµÁ÷ýÌåµÄÏêϸӦÓó¡¾°ÖÐÐèÒªÉóÉ÷ʹÓà £¬µ«ÀíÂÛÉÏ¿ÉÒÔÓÃÓÚÔ¤¼ÓÔØÊÓÆµ²¥·ÅËùÐèµÄÒªº¦ÔªÊý¾Ý»ò·âÃæ¡£

1.»º´æÕ½ÂÔ£ºÈÃÊÓÆµ¡°´¥Êֿɼ°¡±µÄÉñÃØÎäÆ÷

ÊÓÆµÁ÷ýÌåµÄ½¹µãÔÚÓÚ¿ìËÙ¡¢Îȹ̵ؽ«º£Á¿Êý¾Ý´«Êäµ½?Óû§ÖÕ¶Ë¡£NginxµÄ»º´æ»úÖÆÊÇʵÏÖÕâһĿµÄµÄÒªº¦¡£Í¨¹ýºÏÀíÉèÖÃHTTP»º´æ £¬ÎÒÃÇ¿ÉÒÔ½«ÆµÈÔ»á¼ûµÄ?ÊÓÆµÎļþ£¨ÈçÈÈÃÅÓ°Ï·¡¢¶ÌÊÓÆµÆ¬¶Ï£©»º±£´æNginx·þÎñÆ÷ÍâµØ?»òCDN£¨ÄÚÈÝ·Ö·¢ÍøÂ磩½ÚµãÉÏ¡£

ProxyCache£ºµ±Nginx×÷Ϊ·´Ïò´úÀíʱ £¬¿ÉÒÔÉèÖÃproxy_cacheÖ¸Áî £¬½«ºó¶ËÊÓÆµ·þÎñÆ÷µÄ?ÏìÓ¦ÄÚÈÝ»º´æ?µ½ÍâµØ´ÅÅÌ¡£ÕâÒâζ×Å £¬µ±µÚ?Ò»¸öÓû§ÇëÇóij¸öÊÓÆµÊ± £¬Nginx»á½«ÊÓÆµÎļþÏÂÔØ²¢»º´æ¡£ºóÐøÓû§ÇëÇóͳһ¸öÊÓÆµÊ± £¬Nginx¿ÉÒÔÖ±½Ó´Ó»º´æÖÐÌṩ·þÎñ £¬¼«´óµØïÔÌ­Á˺ó¶Ë·þÎñÆ÷µÄѹÁ¦ £¬²¢ÏÔÖøËõ¶ÌÁËÓû§µÄÏìӦʱ¼ä¡£

proxy_cache_pathÖ¸ÁîÓÃÓÚÖ¸¶¨»º´æÄ¿Â¼ºÍÏà¹Ø²ÎÊý £¬¶øproxy_cacheÖ¸ÁîÔòÆôÓûº´æ¡£ÎÒÃÇ¿ÉÒÔͨ¹ýproxy_cache_keyÖ¸Áî×Ô½ç˵»º´æ¼ü £¬ÒÔÈ·±£²î±ðÇëÇó¶ÔÓ¦µÄÄÚÈÝÄܹ»±»×¼È·»º´æºÍ¼ìË÷¡£BrowserCache£º³ýÁË·þÎñÆ÷¶Ë»º´æ? £¬ÎÒÃÇ»¹¿ÉÒÔͨ¹ýexpiresºÍCache-ControlÏìӦͷÀ´Ö¸µ¼¿Í»§¶Ëä¯ÀÀÆ÷»º´æÊÓÆµ×ÊÔ´¡£

ÕâÒâζ×Å×ÝÈ»ÔÚ´«ÊäÊÓÆµµÄ¸÷¸ö·ÖƬʱ £¬ÆäËû×ÊÔ´£¨ÈçͼƬ¡¢CSS¡¢JavaScript£©Ò²¿ÉÒÔͬʱ±»¼ÓÔØ £¬¼«´óµØïÔÌ­ÁËÅþÁ¬½¨ÉèµÄ¿ªÏúºÍ¶ÓÍ·ÛÕ±Õ£¨Head-of-LineBlocking£©ÎÊÌâ £¬ÏÔÖøÌáÉýÁËÒ³Ãæ¼ÓÔØËÙÂʺÍÊÓÆµ²¥·ÅµÄÆðʼËÙÂÊ¡£¶ø¼´½«ÆÕ¼°µÄHTTP/3 £¬¸üÊÇ»ùÓÚQUICЭÒé £¬½øÒ»²½½â¾öÁËTCPÔÚÍøÂç²»?ÎȹÌʱµÄÓµÈû¿ØÖÆÎÊÌâ £¬´øÀ´Á˸üµÍµÄÑӳٺ͸ü¸ßµÄ?ÍÌÍÂÁ¿¡£

NginxǿʢµÄGzipºÍBrotliѹËõ¹¦Ð§ £¬Ò²ÄÜÔÚÊÓÆµ´«ÊäÀú³ÌÖÐʩչÖ÷Òª×÷Óá£ËäÈ»ÊÓÆµÎļþ±¾?Éíͨ³£ÒѾ­ÊǸ߶ÈѹËõµÄÃûÌã¨ÈçH.264,H.265,VP9µÈ£© £¬µ«ÊÓÆµ²¥·ÅÆ÷ÔÚÇëÇóÊÓÆµµÄÔªÊý¾ÝÎļþ£¨Èç.m3u8²¥·ÅÁÐ±í¡¢.mpdÇåµ¥Îļþ£©Ê± £¬ÕâЩÎı¾Îļþ¿ÉÒÔͨ¹ýGzip»òBrotli¾ÙÐÐѹËõ £¬ïÔÌ­´«ÊäÁ÷Á¿ £¬¼ÓËÙÆÊÎöËÙÂÊ¡£

¸üÖ÷ÒªµÄÊÇ £¬¹ØÓÚһЩ·ÇÊÓÆµÄÚÈݵÄ?¸¨Öú×ÊÔ´ £¬Èç×ÖÄ»Îļþ¡¢JavaScriptÎļþµÈ £¬GzipºÍBrotliµÄѹËõЧ¹û½«¸üΪÏÔ×Å £¬Ö±½ÓÌáÉýÁËÕûÌåµÄ¼ÓÔØÐ§ÂÊ¡£

ÉèÖÃʾÀý£º

http{#...otherhttpconfigurations...client_body_buffer_size128k;client_header_buffer_size4k;large_client_header_buffers3128k;output_buffers2128k;#Adjustbasedonyourneedsaio_writeon;#IfsupportedbyyourOS#...otherconfigurations...}

ͨ¹ýÒÔÉÏ»ù´¡ÉèÖõÄÓÅ»¯ £¬NginxÒѾ­Îª¸ßЧµÄÊÓÆµ´«ÊäµÓÚ¨Á˼áʵµÄ»ù´¡¡£ÒªÕæÕýʵÏÖ100%µÄÊÓÆµÐÔÄÜ £¬ÎÒÃÇ»¹ÐèÒªÉîÈëµ½¸ü¸ß¼¶µÄÓÅ»¯Õ½ÂÔ £¬Õ⽫ÔÚÏÂÒ»²¿·ÖÏêϸÕö¿ª¡£

Nginx100%ÊÓÆµÐÔÄÜ£º´Ó¸ß¼¶ÓÅ»¯µ½Á÷ýÌåЭÒéµÄÉî¶ÈÕûºÏ

ÔÚ´òºÃÁ˼áʵµÄ»ù´¡Ö®ºó £¬ÎÒÃÇÏÖÔÚÒª½øÒ»²½ÍÚ¾òNginxÔÚÊÓÆµÐÔÄÜÉϵÄDZÁ¦ £¬Í¨¹ý¸ß¼¶ÉèÖúͶÔÁ÷ýÌåЭÒéµÄÉî¶ÈÕûºÏ £¬½«ÊÓÆµ´«ÊäµÄЧÂÊÍÆÏò¼«Ö¡£Õâ²»µ«½öÊǼòÆÓµÄ²ÎÊýµ÷½â £¬¸üÊǶÔNginxÄÜÁ¦µÄÖÜÈ«ÊÍ·Å¡£

ΪʲôѡÔñNginx¾ÙÐÐÊÓÆµÓÅ»¯£¿

NginxÖ®ÒÔÊÇÔÚÊÓÆµÓÅ»¯ÁìÓòÍÑÓ±¶ø³ö £¬µÃÒæÓÚÆäÆæÒìµÄÉè¼ÆÀíÄîºÍǿʢµÄ?¹¦Ð§¼¯¡£ÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄÍøÂçÄ£×ÓÊÇNginxµÄ½¹µãÓÅÊÆ¡£ÕâÒâζ×ÅNginxÄܹ»ÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄͬʱ´¦?Àí³ÉǧÉÏÍòµÄ²¢·¢ÅþÁ¬ £¬Õâ¹ØÓÚÐèÒª´¦Öóͷ£´ó×ÚÓû§Í¬Ê±Ô¢Ä¿ÊÓÆµµÄÁ÷ýÌåÆ½Ì¨ÖÁ¹ØÖ÷Òª¡£

Ïà±ÈÓÚ´«?ͳµÄÏß³ÌÄ£×Ó £¬NginxµÄÕâÖÖÄ£×ÓÄÜÏÔÖøïÔÌ­CPUºÍÄÚ´æµÄ¿ªÏú £¬È÷þÎñÆ÷Äܹ»¸ü¸ßЧµØÏìÓ¦Óû§ÇëÇó £¬ïÔÌ­ÑÓ³Ù?¡£

ǿʢµÄ»º´æ»úÖÆÊÇNginxÔÚÊÓÆµÓÅ»¯ÖеÄÁíÒ»´óɱÆ÷¡£ÊÓÆµµÄ»º´æ¿ÉÒÔ¼«´óµØïÔÌ­Ô´·þÎñÆ÷µÄ¸ºÔØ £¬²¢¼ÓËÙÓû§µÄ»á¼ûËÙÂÊ¡£NginxÌṩÁËÎÞа¶àÑùµÄ»º´æÉèÖÃÑ¡Ïî £¬°üÀ¨Îļþ»º´æ¡¢Äڴ滺´æµÈ £¬¿ÉÒÔÆ¾Ö¤ÏÖʵÐèÇó¾ÙÐÐϸÄ廯¹ÜÀí¡£Í¨¹ýºÏÀíÉèÖûº´æ £¬¿ÉÒÔ½«ÈÈÃÅÊÓÆµÄÚÈÝ´æ´¢ÔÚÀëÓû§¸ü½üµÄ·þÎñÆ÷ÉÏ£¨»òCDN±ßÑØ½Úµã£© £¬µ±Óû§ÔÙ´ÎÇëÇóʱ £¬¿ÉÒÔÖ±½Ó´Ó»º´æÖпìËÙÏìÓ¦ £¬ÊµÏÖÃ뿪¼ÓÔØ £¬Õâ¹ØÓÚÌá¸ßÓû§Öª×ã¶ÈºÍÁô´æÂÊÓÐמöÒéÐÔµÄÓ°Ïì¡£

Nginx£º²»µ«ÊÇWeb·þÎñÆ÷ £¬¸üÊÇÊÓÆµÁ÷ýÌåµÄ¼ÓËÙÒýÇæ

ÔÚÐÅÏ¢±¬Õ¨µÄʱ´ú £¬ÊÓÆµÄÚÈÝÒѳÉ?ΪÎÒÃÇÉúÑÄÖв»¿É»òȱµÄÒ»²¿·Ö¡£ÎÞÂÛÊǾ«²ÊµÄÓ°Ï·¡¢¼¤ÇéµÄÌåÓýÈüÊ £¬ÕÕ¾ÉѧϰÐÂ֪ʶµÄÔÚÏß¿Î³Ì £¬Á÷ͨ¡¢¸ßÇåµÄ?¹ÛÓ°ÌåÑéÊÇÓû§×î»ù±¾Ò²ÊÇ×îÖ÷ÒªµÄËßÇó¡£ÊÓÆµÎļþÌåÁ¿ÖØ´ó¡¢ÍøÂç´«Êä²»Îȹ̡¢·þÎñÆ÷²¢·¢Ñ¹Á¦´óµÈÎÊÌâ £¬¾­³£ÈÃÓû§ÔÚÒªº¦Ê±¿ÌÔâÓö¿¨¶Ù¡¢¼ÓÔØ»ºÂýµÄÞÏÞÎ £¬ÉõÖÁ´íʧ¾«²Ê˲¼ä¡£

Õâʱ £¬Ò»¸öǿʢµÄÊÓÆµÁ÷ýÌå½â¾ö¼Æ»®¾ÍÏÔµÃÓÈΪÖ÷Òª¡£¶øNginx £¬Õâ¿îÒÔ¸ßÐÔÄÜ¡¢¸ß²¢·¢Öø³ÆµÄWeb·þÎñÆ÷ £¬ÔçÒÑÓâÔ½ÁËÆä¹Å°å¶¨Î» £¬³ÉΪ¹¹½¨¸ßЧ¡¢ÎȹÌÊÓÆµÁ÷ýÌå·þÎñµÄÒªº¦ÒýÇæ¡£

×ܽ᣺Nginx £¬ÄãµÄÁ÷ýÌå¼ÓËÙÆ÷

ͨ¹ýÒÔÉÏһϵÁеÄÓÅ»¯Õ½ÂÔ £¬NginxÄܹ»´Ó»º´æ¡¢´«ÊäЭÒé¡¢HTTPÉèÖõȶà¸öά¶È £¬ÖÜÈ«ÌáÉýÊÓÆµÁ÷ýÌåµÄ´«ÊäЧÂʺÍÓû§ÌåÑé¡£´ÓïÔÌ­¼ÓÔØÊ±¼äµ½¶Å¾ø²¥·Å¿¨¶Ù £¬´ÓÓÅ»¯´ø?¿íʹÓõ½Ö§³Ö×îÐÂÁ÷ýÌåЭÒé £¬Nginx¶¼Õ¹ÏÖ³öÁËÆäǿʢµÄÄÜÁ¦¡£

¡°Nginx100%ÊÓÆµÓÅ»¯¡±²¢·ÇÒ»¾äÆÓªµÄ¿ÚºÅ £¬¶øÊÇͨ¹ý¶ÔNginx½¹µã¹¦Ð§µÄÉîÈëÃ÷È·ºÍϸÄåÉèÖà £¬½«NginxµÄÐÔÄÜʩչµ½¼«Ö £¬´Ó¶øÎªÄãµÄÁ÷ýÌåÓªÒµÌṩ¼áʵµÄÊÖÒÕÖ§³Ö¡£ÎÞÂÛÊÇСÎÒ˽¼Ò²©¿ÍµÄ?ÊÓÆµ·ÖÏí £¬ÕվɴóÐÍÊÓÆµÆ½Ì¨µÄÄÚÈÝ·Ö·¢ £¬Òà»òÊÇʵʱֱ²¥·þÎñ £¬Nginx¶¼ÄܳÉΪÄã×î¿É¿¿µÄ¼ÓËÙÆ÷ £¬×ÊÖúÄã׽סÁ÷ýÌåʱ´úµÄÖØ´óʱ»ú £¬Ó®µÃÓû§µÄÇàíù¡£

¼Ç×Å £¬Ò»Á¬µÄ¼à¿ØºÍµ÷ÓÅÊǼá³Ö×î¼ÑÐÔÄܵÄÒªº¦¡£Ê¹ÓÃNginxÌṩµÄ¼à¿Ø¹¤¾ßºÍµÚÈý·½²å¼þ £¬Ò»Ö±ÆÊÎö·þÎñÆ÷ÈÕÖ¾ºÍÐÔÄÜÖ¸±ê £¬ÊµÊ±µ÷½âÉèÖà £¬²Å»ªÈÃÄãµÄÊÓÆµÁ÷ýÌå·þÎñʼÖÕ¼á³ÖÔÚ×î¼Ñ״̬ £¬ÎªÓû§´øÀ´×ˬµÄԢĿÌåÑ飡

СÐò£ºÁ÷ýÌåʱ´úµÄʱ»úÓëÌôÕ½

ÔÚÊý×Öʱ´úÀ˳±Ï £¬ÊÓÆµÄÚÈÝÒÑÈ»³É?ΪÐÅÏ¢Èö²¥¡¢ÓéÀÖÏûDzÒÔÖÂÉÌÒµÓªÏúµÄ½¹µãÔØÌå¡£´Ó¶ÌÊÓÆµµÄË鯬»¯ÓéÀÖµ½³¤ÊÓÆµµÄÉî¶ÈÄÚÈÝ £¬ÔÙµ½Ö±²¥µÄʵʱ»¥¶¯ £¬ÊÓÆµµÄÆÕ¼°Ë®Æ½ºÍÏûºÄÐèÇó·ºÆð±¬Õ¨Ê½ÔöÌí¡£Åãͬ¶øÀ´µÄÊǶÔÁ÷ýÌå·þÎñÆ÷ÐÔÄܵÄÑÏËàÄ¥Á·¡£Óû§ÆÚÍûµÄ?ÊÇ¡°Ã뿪¡±¼´²¥µÄÁ÷ͨÌåÑé £¬Ò»µ©¼ÓÔØ»ºÂý¡¢»­Ã濨¶Ù¡¢ÉõÖÁ²¥·ÅÖÐÖ¹ £¬Óû§µÄÄÍÐĽ«Ñ¸ËÙÏûÄ¥ £¬Ö±½ÓÓ°ÏìÓû§Áô´æºÍÉÌÒµ¼ÛÖµ¡£

¹Å°åµÄWeb·þÎñÆ÷ÔÚ´¦Öóͷ£º£Á¿ÊÓÆµÇëÇóʱ £¬ÍùÍùÁ¦ÓÐδ´þ¡£´ø¿íÆ¿¾±¡¢·þÎñÆ÷¸ºÔعý¸ß¡¢´«ÊäЧÂʵÍϵÈÎÊÌâ²ã³ö²»Çî £¬µ¼ÖÂÓû§ÌåÑé´ó´òÕÛ¿Û¡£Õâʱ £¬Ò»¸öǿʢ¶øÎÞаµÄ½â¾ö¼Æ»®¾ÍÏÔµÃÓÈΪҪº¦¡£¶øNginx £¬×÷Ϊҵ½çÁìÏȵĸßÐÔÄÜWeb·þÎñÆ÷¡¢·´Ïò´úÀíºÍ¸ºÔØÆ½ºâÆ÷ £¬ÒÀ¸½Æä׿ԽµÄÊÂÎñÇý¶¯¼Ü¹¹¡¢ÇáÁ¿¼¶µÄÉè¼ÆÒÔ¼°¸»ºñµÄ¹¦Ð§¼¯ £¬³ÉΪÁËÓÅ»¯ÊÓÆµÁ÷ýÌå´«ÊäµÄ¡°ÉñÆ÷¡±¡£

±¾ÎĽ«ÉîÈë̽ÌÖÔõÑùʹÓÃNginxʵÏÖ¡°Nginx100%ÊÓÆµÓÅ»¯¡± £¬´Ó»ù´¡ÉϽâ¾öÊÓÆµ²¥·ÅµÄÍ´µã £¬ÊÍ·ÅÄãµÄÁ÷ýÌåDZÁ¦¡£ÎÒÃǽ«Î§ÈÆNginxÔÚÊÓÆµ´«ÊäÖеĽ¹µãÓÅÊÆ £¬ÍŽáÏÖʵӦÓó¡¾° £¬ÎªÄãÕ¹ÏÖһϵÁÐÐÐÖ®ÓÐÓõÄÓÅ»¯Õ½ÂÔ £¬ÈÃÄãÇáËɼÝÔ¦¸ß²¢·¢µÄÊÓÆµÁ÷Á¿ £¬ÎªÓû§Ìṩب¹ÅδÓеÄÁ÷ͨԢĿÌåÑé¡£

CDNÓë±ßÑØÅÌË㣺½«ÊÓÆµµÄ¡°¿ì¡±ËÍ´ïÓû§Ö¸¼â

ÔÚÏÖ´úÊÓÆµ·Ö·¢ÏµÍ³ÖÐ £¬CDN£¨ContentDeliveryNetwork£©ÒѳÉΪ²»¿É»òȱµÄ×é³É²¿·Ö¡£NginxÒÀ¸½Æä¼«¸ßµÄÎÞаÐÔºÍÐÔÄÜ £¬Êǹ¹½¨×Ô½¨CDN»ò×÷ΪCDN½Úµã·þÎñµÄÀíÏëÑ¡Ôñ¡£Í¨¹ýÔÚÈ«Çò°²ÅÅ´ó×ÚµÄNginx·þÎñÆ÷×÷Ϊ±ßÑØ½Úµã £¬¿ÉÒÔ½«ÊÓÆµÄÚÈÝ»º´æµ½ÀëÓû§×î½üµÄµØ·½¡£

»º´æÕ½ÂÔµÄϸÄ廯£ºNginxµÄproxy_cacheÖ¸ÁîÌṩÁËǿʢµÄ»º´æ¹¦Ð§¡£Õë¶ÔÊÓÆµÁ÷ £¬¿ÉÒÔÆ¾Ö¤ÊÓÆµµÄÉúÃüÖÜÆÚ¡¢¸üÐÂÆµÂÊÀ´ÉèÖòî±ðµÄ»º´æÊ±¼äºÍÕ½ÂÔ¡£ÀýÈç £¬¹ØÓÚÈÈÃŵÄÖ±²¥ÄÚÈÝ £¬¿ÉÒÔÉèÖýϳ¤µÄ»º´æÊ±¼ä£»¶ø¹ØÓÚ¸üÐÂÆµÈԵĶÌÊÓÆµ £¬ÔòÐèÒª¸üÖÇÄܵĻº´æË¢Ð»úÖÆ¡£

proxy_cache_key¿ÉÒÔÓÃÀ´ÌìÉú¸ü¾ßÕë¶ÔÐԵĻº´æ¼ü £¬È·±£²î±ðÓû§¡¢²î±ðÇëÇó²ÎÊýÏµĻº´æÖÀÖÐÂÊ¡£¾Í½ü»á¼ûÓëÁ÷Á¿¸ºÔØÆ½ºâ£ºÍŽáDNSÆÊÎö»òAnycast·ÓÉÊÖÒÕ £¬¿ÉÒÔ½«Óû§µÄÇëÇóÖ¸µ¼ÖÁ¾àÀëËûÃÇ×î½üµÄNginx±ßÑØ½Úµã¡£½ÚµãÄÚ²¿ £¬NginxµÄ¸ºÔØÆ½ºâ»úÖÆ£¨ÈçRoundRobin,LeastConnections£©¿ÉÒÔÓÐÓõؽ«Á÷Á¿·ÖÅɸøºó¶ËµÄÄÚÈÝÔ´ £¬»òÕßÔÚ¶à¸öCDN½ÚµãÖ®¼ä¾ÙÐÐÁ÷Á¿µ÷Àí £¬±ÜÃâµ¥µã¹ýÔØ¡£

ͨ¹ýÔÚЭÒé¡¢ÐÔÄܺÍÇå¾²µÈ½¹µã²ãÃæµÄÖÜÈ«Éý¼¶ £¬Nginx×îа汾ÒѾ­ÎªÊµÏÖ¡°100%ÊÓÆµ²¥·Å100%¡±´òÏÂÁ˼áʵµÄ»ù´¡¡£Ëü²»µ«½öÊÇÒ»¸öWeb·þÎñÆ÷ £¬¸üÊÇÒ»¸öΪÊÓÆµÁ÷ýÌåÁ¿Éí´òÔìµÄǿʢÒýÇæ £¬ÕýÒÔØ¨¹ÅδÓеÄ×Ë̬ £¬ÒýÁì×ÅÊÓÆµ²¥·ÅÌåÑéµÄˢС£

Nginx100%ÊÓÆµ²¥·Å100%£º¸³ÄܶàÔª»¯³¡¾° £¬½âËøÎÞÏÞ¿ÉÄÜ

Nginx×îа汾ÔÚÊÓÆµÁ÷ýÌåÁìÓòÕ¹ÏÖ³öµÄǿʢʵÁ¦ £¬²»µ«½öÌåÏÖÔڵײã?ÊÖÒÕµÄÓÅ»¯ £¬¸üÔÚÓÚÆäÄܹ»¸³ÄÜÖÖÖÖ¶àÔª»¯µÄÊÓÆµÓ¦Óó¡?¾° £¬Îª¿ª·¢ÕߺÍÄÚÈÝÌṩÉ̽âËøÁËÎÞÏ޵ĿÉÄÜ¡£´Ó¸ßÇåµã²¥µ½µÍÑÓ³ÙÖ±²¥ £¬´Ó±ßÑØÅÌËãµ½CDN¹¹½¨ £¬NginxÕý³ÉΪÇý¶¯ÏÂÒ»´úÊÓÆµÌåÑéµÄÒªº¦Á¦Á¿¡£

Nginx100ÊÓÆµ£ºµãȼÊÓÆµÈö²¥?ÊäµÄÒýÇæ £¬ÊÍ·ÅÎÞÏÞDZÄÜ

ÔÚÕâ¸öÐÅÏ¢±¬Õ¨µÄʱ´ú £¬ÊÓÆµÔçÒÑÉøÍ¸µ½ÎÒÃÇÉúÑĵķ½·½ÃæÃæ¡£´Óʵʱֱ²¥µÄ¾«²Ê˲¼ä £¬µ½µã²¥ÄÚÈݵÄÌÕ×íÌåÑé £¬ÊÓÆµÁ÷µÄÖÊÁ¿ºÍÎȹÌÐÔÖ±½Ó¹ØÏµµ½Óû§µÄÇéÐ÷ÅþÁ¬ºÍÉÌÒµ¼ÛÖµ¡£Òª¹¹½¨Ò»¸öÄܹ»³ÐÔØº£Á¿ÊÓÆµÁ÷Á¿ £¬²¢°ü¹ÜµÍÑÓ³Ù¡¢¸ß²¢·¢¡¢¼«ÖÂÁ÷ͨµÄÁ÷ýÌåÆ½Ì¨ £¬¾ø·ÇÒ×Ê¡£

¹Å°åµÄWeb·þÎñÆ÷ÔÚÃæÁÙÊÓÆµÁ÷µÄÑÏËàÌôսʱ £¬ÍùÍùÏÔµÃÁ¦ÓÐδ´þ¡£Õâʱ £¬Nginx £¬Õâ¸öÒÔÆä¸ßÐÔÄÜ¡¢¸ß²¢·¢ºÍÎÞаÐÔÖø³ÆµÄWeb·þÎñÆ÷ £¬±ã?³ÉΪÁËÁ÷ýÌåÁìÓòµÄ¡°³¬µÈÓ¢ÐÛ¡±¡£¶ø¡°Nginx100ÊÓÆµ¡±Õâ¸ö¿´·¨ £¬¸üÊǽ«NginxÔÚÊÓÆµÈö²¥ÊäÉϵÄÄÜÁ¦ÍÆÏòÁËÒ»¸öÐÂµÄ¸ß¶È £¬ËƺõΪÆä×¢ÈëÁ˰ٱ¶µÄÄÜÁ¿ £¬µãȼÁËÊÓÆµ´«ÊäµÄÒýÇæ £¬ÊͷųöÎÞÏÞµÄDZÄÜ¡£

NginxÊÂʵÊÇÔõÑù³ÉΪÊÓÆµÈö²¥ÊäµÄÍõÕߣ¿ÕâÆäÖÐÔ̺¬×ÅÔõÑùµÄÊÖÒÕÉñÃØ£¿ÈÃÎÒÃÇÒ»ÆðÉîÈëNginxµÄ½¹µã £¬½Ò¿ªËüÔÚÊÓÆµÈö²¥ÊäÁìÓòµÄÉñÆæÁ¶½ðÊõ¡£

Õâ¹ØÓÚÐèҪƵÈÔ½¨ÉèÅþÁ¬µÄÊÓÆµ²¥·Å³¡¾°£¨ÀýÈç £¬²¥·Å¶ÌÊÓÆµ£©À´Ëµ £¬¿ÉÒÔÓÐÓÃïÔÌ­Æô¶¯ÑÓ³Ù¡£ÅþÁ¬Ç¨á㣺QUICÖ§³ÖÅþÁ¬Ç¨áã¡£µ±Óû§µÄIPµØÖ·»ò¶Ë¿Ú±¬·¢×ª±äʱ£¨ÀýÈç £¬´ÓWi-FiÇл»µ½Òƶ¯ÍøÂ磩 £¬QUICÅþÁ¬¿ÉÒÔ¼á³ÖÎȹÌ¡£Õâ¹ØÓÚÒÆ¶¯Éè±¹ØÁ¬ÄÊÓÆµÔ¢Ä¿ÖÁ¹ØÖ÷Òª £¬Äܹ»°ü¹Ü²¥·ÅµÄÒ»Á¬ÐÔ £¬×èÖ¹ÒòÍøÂçÇл»¶øÖÐÖ¹¡£

ÔÚNginxÖÐÆôÓÃHTTP/3ºÍQUICÖ§³Ö £¬Í¨³£ÐèҪʹÓÃÌØ¶¨µÄÄ£¿é£¨ÀýÈç £¬Í¨¹ýBoringSSLÖ§³ÖQUIC£©¡£ËäÈ»ÆäÉèÖÃÏà¶ÔÖØ´ó £¬µ«Ò»µ©ÊµÏÖ £¬½«ÎªÊÓÆµÁ÷ýÌå´øÀ´Ø¨¹ÅδÓеÄ?ÐÔÄÜÌáÉýºÍÓû§ÌåÑéÓÅ»¯¡£Õâ±ê¼Ç×ÅNginxÔÚÓµ±§×îÐÂÍøÂçÊÖÒÕ·½ÃæµÄ¿ÌÒâºÍÄÜÁ¦¡£

4.Á÷ýÌåЭÒéµÄÉèÖãºHLS/DASHÓÅ»¯

add_headerCache-Control"public,max-age=31536000";£º¹ØÓÚ.m3u8²¥·ÅÁбíÎļþºÍÊÓÆµ·ÖƬ £¬ÉèÖýϳ¤µÄ?»º´æÊ±¼ä £¬ÌáÉý²¥·ÅµÄÁ÷ͨÐÔ¡£types{application/vnd.apple.mpegurlm3u8;video/mp2tts;}£ºÈ·±£Nginx׼ȷʶ±ðºÍ´«ÊäHLS/DASHÏà¹ØµÄÎļþÀàÐÍ¡£

µ÷ÓŽ¨Ò飺˼Á¿Ê¹ÓÃNginxPlus»òµÚÈý·½Ä£¿é£¨Èçnginx-vod-module£©À´Ìṩ¸ü¸ß¼¶µÄÊÓÆµµã²¥£¨VOD£©¹¦Ð§ £¬ÈçDRM¼ÓÃÜ¡¢ÄÚÈÝ´ò°üµÈ¡£

½áÂÛ£ºNginx¸³Äܼ«ÖÂÊÓÆµÌåÑé

NginxÒÔÆäǿʢµÄÐÔÄÜ¡¢ÎÞаµÄÉèÖÃÒÔ¼°¸»ºñµÄÄ£¿éÉú̬ £¬³ÉΪÁËÊÓÆµ·þÎñÁìÓò²»¿É»òȱµÄÒªº¦ÊÖÒÕ¡£Í¨¹ýÉîÈëÃ÷È·ÆäÊÂÇéÔ­Àí £¬²¢Ï¸Ä廯µØÉèÖø÷Ïî²ÎÊý £¬Äú¿ÉÒÔÓÐÓõØÓ¦¶Ôº£Á¿²¢·¢ÇëÇó £¬´ó·ùÌáÉýÊÓÆµµÄ¼ÓÔØËÙÂʺͲ¥·ÅÁ÷ͨ¶È¡£´Ó»ù´¡µÄÅþÁ¬ÊÜÀíµ½¸ß¼¶µÄ?ЭÒéÓÅ»¯¡¢¸ºÔØÆ½ºâºÍÇå¾²Õ½ÂÔ £¬NginxÌṩÁËÈ«·½Î»µÄ½â¾ö¼Æ»® £¬ÖúÄú½âËøÁ÷ͨ?ÊÓ½ç £¬ÎªÓû§´øÀ´ÎÞÓëÂױȵÄÊÓÆµÔ¢Ä¿ÌåÑé¡£

¡°100%ÊÓÆµÐÔÄÜ¡±²¢·ÇÒ£²»¿É¼°µÄ?ÀíÏë £¬¶øÊÇͨ¹ý¶ÔNginxµÄÉîÈëʵ¼ùºÍÒ»Á¬ÓÅ»¯ £¬¿ÉÒÔÖð²½ÊµÏÖµÄ׿ԽĿµÄ¡£ÈÃÎÒÃÇÒ»ÆðÓµ±§Nginx £¬¼ÝÔ¦ÊÓÆµÊ±´úµÄÐÚÓ¿À˳± £¬ÈÃÿһ´Îµã²¥¡¢Ã¿Ò»´ÎÖ±²¥ £¬¶¼³ÉΪһ´ÎË¿»¬¡¢ÓäÔõÄÊÓÌýÏíÊÜ¡£

2.4Çå¾²·À»¤ÓëÏÞÁ÷£º°ü¹ÜÎÈ¹Ì £¬µÖÓù¹¥»÷ÊÓÆµ·þÎñÃæÁÙ×ÅÖÖÖÖÇå¾²Íþв £¬ÈçDDoS¹¥»÷¡¢µÁÁ´¡¢¶ñÒâÅÀ³æµÈ¡£NginxÌṩÁËǿʢµÄÇå¾²·À»¤ºÍÏÞÁ÷»úÖÆ £¬ÎªÊÓÆµÁ÷ýÌåµÄÎȹÌÔËÐб£?¼Ý»¤º½¡£

DDoS·À»¤:limit_reqÄ£¿é:ÏÞÖÆÀ´×ÔͳһIPµØÖ·µÄÇëÇóƵÂÊ £¬ÓÐÓõÖÓù±©Á¦ÆÆ½âºÍÁ÷Á¿¹¥»÷¡£limit_req_zone$binary_remote_addrzone=mylimit:10mrate=10r/s;location/{limit_reqzone=mylimitburst=20nodelay;}limit_connÄ£¿é:ÏÞÖÆÍ³Ò»IPµØÖ·µÄ²¢·¢ÅþÁ¬Êý¡£

ngx_http_geo_module:ÆÁÕÏÀ´×ÔÒÑÖª¶ñÒâIP¶Î»òÌØ¶¨¹ú¼ÒµÄ»á¼û¡£µÁÁ´·À»¤(Referer¼ì²é):¼ì²é?ÇëÇóµÄRefererÍ· £¬Ö»ÔÊÐíÀ´×ÔÖ¸¶¨ÓòÃûµÄ»á¼û £¬±ÜÃâÊÓÆµ±»ÆäËûÍøÕ¾²»·¨ÒýÓá£valid_referersnoneblocked*.example.comexample.com;if($invalid_referer){return403;}URLÊðÃû:ͨ¹ý¸øÊÓÆµURLÌí¼Óʱ¼ä´ÁºÍÊðÃû²ÎÊý £¬È·±£Ö»ÓÐÔÚÓÐÓÃÆÚÄÚÇÒ²ÎÊý׼ȷµÄÇëÇó²Å»ª»á¼ûÊÓÆµ £¬±ÜÃâURL±»ÀÄÓá£

HLS/DASHµÄ¸ß¼¶ÉèÖãº

·ÖƬ¾ÞϸºÍ¾àÀ룺HLS/DASHµÄ²¥·ÅÌåÑéºÜºéÁ÷ƽÉÏÈ¡¾öÓÚýÌåÇÐÆ¬µÄÌìÉú¡£ºÏÀíÉèÖÃÇÐÆ¬¾ÞϸºÍ¾àÀë £¬¿ÉÒÔÆ½ºâÆô¶¯ËÙÂʺͲ¥·ÅÁ÷ͨ¶È¡£GOP£¨GroupofPictures£©½á¹¹£ºÊÓÆµ±àÂëÖеÄGOP½á¹¹¶ÔÒªº¦Ö¡µÄÂþÑÜÓÐÓ°Ïì £¬Ó°ÏìHLS/DASHµÄÇÐÆ¬½çÏß £¬´Ó¶øÓ°Ïì¿ì½ø¿ìÍ˵ÄÌåÑé¡£

Adaptivity£¨×Ô˳Ӧ£©£ºNginx¿ÉÒÔÅäºÏFFmpegµÈ¹¤¾ß £¬ÌìÉú²î±ðÂëÂʺÍÇø·ÖÂʵÄýÌåÁ÷ £¬¹©¿Í»§¶Ë¾ÙÐÐ×Ô˳ӦÇл» £¬Ìṩ¸üºÃµÄԢĿÌåÑé¡£

WebRTCµÄ¼¯³É£º¹ØÓÚÐèÒªµÍÑÓ³Ùʵʱ½»»¥µÄ?Ó¦Óó¡¾° £¬WebRTCµÄ¼¯³É±äµÃÔ½À´Ô½Ö÷Òª¡£ËäÈ»Nginx×Ô¼º²»Ö±½ÓÖ§³ÖWebRTC £¬µ«¿ÉÒÔͨ¹ýµÚÈý·½Ä£¿é£¨Èçnginx-rtsp-to-webrtc£©»òÓëÆäËûWebRTC·þÎñÆ÷ÅäºÏʹÓà £¬ÊµÏÖÊÓÆµÁ÷µÄWebRTC´«?Êä¡£

Ä£¿é»¯Éè¼Æ£ºÎÞаӦ¶Ô¶à±äµÄÊÓÆµÐ­Òé

ÊÓÆµÈö²¥ÊäÉæ¼°¶àÖÖЭÒé £¬ÈçRTSP(RealTimeStreamingProtocol)¡¢RTMP(Real-TimeMessagingProtocol)¡¢HLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)µÈ¡£

ÿÖÖЭÒé¶¼ÓÐÆäÌØ¶¨µÄÓ¦Óó¡¾°ºÍÊÖÒÕÌØµã¡£RTMPÔøÊÇÖ±²¥?ÁìÓòµÄ¡°°ÔÖ÷¡± £¬ÒÔÆäµÍÑÓ³ÙµÄ?ÓÅÊÆÊܵ½Çàíù£»¶øHLSºÍDASHÔò»ùÓÚHTTP £¬Ò×ÓÚ°²ÅÅºÍ¿çÆ½Ì¨¼æÈÝ £¬³É?Ϊµã²¥?ºÍ×Ô˳ӦÂë̹Âʲ¥µÄÖ÷Á÷Ñ¡Ôñ¡£

NginxµÄÄ£¿é»¯Éè¼Æ £¬¸¶ÓëÁËËüǿʢµÄÎÞаÐÔ £¬Ê¹ÆäÄܹ»ÇáËɵØ?¼¯³ÉµÚÈý·½Ä£¿é £¬ÒÔÖ§³Ö?ÖÖÖÖÊÓÆµÐ­Ò顣ͨ¹ý¼ÓÔØÏìÓ¦µÄÄ£¿é £¬Nginx¾Í¿ÉÒÔÒ¡ÉíÒ»±ä £¬³ÉΪһ¸öרҵµÄÁ÷ýÌå·þÎñÆ÷¡£ÀýÈç £¬nginx-rtmp-module¼´ÊÇNginxÉçÇøÖкÜÊÇÊ¢ÐеÄÓÃÓÚÖ§³ÖRTMPЭÒéµÄÄ£¿é £¬ËüÔÊÐíNginxÖ±½ÓÎüÊÕRTMPÍÆÁ÷ £¬²¢½«Æäת»»ÎªHLS»òDASHµÈÃûÌþÙÐзַ¢¡£

ÕâÖÖÄ£¿é»¯µÄ?ÄÜÁ¦ £¬Ê¹µÃNginxÄܹ»Ë³Ó¦Ò»Ö±×ª±äµÄÁ÷ýÌåÊÖÒÕÉú³¤ £¬³ÉΪһ¸ö¡°Íò½ðÓÍ¡±Ê½µÄÁ÷ýÌå½â¾ö¼Æ»®¡£

ÊÓÆµÄÚÈÝ £¬ÓÈÆäÊÇÖ±²¥ºÍVOD£¨VideoOnDemand£© £¬ÍùÍùÉæ¼°µ½¶¯Ì¬ÌìÉúºÍ·Ö·¢¡£Nginx×îа汾ÔÚ¶¯Ì¬ÄÚÈݵĴ¦Öóͷ£»ººÍ´æÕ½ÂÔÉϾÙÐÐÁËÏÔÖøµÄˢР£¬ÒÔ½øÒ»²½ÌáÉýÊÓÆµµÄ¼ÓÔØËÙÂʺͲ¥·ÅÁ÷ͨ¶È¡£

¸üÖÇÄܵÄ?»º´æ»úÖÆ£ºNginxǿʢµÄ»º´æÄÜÁ¦Ò»Ö±±¸ÊÜÔÞÓþ¡£×îа汾?ÔÚ´Ë»ù´¡ÉÏ £¬ÒýÈëÁËÔ½·¢ÖÇÄܵĻº´æÕ½ÂÔ¡£ÀýÈç £¬ËüÄܹ»¸üºÃµØÊ¶±ðÊÓÆµÎļþµÄÌØÕ÷ £¬Èç·ÖƬÊÓÆµ£¨HLS,DASH£©µÄ¸÷¸öƬ¶Ï £¬²¢Æ¾Ö¤ÕâЩƬ¶ÏµÄ»á¼ûƵÂʺÍʱЧÐÔ £¬¾ÙÐиüϸÄ廯µÄ»º´æ¹ÜÀí¡£

ÕâʹµÃÓû§ÔÚÇëÇóÊÓÆµÆ¬¶Ïʱ £¬Äܹ»ÓÅÏÈ´ÓÍâµØ»ò±ßÑØ½Úµã»º´æÖлñÈ¡ £¬´ó´ó½µµÍÁË»ØÔ´Ñ¹Á¦ £¬Ò²ÏÔÖøËõ¶ÌÁËÊÓÆµµÄ¼ÓÔØÊ±¼ä¡£

¸ßЧµÄÁ÷ýÌåÖ§³Ö£ºNginxºã¾ÃÒÔÀ´¶¼ÊÇÁ÷ýÌå´«ÊäµÄÀûÆ÷ £¬Ö§³ÖRTMP¡¢HLS¡¢DASHµÈ¶àÖÖÁ÷ýÌåЭÒé¡£×îа汾½øÒ»²½ÔöÇ¿Á˶ÔÕâЩЭÒéµÄÆÊÎöºÍ·Ö·¢ÄÜÁ¦ £¬ÓÅ»¯ÁËÊÓÆµÖ¡µÄ´ò°üºÍ´«ÊäÀú³Ì £¬ïÔÌ­Á˲»ÐëÒªµÄÑӳٺͿ¨¶Ù¡£ÎÞÂÛÊÇÖ±²¥Õվɵ㲥 £¬Nginx¶¼ÄÜÌṩÎȹ̡¢µÍÑӳٵĴ«Êä°ü¹Ü¡£

4.Ä£¿é»¯Éè¼ÆÓë¿ÉÀ©Õ¹ÐÔ£ºÎªÊÓÆµ³¡¾°Á¿Éí¶¨ÖÆµÄÎÞаÐÔ

HLSºÍDASHµÄ?ÓÅ»¯´¦Öóͷ££º¹ØÓÚHLSºÍDASH £¬NginxͬÑù¿ÉÒÔ¾ÙÐиüÉîÌõÀí?µÄÓÅ»¯£º

¶¯Ì¬ÇÐÆ¬£ºËäÈ»Nginx×Ô¼º²»ÊÇÒ»¸öÇÐÆ¬¹¤¾ß £¬µ«Ëü¿ÉÒÔÓëFFmpegµÈ¹¤¾ßÅäºÏ £¬ÊµÏÖÖ±²¥Á÷µÄʵʱÇÐÆ¬¡£NginxÎüÊÕRTMPÁ÷ºó £¬½«Æäͨ¹ýexecÖ¸Áî»òÆäËû·½·¨×ª´ï¸øFFmpeg¾ÙÐÐÇÐÆ¬ £¬ÔÙÓÉNginx½«ÌìÉúµÄ.ts/.mp4ÎļþºÍ.m3u8/.mpdË÷ÒýÎļþÌṩӦ¿Í»§¶Ë¡£

»º´æÕ½ÂÔµÄϸÄ廯£º¹ØÓÚHLS/DASH £¬ÎÒÃÇ¿ÉÒÔ¶ÔË÷ÒýÎļþºÍÊÓÆµÆ¬¶Ï½ÓÄɲî±ðµÄ»º´æ?Õ½ÂÔ¡£Ë÷ÒýÎļþ£¨.m3u8/.mpd£©¸üÐÂÆµÂÊ½Ï¸ß £¬»º´æÊ±¼ä¿ÉÒÔ½Ï¶Ì £¬ÒÔÈ·±£Óû§»ñÈ¡µ½×îеIJ¥·ÅÐÅÏ¢¡£¶øÊÓÆµÆ¬¶Ï£¨.ts/.mp4£©ÄÚÈÝÏà¶ÔÎÈ¹Ì £¬¿ÉÒÔÉèÖøü³¤µÄ»º´æÊ±¼ä £¬×î´óÏ޶ȵØÊ¹Óûº´æ¡£

HTTPS¼ÓËÙ£ºÅäºÏSSL/TLSÖ¤Êé £¬Nginx¿ÉÒÔÌṩHTTPSЭÒéµÄÊÓÆµ·þÎñ £¬È·±£ÊÓÆµ´«ÊäµÄÇå¾²ÐÔ¡£¶øNginx¸ßЧµÄSSL/TLSÎÕÊÖÄÜÁ¦ £¬Ò²Äܹ»Ö»¹ÜïÔÌ­HTTPS¶ÔÊÓÆµ´«ÊäÐÔÄܵÄÓ°Ïì¡£

NginxÔÚÕâЩЭÒéÉϵÄÖ§³Ö £¬²»µ«½öÊǼòÆÓµÄЭÒ鼿ÈÝ £¬¸üÖ÷ÒªµÄÊÇÆäÄܹ»Î§ÈÆÕâЩЭÒéÌṩ¸ßÐÔÄÜ¡¢¸ß¿ÉÓÃÐԵĽâ¾ö¼Æ»®¡£Í¨¹ýÉèÖÃNginx×÷ΪAPIÍø¹Ø¡¢¸ºÔØÆ½ºâÆ÷¡¢»º´æ·þÎñÆ÷ £¬ÉõÖÁÍŽáÆä×÷ΪWeb·þÎñÆ÷µÄÉí·Ý £¬¿ÉÒÔ¹¹½¨³ö?ÖØ´óµ«¸ßЧµÄÁ÷ýÌå·Ö·¢ÏµÍ³¡£

ÀýÈç £¬Í¨¹ýNginxµÄrewriteºÍmapÄ£¿é £¬¿ÉÒÔʵÏÖ¶Ô²¥·ÅµØÖ·µÄÎÞа¿ØÖƺÍÇå¾²¼Ó¹Ì£»Í¨¹ýlimit_connºÍlimit_reqÄ£¿é £¬¿ÉÒÔ¶Ô¿Í»§¶ËÇëÇó¾ÙÐÐÏÞËÙ £¬±ÜÃâ¶ñÒâ¹¥»÷ºÍ×ÊÔ´ÀÄÓá£

¸ºÔØÆ½ºâÓë·´Ïò´úÀí£º¹¹½¨¸ß¿ÉÓᢿÉÀ©Õ¹µÄÊÓÆµ·þÎñ

ÔÚÏÖʵµÄÊÓÆµ·þÎñ°²ÅÅÖÐ £¬¼òµ¥·þÎñÆ÷ÍùÍùÄÑÒÔÔâÊÜÖØ´óµÄÁ÷Á¿Ñ¹Á¦¡£´Ëʱ £¬¸ºÔØÆ½ºâºÍ·´Ïò´úÀí¾ÍÏÔµÃÓÈΪÖ÷Òª¡£NginxÔÚÕâÁ½¸ö·½ÃæÌåÏÖ¾«²Ê £¬Äܹ»ÓÐÓõؽ«Á÷Á¿ÊèÉ¢µ½¶ą̀ºó¶Ë·þÎñÆ÷ £¬Ìá¸ßÕûÌå·þÎñµÄ¿ÉÓÃÐԺͿÉÀ©Õ¹ÐÔ¡£

¸ºÔØÆ½ºâ£ºNginx¿ÉÒÔÆ¾Ö¤Ô¤ÉèµÄËã·¨£¨ÈçÂÖѯ¡¢¼ÓȨÂÖѯ¡¢IP¹þÏ£µÈ£© £¬½«Óû§ÇëÇóÔȳƵطÖÅɸøºó¶ËµÄ¶à¸öÁ÷ýÌå·þÎñÆ÷¡£ÕâÑù £¬×ÝȻij̨·þÎñÆ÷·ºÆð¹ÊÕÏ £¬ÆäËû·þÎñÆ÷ÈÔÈ»¿ÉÒÔ¼ÌÐøÌṩ·þÎñ £¬°ü¹ÜÁËÊÓÆµ·þÎñµÄÒ»Á¬ÐÔ¡£·´Ïò´úÀí£ºNginx×÷Ϊ·´Ïò´ú?Àí £¬¿ÉÒÔÒþ²Øºó¶Ë·þÎñÆ÷µÄÕæÊµIPµØÖ· £¬ÔöÇ¿Çå¾²ÐÔ¡£

Ëü»¹¿ÉÒÔ¶ÔÇëÇó¾ÙÐлº´æ £¬ïÔÌ­ºó¶Ë·þÎñÆ÷µÄѹÁ¦¡£ÀýÈç £¬¹ØÓÚһЩÈÈÃŵÄÊÓÆµÄÚÈÝ £¬Nginx¿ÉÒÔ½«ÊÓÆµÇÐÆ¬»º´æµ½ÍâµØ £¬µ±Óû§ÇëÇóʱֱ½Ó´Ó»º´æÌṩ £¬´ó´óÌáÉýÁËÏìÓ¦ËÙÂÊ¡£

Îå¡¢¼à¿ØÓëÈÕÖ¾ÆÊÎö£ºÒ»Á¬ÓÅ»¯

ʵʱ¼à¿Ø£ºÊ¹ÓÃNginxÌṩµÄstub_statusÄ£¿é»òµÚÈý·½¼à¿Ø¹¤¾ß£¨ÈçPrometheus+Grafana£© £¬ÊµÊ±¼à¿ØNginxµÄÅþÁ¬Êý¡¢ÇëÇóÊý¡¢´ø¿íʹÓÃÇéÐεÈÒªº¦Ö¸±ê¡£

ÈÕÖ¾ÆÊÎö£ºNginxµÄ»á¼ûÈÕÖ¾¼Í¼ÁËÏêϸµÄÇëÇóÐÅÏ¢ £¬Í¨¹ý¶ÔÈÕÖ¾¾ÙÐÐÆÊÎö £¬¿ÉÒÔ·¢Ã÷DZÔÚµÄÐÔÄÜÆ¿¾±¡¢Òì³£ÇëÇóºÍÓû§»á¼ûģʽ¡£Ê¹ÓÃÈÕÖ¾ÆÊÎö¹¤¾ß£¨ÈçELKStack£©¿ÉÒÔ¸üÓÐÓõؾÙÐÐÈÕÖ¾¾ÛºÏ¡¢ËÑË÷ºÍ¿ÉÊÓ»¯ £¬ÎªÐÔÄÜÓÅ»¯ÌṩÊý¾ÝÖ§³Ö?¡£

ͨ¹ýÉÏÊöһϵÁеÄÓÅ»¯ÉèÖúÍÕ½ÂÔ £¬NginxÄܹ»³ä·ÖÑéÕ¹Æä¸ßÐÔÄܵÄÓÅÊÆ £¬ÎªÊÓÆµÁ÷ýÌåÌṩÎȹ̡¢¸ßЧ¡¢µÍÑӳٵķþÎñ £¬ÕæÕýʵÏÖ¡°Nginx100%ÊÓÆµ £¬100%ÐÔÄÜ¡±µÄÄ¿µÄ £¬ÈÃÓû§¾¡Ïí¼«ÖÂÁ÷ͨµÄÊÓÌýÊ¢Ñç¡£

½áÓNginx £¬ÊÓÆµÐÔÄܵÄ?׿ԽÒýÇæ

NginxÒÔÆä¾«ÇɵÄ?¼Ü¹¹¡¢¸ßЧµÄÊÂÎñ´¦Öóͷ£»úÖÆ¡¢Ç¿Ê¢µÄ»º´æÄÜÁ¦ÒÔ¼°¶ÔÁ÷ýÌåЭÒéµÄÓÅÒìÖ§³Ö £¬³ÉΪÁ˹¹½¨¸ßÐÔÄÜÊÓÆµ·þÎñµÄÀíÏëÑ¡Ôñ¡£Í¨¹ýÉîÈëÃ÷È·NginxµÄÊÂÇéÔ­Àí £¬²¢ÍŽáºÏÀíµÄÉèÖÃÓÅ»¯ £¬´Ó»ù´¡µÄÍøÂçÉèÖõ½¸ß¼¶µÄÁ÷ýÌåЭÒéÓ¦Óà £¬ÔÙµ½Ò»Á¬µÄ¼à¿Øµ÷ÓÅ £¬ÎÒÃÇÄܹ»×îºéÁ÷ƽµØÊÍ·ÅNginxµÄDZÄÜ £¬ÊµÏÖ¿¿½üÉõÖÁµÖ´ï100%µÄ?ÊÓÆµÐÔÄÜ¡£

µ±Äã¿´µ½ÆÁÄ»Éϲ¥·ÅµÄÊÓÆµÁ÷ͨÎÞ±È £¬¼ÓÔØË²¼äÍê³É £¬Õâ±³?ºó¾ÍÓÐNginxÔÚĬĬµØÐÁÇÚÊÂÇé¡£Ëü²»µ«½öÊÇÒ»¸ö·þÎñÆ÷Èí¼þ £¬¸üÊǹ¹½¨ÏÖ´úÊÓÆµ·þÎñ £¬ÅþÁ¬ÄÚÈÝÓëÓû§µÄ¼áʵÇÅÁº £¬ÎªÎÒÃÇ´øÀ´ÎÞÓëÂױȵÄÊý×ÖÓéÀÖÌåÑé¡£ÈÃNginx³ÉΪÄãÊÓÆµ·þÎñµÄǿʢÒýÇæ £¬½âËøØ¨¹ÅδÓеÄÁ÷ͨÓë¸ßЧ£¡

Nginx100%ÊÓÆµÁ÷Á¿£ºÒýÇæË¢Ð £¬Á÷ͨÌåÑéµÄ»ùʯ

ÔÚÐÅÏ¢±¬Õ¨µÄʱ´ú £¬ÊÓÆµÄÚÈÝÒÑÈ»³ÉΪÏàͬ¡¢ÓéÀÖ¡¢Ñ§Ï°µÄÖ÷Á÷ÔØÌå¡£´Ó¸ßÇåÓ°Ï·µ½ÊµÊ±Ö±²¥ £¬Óû§¶ÔÊÓÆµÌåÑéµÄÒªÇóÓëÈÕ¾ãÔö £¬Á÷ͨ¡¢Îȹ̡¢µÍÑÓ³Ù³ÉΪÁËȨºâ·þÎñÖÊÁ¿µÄÒªº¦Ö¸±ê?¡£¶øÖ§³ÖÕâÒ»ÇÐµÄ £¬ÍùÍùÊÇÒ»¸öǿʢ¶ø¸ßЧµÄWeb·þÎñÆ÷¡£Nginx £¬×÷Ϊҵ½çÁìÏȵĿªÔ´¸ßÐÔÄÜWeb·þÎñÆ÷ £¬ÆäÔÚ´¦Öóͷ£¸ß²¢·¢ÅþÁ¬ºÍ¾²Ì¬Îļþ·þÎñ·½ÃæµÄ׿ԽÌåÏÖÔçÒÑÉîÈëÈËÐÄ¡£

Ëæ×ÅÊÓÆµÁ÷Á¿µÄ±¬Õ¨Ê½ÔöÌí £¬¹Å°åµÄ?NginxÉèÖú͹¦Ð§ÊÇ·ñ»¹ÄÜÖª×ã¡°100%ÊÓÆµÁ÷Á¿¡±µÄÑÏ¿ÁÐèÇó£¿NginxµÄ×îа汾 £¬ÕýÒÔÆäÇ㸲ÐÔµÄ?ˢР£¬¸ø³öÁËÏìÁÁµÄÃյס£

СÐò£ºµ±Á÷ͨ³ÉΪÍõµÀ £¬NginxÔõÑùÁ¶³ÉÊÓÆµÓÅ»¯ÀûÆ÷£¿

ÔÚÏÖÔÚÕâ¸öÄÚÈÝΪÍõµÄʱ´ú £¬ÊÓÆµÒÑÈ»³ÉΪÐÅÏ¢Èö²¥¡¢ÓéÀÖÏûDzºÍÉÌÒµÓªÏúµÄ½¹µãÔØÌå¡£´ÓÔÚÏ߿γ̵½¸ßÇåÓ°Ï· £¬´ÓÖ±²¥»¥¶¯µ½¶ÌÊÓÆµ·çÐÐ £¬Óû§¹ØÓÚÊÓÆµ²¥·ÅµÄÁ÷ͨ¶ÈºÍÏìÓ¦ËÙÂÊÓÐ׎üºõ¿Á¿ÌµÄÒªÇó¡£Ò»µ©?·ºÆð¿¨¶Ù¡¢»º³å £¬ÉõÖÁÊDz¥·Åʧ°Ü £¬Óû§ÌåÑéµÄ?¶ÏÑÂʽϵø±ã²»¿É×èÖ¹ £¬ËæÖ®¶øÀ´µÄ¼´ÊÇÁ÷Á¿µÄÁ÷ʧ¡¢Óû§µÄ²»ÂúÒÔ¼°Æ·ÅÆÐÎÏóµÄ?ÊÜËð¡£

ÔÚÊÓÆµÁ÷ýÌå·þÎñÈÕÒæÖØ´óºÍÖØ´óµÄÅä¾°Ï £¬ÔõÑùÈ·±£Ã¿Ò»Ö¡»­Ãæ¶¼Äܾ«×¼¡¢¸ßЧµØËÍ´ïÓû§ÖÕ¶Ë £¬³ÉΪÁ˰ÚÔÚÿһλÊÖÒÕ¿ª·¢ÕߺÍÔËάְԱÑÛǰµÄÖØ´óÌôÕ½¡£

ÔÚÕⳡ׷Çó¼«ÖÂÁ÷ͨµÄÕ½ÕùÖÐ £¬Nginx £¬Õâ¿î¸ßÐÔÄܵÄWeb·þÎñÆ÷¡¢·´Ïò´úÀíºÍ¸ºÔØÆ½ºâÆ÷ £¬ÕýÒÔÆä׿ԽµÄÐÔÄܺÍÎÞаµÄÉèÖà £¬ÊÎÑÝ×ÅÔ½À´Ô½Ö÷ÒªµÄ½ÇÉ«¡£Ëü²»µ«½öÊÇÒ»¸ö¼òÆÓµÄÎļþ·þÎñÆ÷ £¬¸üÊÇÄܹ»Éî¶È½éÈëÊÓÆµÁ÷ýÌå´«ÊäÀú³Ì £¬¾ÙÐÐÈ«·½Î»¡¢Ï¸Ä廯ÓÅ»¯µÄǿʢ?ÒýÇæ¡£

±¾ÎĽ«ÉîÈë̽ÌÖNginxÔõÑùʵÏÖ¡°100%ÊÓÆµÓÅ»¯¡± £¬Õ¹ÏÖÆä±³ºóµÄÊÖÒÕÔ­ÀíºÍʵ²Ù¼¼ÇÉ £¬°ï?ÖúÄã¹¹½¨Îȹ̡¢¸ßЧ¡¢¼«¾ß¾ºÕùÁ¦µÄÊÓÆµ·þÎñ¡£

DASH£ºÀàËÆHLS £¬DASHʹÓÃMPD(MediaPresentationDescription)ÎļþÀ´ÐÎòÊÓÆµ·Ö¶Î £¬²¢Ö§³Ö?¸üÆÕ±éµÄ±àÂëÃûÌá£NginxͬÑù¿ÉÒÔ×÷ΪDASHÊÓÆµ·Ö¶ÎµÄ·þÎñÆ÷¡£

ÉèÖÃʾÀý£¨HLSʾÀý£©£º¼ÙÉèÄãÒѾ­Í¨¹ýffmpeg½«ÊÓÆµ×ª»»ÎªHLSÃûÌà £¬²¢?½«Îļþ°²ÅÅÔÚNginxµÄÒ»¸öÌØ¶¨Ä¿Â¼Ï¡£

location/hls/{types{application/vnd.apple.mpegurlm3u8;video/mp2tts;}root/path/to/your/hls/files;add_headerCache-Control"no-cache";#Oradjustcachingasneededadd_headerAccess-Control-Allow-Origin*;#ForCORS}

Õâ¹ØÓÚһЩ²¥·ÅÆ÷»á»º´æ?ÊÓÆµÆ¬¶ÏµÄ³¡¾°ºÜÊÇÓÐÓà £¬Äܹ»ïÔÌ­ÖØ¸´ÏÂÔØ £¬ÌáÉýÓû§ÔÚ²î±ðÊÓÆµ¼äÇл»µÄÁ÷ͨ¶È¡£CDN¼¯³É£º¹ØÓÚ´ó¹æÄ£µÄÊÓÆµ·þÎñ £¬Nginx¾­³£ÓëCDNЭͬÊÂÇé¡£Nginx¿ÉÒÔ×÷ΪCDNµÄ±ßÑØ½Úµã £¬»òÕß×÷ΪԴվµÄ¸ºÔØÆ½ºâÆ÷ £¬½«Á÷Á¿·Ö·¢µ½¶à¸öCDN½Úµã¡£

CDNµÄÂþÑÜÊ½ÌØÕ÷Äܹ»½«ÊÓÆµÄÚÈÝÍÆË͵½ÀëÓû§¸ü½üµÄµØÀíλÖà £¬½øÒ»²½?½µµÍÑÓ³Ù £¬ÊµÏÖÈ«Çò¹æÄ£ÄڵĿìËÙ»á¼û¡£NginxÔÚ´ËÀú³ÌÖÐ £¬ÈÏÕæÓëCDN¾ÙÐиßЧµÄͨѶ £¬²¢¿ÉÄÜÊÎÑÝÄÚÈÝÔ¤ÈÈ¡¢»º´æ?¹ÜÀíµÈ½ÇÉ«¡£

ÅþÁ¬Ó뻺³åÇøµÄ¼«Öµ÷ÓÅ£º

worker_connections£ºÆ¾Ö¤·þÎñÆ÷µÄÄÚ´æºÍCPU×ÊÔ´ £¬ºÏÀíÉèÖÃworker_connections¡£Ò»Ñùƽ³£À´Ëµ £¬Ò»¸öworkerÀú³Ì?¿ÉÒÔ´¦Öóͷ£Êýǧ¸öÅþÁ¬¡£client_body_buffer_sizeÓëproxy_buffer_size£º¹ØÓÚ´óÎļþ´«Êä £¬ÐèÒªÊʵ±Ôö´ó?ÕâЩ»º³åÇø¾Þϸ £¬ÒÔïÔÌ­¶Ô´ÅÅÌµÄÆµÈÔ»á¼û¡£

sendfileÓëaio£ºÎñ±Ø¿ªÆôsendfileon; £¬²¢Ë¼Á¿ÔÚÌØ¶¨³¡¾°ÏÂÆôÓÃaio(ÐèÒªNginx±àÒëʱ֧³Öngx_http_v2_module) £¬ÒÔ½øÒ»²½ÌáÉýI/OЧÂÊ¡£

Nginx100ÊÓÆµ£ºÐÔÄܵÄԾǨ £¬ÌåÑéµÄË¢ÐÂ

¡°Nginx100ÊÓÆµ¡±²¢·ÇÒ»¸ö¹Ù·½µÄÊÖÒÕÃû´Ê £¬Ëü¸üÏñÊÇÒ»ÖÖ¶ÔNginxÔÚÊÓÆµÈö²¥ÊäÁìÓòµÖ´ï¡°¼«Ö¡±ÐÔÄܵÄÐÎÏ󻯱í´ï¡£ÏëÏóһϠ£¬µ±NginxµÄÐÔÄÜ»ñµÃ¡°°Ù±¶¡±ÌáÉý £¬ËüÄܹ»´¦Öóͷ£µÄÊÓÆµÁ÷¾Í³ÊÖ¸Êý¼¶ÔöÌí¡£ÕâÒâζ×Å£º

¸üµÍµÄÑÓ³Ù£ºÓû§Ô¢Ä¿Ö±²¥?ʱ £¬ÑÓ³Ù»áÏÔÖø½µµÍ £¬ÏÕЩµÖ´ï¡°Ëù¼û¼´ËùµÃ¡±µÄ¾³½ç¡£¸ü¸ßµÄ?²¢·¢£ºÆ½Ì¨Äܹ»Í¬Ê±Ö§³Ö¸ü¶àµÄÓû§ÔÚÏßԢĿÊÓÆµ £¬ÎÞÂÛÊÇ´óÐÍÈüÊÂÖ±²¥ÕÕ¾ÉÈÈÞ缯ÉÏÏß £¬¶¼ÄÜÇáËÉÓ¦¶Ô¡£¸üÎȹ̵Ĵ«Ê䣺ÊÓÆµ²¥·Å»áÔ½·¢Á÷ͨ £¬¿¨¶Ù¡¢¶ªÖ¡µÄÇéÐδó´óïÔÌ­ £¬Óû§ÌåÑéµÃ?µ½ÖʵÄ?±¼ÌÚ¡£

¸üÎÞаµÄ°²ÅÅ£ºNginxµÄǿʢ¹¦Ð§Ê¹µÃ¹¹½¨ÖØ´óµÄÁ÷ýϵһÇбäµÃÔ½·¢ÈÝÒ× £¬´Ó¼òÆÓµÄÊÓÆµ·Ö·¢µ½ÖØ´óµÄCDN¼Ü¹¹ £¬¶¼ÄÜÓÎÈÐÓÐÓà¡£

Nginx100ÊÓÆµ £¬´ú±í×ÅÒ»ÖÖ¶Ô¼«ÖÂÊÓÆµÁ÷ÌåÑéµÄ×·Çó £¬Ò²ÊÇÒ»ÖÖ¶ÔNginxǿʢÊÖÒÕÄÜÁ¦µÄ?ÈϿɡ£Ëü²»?½ö½öÊÇ·þÎñÆ÷Èí¼þ £¬¸üÊÇÒ»ÖÖÄܹ»Çý¶¯ÏÖ´úÊÓÆµÄÚÈÝ´«Êä¸ïÃüµÄÇ¿¶¦Á¦´ó¾ÙÁ¿¡£ÔÚ½ÓÏÂÀ´µÄpart2ÖÐ £¬ÎÒÃǽ«ÉîÈë̽ÌÖNginxÔÚÏÖʵÊÓÆµ³¡¾°ÖеÄ?Ó¦Óà £¬ÒÔ¼°ÔõÑùͨ¹ýÉèÖÃÓÅ»¯ £¬½øÒ»²½ÊÍ·ÅNginxÔÚÊÓÆµ´«ÊäÖеġ°°Ù±¶¡±ÄÜÁ¿¡£

Nginx100ÊÓÆµ£ºÊµÕ½ÑÝÁ· £¬½âËø¸ßÐÔÄÜÊÓÆµÁ÷µÄ×îÖÕÉñÃØ

NginxÔÚCDNÖÐÊÎÑݵĽÇÉ«°ü?À¨£º

»ØÔ´·þÎñÆ÷£ºÈÏÕæ´æ´¢Ô­Ê¼ÊÓÆµÎļþ £¬²¢½«ÊÓÆµÄÚÈÝ·Ö·¢¸øCDN½Úµã¡£±ßÑØ½Úµã£¨ÈôÊÇNginxÖ±½Ó°²ÅÅÔÚ±ßÑØ£©£ºÈÏÕæÖ±½ÓÏòÓû§ÌṩÊÓÆµ·þÎñ £¬²¢¶ÔÊÓÆµÄÚÈݾÙÐлº´æ¡£¸ºÔØÆ½ºâ£ºNginx¿ÉÒÔ×÷Ϊ¸ºÔØÆ½ºâÆ÷ £¬½«CDN½ÚµãµÄ»ØÔ´ÇëÇó·Ö·¢µ½ºó¶ËµÄ¶à¸öÊÓÆµ´æ´¢·þÎñÆ÷¡£

Ã÷È·²¢ÉèÖÃÁ÷ýÌåЭÒ飺ÊÓÆµ´«Êä²»?½ö½öÊǼòÆÓµÄÎļþÏÂÔØ £¬¸ü¶àʱ¼äÐèÒªÓõ½×¨ÃŵÄÁ÷ýÌåЭÒé £¬ÈçHLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)¡£ÕâЩЭÒéÄܹ»½«ÊÓÆµÖ§½â³ÉСƬ¶Ï £¬²¢Æ¾Ö¤Óû§µÄÍøÂç´ø¿í¶¯Ì¬µ÷½â²¥·ÅµÄÊÓÆµÂëÂÊ £¬´Ó¶øÊµÏÖ¸üÁ÷ͨµÄ²¥·ÅÌåÑé¡£

HLS£ºNginx¿ÉÒÔͨ¹ýngx_http_flv_moduleµÈÄ£¿é £¬ÅäºÏffmpegµÈ¹¤¾ß £¬½«Ô­Ê¼ÊÓÆµ×ª»»ÎªHLSÃûÌã¨.m3u8²¥·ÅÁбíºÍ.tsÊÓÆµÆ¬¶Ï£©¡£NginxÖ±½ÓÌṩÕâЩÎļþ £¬¿Í»§¶Ëƾ֤.m3u8Îļþ¶¯Ì¬ÇëÇó.tsƬ¶Ï¡£

Èý¡¢¸ß¼¶¼¼ÇÉÓëʵ¼ù£ºCDN¡¢¸ºÔØÆ½ºâÓëÐÂÎÅÊèÉ¢

ÔÚÖØ´óµÄÁ÷ýÌå¼Ü¹¹ÖÐ £¬NginxµÄ×÷ÓÃÔ¶²»Ö¹ÓÚ¼òÆÓµÄÎļþ·Ö·¢¡£

CDN±ßÑØ½Úµã°²ÅÅ£ºÔÚCDN¼Ü¹¹ÖÐ £¬Nginx±»ÆÕ±éÓÃ×÷±ßÑØ½ÚµãµÄ·þÎñÆ÷¡£ËüÈÏÕæ»º´æÔ´Õ¾µÄÄÚÈÝ £¬²¢Ö±½Ó·þÎñÓÚÖÕ¶ËÓû§¡£Í¨¹ýÓëCDN³§?É̵ÄÉî¶È¼¯³É £¬Nginx¿ÉÒÔʵÏÖÖÇÄܵÄÁ÷Á¿µ÷ÀíºÍ»ØÔ´Õ½ÂÔ £¬È·±£ÄÚÈÝÄܹ»ÒÔ×î¿ìµÄËÙÂÊ´¥´ïÓû§¡£

¸ºÔØÆ½ºâ£º¹ØÓÚ¸ßÐÔÄܵÄÁ÷ýÌå·þÎñ £¬Í¨³£ÐèÒª¶ą̀·þÎñÆ÷ЭͬÊÂÇé¡£NginxµÄ?upstreamÄ£¿é¿ÉÒÔʵÏÖǿʢµÄ¸ºÔØÆ½ºâ¹¦Ð§ £¬Î´À´×ÔÓû§µÄÇëÇóÔȳƵطַ¢µ½?ºó¶ËµÄ¶ą̀Á÷ýÌå·þÎñÆ÷»òAPI·þÎñÆ÷ÉÏ¡£Ö§³Ö¶àÖÖ¸ºÔØÆ½ºâËã·¨ £¬ÈçÂÖѯ£¨roundrobin£©¡¢×îÉÙÅþÁ¬£¨leastconn£©¡¢IP¹þÏ££¨iphash£©µÈ £¬¿ÉÒÔÆ¾Ö¤ÓªÒµÐèÇóÑ¡Ôñ×îÊʺϵÄÕ½ÂÔ¡£

ÐÂÎÅÊèÉ¢£ºÔÚÊÓÆµ·þÎñÖÐ £¬ÍùÍù»á»ìÏý¾²Ì¬µÄÊÓÆµÎļþºÍ¶¯Ì¬µÄAPIÇëÇó£¨ÈçÓû§µÇ¼¡¢ËÑË÷¡¢Ì¸Â۵ȣ©¡£Nginx¿ÉÒÔͨ¹ýlocationÖ¸Áî £¬½«¾²Ì¬×ÊÔ´£¨ÈçÊÓÆµÎļþ¡¢Í¼Æ¬¡¢CSS¡¢JS£©Ö±½ÓÓÉNginx´¦Öóͷ£ £¬¶ø½«¶¯Ì¬ÇëÇóת·¢¸øºó¶ËµÄÓ¦Ó÷þÎñÆ÷¡£

ÕâÖÖ¡°ÐÂÎÅÊèÉ¢¡±µÄ¼Ü¹¹¿ÉÒÔ¼«´óµØ¼õÇáºó¶ËÓ¦Ó÷þÎñÆ÷µÄѹÁ¦ £¬ÌáÉýÕûÌåµÄÏìÓ¦ËÙÂʺÍÍÌÍÂÁ¿¡£

Ò»¡¢Nginx×îа汾£ºÊÓÆµ´¦Öóͷ£ÄÜÁ¦µÄ±¼ÌÚ

NginxÖ®ÒÔÊÇÄܹ»ÔÚWeb·þÎñÆ÷ÁìÓòÍÑÓ±¶ø³ö £¬ºÜºéÁ÷ƽÉϹ鹦ÓÚÆäÊÂÎñÇý¶¯¡¢Òì²½·ÇÛձյļܹ¹ £¬ÕâʹµÃËüÄܹ»ÒÔ¼«µÍµÄ?×ÊÔ´ÏûºÄ´¦Öóͷ£º£Á¿²¢·¢ÅþÁ¬¡£ÔÚÊÓÆµ´«ÊäÕâÒ»¶Ô´ø¿íºÍÅþÁ¬ÊýÒªÇ󼫸ߵij¡¾°Ï £¬NginxµÄÕâÒ»ÌØÕ÷ÓÈΪÃû¹ó¡£¶ø×îа汾µÄNginx £¬¸üÊǽ«ÕâÖÖÓÅÊÆÊ©Õ¹µ½Á˼«Ö £¬Í¨¹ýһϵÁÐÉî¶ÈÓÅ»¯ºÍй¦Ð§µÄÒýÈë £¬ÊµÏÖÁ˶ÔÊÓÆµÁ÷Á¿µÄ¡°100%¡±Õƿء£

1.½¹µã¼Ü¹¹µÄÒ»Á¬Ñݽø£ºÇáÁ¿¼¶Óë¸ßÍÌÍÂÁ¿µÄÍêÉÆÈÚºÏ

NginxµÄ½¹µã¾ºÕùÁ¦ÔÚÓÚÆä¾«Çɵļܹ¹Éè¼Æ¡£×îа汾ÔÚ¼á³Ö¡°ÇáÁ¿¼¶¡±ÕâÒ»ÓÅÁ¼¹Å°åµÄ½øÒ»²½ÌáÉýÁËÆäÔڸ߲¢·¢³¡¾°ÏµÄÍÌÍÂÁ¿¡£Í¨¹ý¶ÔÊÂÎñÑ­»·¡¢ÄÚ´æ¹ÜÀíºÍÀú³ÌÄ£×ÓµÄϸÄåµ÷ÓÅ £¬NginxÄܹ»¸üÓÐÓõØÊ¹ÓÃCPUºÍÄÚ´æ×ÊÔ´ £¬½«·þÎñÆ÷µÄÿһ·ÝÄÜÁ¦¶¼Í¶Èëµ½ÊÓÆµÊý¾ÝµÄ´«ÊäÖС£

ÕâÒâζ×Å £¬ÎÞÂÛÄúµÄÊÓÆµ·þÎñÊÇÃæÁÙÍ»·¢µÄÖ±²¥á¯Áë £¬Õվɺ£Á¿µÄµã²¥ÇëÇó £¬Nginx¶¼ÄÜÒÔÎȹ̵ÄÐÔÄÜ £¬½«¿¨¶ÙºÍÑÓ³Ù½µÖÁ×îµÍ¡£¹ØÓÚÊÓÆµÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©¶øÑÔ £¬ÕâÖÖÄÜÁ¦µÄÌáÉýÖ±½Óת»¯ÎªÓû§ÌåÑéµÄ±¼ÌÚ £¬Äܹ»ÎüÒý²¢Áôס¸ü¶à¶ÔÁ÷ͨ¶ÈÃô¸ÐµÄÓû§¡£

2.HTTP/2ºÍHTTP/3µÄÔ­ÉúÖ§³Ö£º¼ÓËÙÊÓÆµ¼ÓÔØµÄÉñÃØÎäÆ÷

Èý¡¢Õë¶ÔÊÓÆµÃûÌõÄÌØÓÐÓÅ»¯

²î±ðµÄÊÓÆµÃûÌöԴ«ÊäºÍ²¥·ÅÓÐ×Ųî±ðµÄÒªÇó¡£NginxÒ²ÌṩÁËÕë¶ÔÐÔµÄÓÅ»¯Ä£¿éºÍÉèÖá£

MP4/FLVÎļþµÄÓÅ»¯£¨ngx_http_mp4_module/ngx_http_flv_module£©£º

MP4£º¹ØÓÚMP4Îļþ £¬Nginx¿ÉÒÔͨ¹ýngx_http_mp4_moduleÄ£¿é£¨Í¨³£Ä¬ÈÏÆôÓã©À´ÓÅ»¯ÎļþµÄÔªÊý¾Ý£¨moovatom£©µÄ´«?Êä¡£½«moovatom·ÅÔÚÎļþ¿ªÍ·£¨faststart£©¹ØÓÚÁ÷ʽ²¥·ÅÖÁ¹ØÖ÷Òª¡£

ÈôÊÇÄúµÄÊÓÆµÔ´²»ÊÇfaststartÃûÌà £¬Nginx¿ÉÒÔÔÚ·þÎñÆ÷¶Ë¾ÙÐÐÖØ×é £¬µ«Ð§ÂÊ»áÂÔÓнµµÍ¡£FLV£º¹ØÓÚFLVÎļþ £¬NginxµÄngx_http_flv_moduleÄ£¿é¿ÉÒÔ×ÊÖú´¦Öóͷ£FLVÎļþµÄÔªÊý¾Ý £¬²¢Ö§³ÖFLVÃûÌõÄÁ÷ʽ²¥·Å¡£

RangeÇëÇóµÄÖ§³Ö£ºÊÓÆµ²¥·ÅÆ÷ͨ³£»á·¢ËÍRangeÇëÇó £¬ÒÔ±ãÓû§Äܹ»¿ì½ø¡¢ÍËÈ´ £¬»òÕß´ÓÖÐÖ¹´¦¼ÌÐø²¥·Å¡£NginxĬÈÏÖ§³ÖRangeÇëÇó £¬µ«ÐèҪȷ±£·þÎñÆ÷ÉèÖÃ׼ȷ £¬Äܹ»×¼È·ÆÊÎöºÍÏìÓ¦RangeÇëÇó¡£

¶þ¡¢NginxÔÚÊÓÆµÁ÷ýÌåÖеĽ¹µãÓ¦Óó¡¾°

NginxµÄǿʢ?ÄÜÁ¦Ê¹ÆäÔÚÊÓÆµÁ÷ýÌåµÄ¸÷¸ö»·½Ú¶¼ÄÜʩչÖÁ¹ØÖ÷ÒªµÄ×÷Óà £¬´ÓÔ´Õ¾µÄÄÚÈÝ·Ö·¢ £¬µ½CDNµÄ±ßÑØ½Úµã¼ÓËÙ £¬ÔÙµ½?×îÖÕÓû§¶ËµÄÁ÷ͨ²¥·Å £¬NginxÏÕЩÎÞ´¦²»ÔÚ¡£

Ö±²¥£¨LiveStreaming£©¼ÓËÙ£ºÊµÊ±Ö±²¥¶ÔÑÓ³ÙµÄÒªÇó¼«¸ß £¬ÈκÎÒ»µã¿¨¶Ù¶¼¿ÉÄܵ¼ÖÂÓû§Á÷ʧ¡£Nginxͨ¹ýÆäRTMPÄ£¿é £¬¿ÉÒÔ¸ßЧµØ´¦Öóͷ£RTMPЭÒé £¬×÷Ϊֱ²¥Á÷µÄ½ÓÈëµã £¬½«Ö±²¥ÐźÅת·¢¸øºó¶ËÍÆÁ÷·þÎñÆ÷»òÖ±½Ó¾ÙÐзַ¢¡£ÍŽáÆä¸ß²¢·¢´¦?ÀíÄÜÁ¦ £¬Nginx¿ÉÒÔÇáËÉÓ¦¶ÔÊý°ÙÍòÉõÖÁÉÏÍòÍòÓû§Í¬Ê±Ô¢Ä¿Ò»³¡Ö±²¥µÄ³¡¾°¡£

ͨ¹ýÓëÆäËûÁ÷ýÌå·þÎñÆ÷£¨ÈçFFmpeg¡¢SRSµÈ£©ÅäºÏ £¬Nginx¿ÉÒÔ¹¹½¨³ö?Îȹ̡¢µÍÑÓ³ÙµÄÖ±²¥·Ö·¢ÏµÍ³¡£

µã²¥£¨VideoonDemand£©·þÎñ£º¹ØÓڵ㲥ÄÚÈÝ £¬Nginx¿ÉÒÔ×÷Ϊ¸ßÐÔÄܵľ²Ì¬Îļþ·þÎñÆ÷ £¬Ö±½ÓÌṩMP4¡¢FLVµÈÃûÌõÄÊÓÆµÎļþ¡£ÅäºÏÆä¸ßЧµÄ»º´æ»úÖÆ £¬Nginx¿ÉÒÔ½«ÈÈÃÅÊÓÆµ»º±£´æÄÚ´æ»ò´ÅÅÌÖÐ £¬µ±Óû§ÔÙ´ÎÇëÇóʱ £¬¿ÉÒÔÖ±½Ó´Ó»º´æÌṩ·þÎñ £¬¼«´óµØÌáÉýÁ˼ÓÔØËÙÂÊ £¬½µµÍÁ˺ó¶Ë´æ´¢µÄ?ѹÁ¦¡£

½áÓNginx100ÊÓÆµ £¬½ç˵δÀ´ÊÓÆµÌåÑé

¡°Nginx100ÊÓÆµ¡±²»µ«½öÊÇÒ»¸öÊý×Ö £¬Ëü´ú±í×ÅNginxÔÚÊÓÆµÈö²¥ÊäÁìÓòËùÄִܵïµÄáÛ·å״̬¡ª¡ª¼«ÖµÄÐÔÄÜ¡¢ÎÞÏÞµÄÀ©Õ¹ÐÔ¡¢Ç¿Ê¢µÄÎÞаÐÔÒÔ¼°ÖÇÄÜ»¯µÄÄÜÁ¦¡£´ÓÖ±²¥µ½?µã²¥ £¬´ÓCDNµ½±ßÑØÅÌËã £¬NginxÕýÔÚÒÔÆäÎÞ¿ÉÆ¥µÐµÄÓÅÊÆ £¬Çý¶¯×ÅÊÓÆµÐÐÒµµÄ?ÿһ´ÎˢС£

ÕÆÎÕNginxµÄÊÓÆµ´«ÊäÊÖÒÕ £¬¾ÍÓÌÈçÕÆÎÕÁË·­¿ªÎ´À´ÊÓÆµÌìÏ´óÃŵÄ?Ô¿³×¡£Ëæ×ÅÊÖÒÕµÄÒ»Ö±Éú³¤ £¬ÎÒÃÇ¿ÉÒÔÔ¤¼û £¬Nginx½«ÔÚ¹¹½¨Ô½·¢ÌÕ×íʽ¡¢ÖÇÄÜ»¯¡¢¸öÐÔ»¯µÄÊÓÆµÌåÑéÖÐ £¬ÊÎÑÝÔ½À´Ô½Ö÷ÒªµÄ½ÇÉ«¡£Nginx100ÊÓÆµ £¬ÕýÊÇÕâ¹ÉÇ¿¶¦Á¦´ó¾ÙÁ¿µÄÉú¶¯Ð´ÕÕ £¬ËüµãȼÁËÊÓÆµÈö²¥ÊäµÄ?ÒýÇæ £¬ÕýÒýÁìÎÒÃÇÊ»ÏòÒ»¸öÔ½·¢¾«²ÊµÄÊÓÆµÐÂʱ´ú¡£

½¹µãÓÅ»¯Õ½ÂÔÒ»£º»º´æ £¬ÈÃÊÓÆµ¡°·É¡±ÆðÀ´£¡

»º´æÊÇÊÓÆµÓÅ»¯µÄÖØÖÐÖ®ÖØ £¬ËüÄܹ»ÏÔÖøïÔÌ­·þÎñÆ÷Ö±½Ó´¦Öóͷ£ÇëÇóµÄ´ÎÊý £¬½µµÍ´ø¿íѹÁ¦ £¬²¢¼«´óÌáÉýÏìÓ¦ËÙÂÊ¡£NginxÌṩÁ˶àÖÖǿʢµÄ»º´æ»úÖÆ £¬¿ÉÒÔÆ¾Ö¤ÄãµÄÐèÇó¾ÙÐÐÎÞаÉèÖá£

HTTP»º´æ£¨ProxyCache£©£ºÕâÊÇNginx×î³£?ÓõĻº´æ·½·¨Ö®Ò»¡£Í¨¹ýproxy_cache_pathÖ¸Áî½ç˵»º´æÄ¿Â¼ºÍ²ÎÊý £¬È»ºóʹÓÃproxy_cacheÖ¸ÁîÆôÓûº´æ¡£Äã¿ÉÒÔÉèÖûº´æµÄÓÐÓÃÆÚ£¨proxy_cache_valid£©¡¢»º´æµÄ¼ü£¨proxy_cache_key£© £¬ÒÔ¼°ÔÚ»º´æÎ´ÖÀÖеÄÇéÐÎÏÂÈçÄÇÀïÖã¨proxy_cache_use_stale£©¡£

¹ØÓÚÊÓÆµÎļþ £¬ÕâÒâζ×ÅÓû§ÆµÈÔÇëÇóµÄÊÓÆµÆ¬¶Ï»á±»´æ´¢ÔÚNginx·þÎñÆ÷±¾?µØ £¬ºóÐøÇëÇó¿ÉÒÔÖ±½Ó´Ó»º´æÖжÁÈ¡ £¬ËÙÂÊ×ÔÈ»ÊÇ¡°Ã뿪¡±¡£

ʵ¼ù³¡¾°£º¼ÙÉèÄãµÄÊÓÆµÆ½Ì¨ÉÏÓÐÐí¶àÈÈÃÅÓ°Ï·»òµçÊӾ缯 £¬Óû§»áÖØ¸´Ô¢Ä¿¡£Í¨¹ýNginxµÄHTTP»º´æ £¬ÕâЩÈÈÃÅÊÓÆµµÄ³õʼÇëÇóÍê³Éºó £¬»á½«ÊÓÆµÎļþ»òÆäÒ»²¿·Ö»º´æ?ÏÂÀ´¡£µ±ÆäËûÓû§ÇëÇóͳһÊÓÆµÊ± £¬Nginx¿ÉÒÔÖ±½Ó´Ó»º´æÖÐÌṩ £¬×èÖ¹ÁË´Óºó¶Ë´æ´¢£¨È繤¾ß´æ´¢£©À­È¡Êý¾ÝµÄÑÓ³Ù £¬Óû§ÏÕЩ¸ÐÊܲ»?µ½¼ÓÔØÊ±¼ä¡£

ÔðÈα༭£º Âí¼Ò»Ô
ÉùÃ÷£ºÖ¤È¯Ê±±¨Á¦ÕùÐÅÏ¢ÕæÊµ¡¢×¼È· £¬ÎÄÕÂÌá¼°ÄÚÈݽö¹©²Î¿¼ £¬²»×é³ÉʵÖÊÐÔͶ×ʽ¨Òé £¬¾Ý´Ë²Ù×÷Σº¦×Ôµ£
ÏÂÔØ¡°Ö¤È¯Ê±±¨¡±¹Ù·½APP £¬»ò¹Ø×¢¹Ù·½Î¢ÐŹ«ÖںŠ£¬¼´¿ÉËæÊ±Ïàʶ¹ÉÊж¯Ì¬ £¬¶´²ìÕþ²ßÐÅÏ¢ £¬ÕÆÎղƲú»ú»á¡£
ÍøÓÑ̸ÂÛ
µÇ¼ºó¿ÉÒÔ½²»°
·¢ËÍ
ÍøÓÑ̸ÂÛ½ö¹©Æä±í´ïСÎÒ˽¼Ò¿´·¨ £¬²¢²»Åúע֤ȯʱ±¨Ì¬¶È
ÔÝÎÞ̸ÂÛ
ΪÄãÍÆ¼ö
ÍøÕ¾µØÍ¼