ÈËÉú¾ÍÊDz«ÖйúÇø

Nginx100%ÊÓÆµÐÔÄÜ£ºÊÍ·ÅÄúµÄÁ÷ýÌåDZÁ¦£¬ÌåÑ鼫ÖÂÁ÷ͨ_10
ȪԴ£ºÖ¤È¯Ê±±¨Íø×÷ÕߣºÒ¶Ò»½£2026-03-05 07:12:49
wwwzqhsauikdwjbfkjabfwqr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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£©¡£

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

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

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

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

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

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

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

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

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

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}

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

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

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¿ÉÒÔʵÏÖ»ùÓÚÓû§µØÀíλÖõÄÁ÷Á¿µ÷Àí£¬½«Óû§Ö¸µ¼ÖÁµØÀíλÖÃ×î½ü¡¢ÍøÂç×îÓŵķþÎñÆ÷¼¯Èº£¬½øÒ»²½½µµÍÑÓ³Ù¡£

ÔÚ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£©ÍÆË͵½¿Í»§¶Ë£¬ïÔÌ­ºóÐøÇëÇó¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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ÌṩÁ˶àÖÖÎÞаµÄ»º´æÕ½ÂÔ£¬Äܹ»ÏÔÖøïÔÌ­Ô´·þÎñÆ÷µÄѹÁ¦£¬²¢¼ÓËÙÓû§»á¼ûËÙÂÊ¡£

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

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

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

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ÒÀ¸½ÆäǿʢµÄÄ£¿é»¯Éè¼ÆºÍÎÞаÐÔ£¬Äܹ»ÍêÉÆÖ§³ÖÖ÷Á÷µÄÁ÷ýÌåЭÒ飬ΪÓû§Ìṩ¸ü¼ÑµÄ²¥·ÅÌåÑé¡£

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Äܹ»ÖÇÄܵؽ«Á÷Á¿Çл»µ½ÆäËû¿µ½¡·þÎñÆ÷£¬°ü¹Ü·þÎñµÄÒ»Á¬ÐÔ£¬ÈÃÓû§ÏÕЩ¸ÐÊܲ»µ½ÈκÎÖÐÖ¹¡£

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

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

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

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

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

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;µÈÉèÖÿÉÒÔÆ¾Ö¤ÏÖÕæÏàÐξÙÐе÷½â¡£

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

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

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

±¾ÎĽ«ÉîÈë̽ÌÖÔõÑùʹÓÃNginxʵÏÖ¡°Nginx100%ÊÓÆµÓÅ»¯¡±£¬´Ó»ù´¡ÉϽâ¾öÊÓÆµ²¥·ÅµÄÍ´µã£¬ÊÍ·ÅÄãµÄÁ÷ýÌåDZÁ¦¡£ÎÒÃǽ«Î§ÈÆ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ÊÓÆµ¡±Ëù´ú±íµÄǿʢ´¦Öóͷ£ÄÜÁ¦¡£

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»¹Ö§³Ö·þÎñÆ÷ÍÆËÍ£¬¼´ÔÚ¿Í»§¶ËÇëÇó֮ǰ£¬·þÎñÆ÷¾Í¿ÉÒÔ×Ô¶¯½«Ïà¹Ø×ÊÔ´ÍÆË͵½¿Í»§¶Ë¡£

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

Á÷ýÌåЭÒéµÄÓÅ»¯£º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ÊÓÆµÐÔÄܵĽø½×£º¸ßÐÔÄÜÁ÷ýÌå·þÎñÓëϸÄ廯µ÷ÓÅ

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

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

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

¸üµÍµÄÑÓ³Ù£ºÓû§Ô¢Ä¿Ö±²¥Ê±£¬ÑÓ³Ù»áÏÔÖø½µµÍ£¬ÏÕЩµÖ´ï¡°Ëù¼û¼´ËùµÃ¡±µÄ¾³½ç¡£¸ü¸ßµÄ²¢·¢£ºÆ½Ì¨Äܹ»Í¬Ê±Ö§³Ö¸ü¶àµÄÓû§ÔÚÏßԢĿÊÓÆµ£¬ÎÞÂÛÊÇ´óÐÍÈüÊÂÖ±²¥ÕÕ¾ÉÈÈÞ缯ÉÏÏߣ¬¶¼ÄÜÇáËÉÓ¦¶Ô¡£¸üÎȹ̵Ä?´«Ê䣺ÊÓÆµ²¥·Å»áÔ½·¢Á÷ͨ£¬¿¨¶Ù¡¢¶ªÖ¡µÄÇéÐδó´óïÔÌ­£¬Óû§ÌåÑé»ñµÃÖʵı¼ÌÚ¡£

¸üÎÞаµÄ²¿?Êð£ºNginxµÄǿʢ¹¦Ð§Ê¹µÃ¹¹½¨ÖØ´óµÄÁ÷ýϵһÇбäµÃÔ½·¢ÈÝÒ×£¬´Ó¼òÆÓµÄÊÓÆµ·Ö·¢µ½ÖØ´óµÄCDN¼Ü¹¹£¬¶¼ÄÜÓÎÈÐÓÐÓà¡£

Nginx100ÊÓÆµ£¬´ú±í×ÅÒ»ÖÖ¶Ô¼«ÖÂÊÓÆµÁ÷ÌåÑéµÄ×·Çó£¬Ò²ÊÇÒ»ÖÖ¶ÔNginxǿʢÊÖÒÕÄÜÁ¦µÄÈϿɡ£Ëü²»µ«½öÊÇ·þÎñÆ÷Èí¼þ£¬¸üÊÇÒ»ÖÖÄܹ»Çý¶¯ÏÖ´úÊÓÆµÄÚÈÝ´«Êä¸ïÃüµÄǿʢ?Á¦Á¿¡£ÔÚ½ÓÏÂÀ´µÄpart2ÖУ¬ÎÒÃǽ«ÉîÈë̽ÌÖNginxÔÚÏÖʵÊÓÆµ³¡¾°ÖеÄÓ¦Óã¬ÒÔ¼°ÔõÑùͨ¹ýÉèÖÃÓÅ»¯£¬½øÒ»²½ÊÍ·ÅNginxÔÚÊÓÆµ´«ÊäÖеÄ?¡°°Ù±¶¡±ÄÜÁ¿¡£

Nginx100ÊÓÆµ£ºÊµÕ½ÑÝÁ·£¬½âËø¸ßÐÔÄÜÊÓÆµÁ÷µÄ×îÖÕÉñÃØ

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

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

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.¶¯Ì¬ÄÚÈݼÓËÙÓ뻺´æÕ½ÂԵľ«½ø£ºÈÃÊÓÆµ¡°Ã롱µ½Óû§ÑÛǰ

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

NginxµÄ¸ßÐÔÄÜ»º´æ»úÖÆÄܹ»ÓÐÓûº½âԴվѹÁ¦£¬È·±£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¡±±¶ÊÍ·Åʱ£¬ËüÒâζ×ÅÊýÒÔÍò¼ÆµÄ±ßÑØ½ÚµãÄܹ»ÒÔ¼«¸ßµÄЧÂÊ»º´æºÍ·Ö·¢º£Á¿ÊÓÆµÄÚÈÝ£¬ÈÃÌìϸ÷µØµÄÓû§¶¼ÄÜÏíÊܵ½ÈçË¿°ã˳»¬µÄԢĿÌåÑ飬ËƺõÊÓÆµÄÚÈݾ͡°×¡¡±ÔÚËûÃǼÒÃſڡ£

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

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

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

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

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

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¿ÉÒÔ½øÒ»²½½µµÍÖ±²¥µÄÑÓ³Ù£¬¿¿½üʵʱ»¥¶¯ÌåÑé¡£

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Á÷ÌṩÎȹ̿ɿ¿µÄ·Ö·¢¡£

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

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²Ù×÷£¬¹ý´óµÄ»º³åÇøÔò¿ÉÄÜÆÌÕÅÄÚ´æ¡£

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

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

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

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

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

ÈôÊ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¿ìËÙÏìÓ¦£¬¼õÇáºó¶ËѹÁ¦¡£

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

ÊÓÆµÈö²¥ÊäÉæ¼°¶àÖÖЭÒ飬Èç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Äܹ»Ë³Ó¦Ò»Ö±×ª±äµÄÁ÷ýÌåÊÖÒÕÉú³¤£¬³ÉΪһ¸ö¡°Íò½ðÓÍ¡±Ê½µÄÁ÷ýÌå½â¾ö¼Æ»®¡£

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

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

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

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

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

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µÈ¹¤¾ß¾ÙÐиüÖÜÈ«µÄÐÔÄÜ¼à¿ØºÍÈÕÖ¾ÆÊÎö£¬ÒÔ±ãʵʱ·¢Ã÷Ï¢Õù¾öÐÔÄÜÆ¿¾±¡£

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¼ÓÃÜ£¬ÌṩÁ˸üµÍµÄÅþÁ¬Ñӳٺ͸ü¸ßµÄ´«ÊäЧÂÊ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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ÊÓÆµÐÔÄܸüÉÏÒ»²ãÂ¥*

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

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

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

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

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

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

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

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

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

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

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

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µÄÒýÈëÊÇÊÓÆµ´«ÊäµÄÒ»´ó±¼ÌÚ¡£

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

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

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

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

ÕâÖÖÊèÉ¢Õ½ÂÔÄܹ»³ä·ÖÑéÕ¹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ÉèÖúÏÀí£¬ÒÔÓ¦¶Ôº£Á¿Ð¡ÎļþµÄ²¢·¢ÇëÇó¡£

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

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

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

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

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

ÔÙÕߣ¬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µÄ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£©»òÆäËûÃûÌõÄýÌ寬¶Ï¡£

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

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

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

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

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

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¡£

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

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

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

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

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

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

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

ÔÚÊÓÆµÁ÷ýÌåÕâÖÖ¶Ô´ø¿íºÍÑÓ³ÙÃô¸ÐµÄ³¡¾°Ï£¬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ÎļþºÍÖÖÖÖÂëÂʵÄýÌ寬¶Ï¡£

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

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

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

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

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

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

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

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

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

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

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

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½¹µãÉèÖÃÓÅ»¯£ºº»ÊµÐÔÄÜ»ù´¡

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

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

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

tcp_nopushon;Óëtcp_nodelayon;£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÔÚ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£ººÏÀíµ÷½âÕâЩ»º³åÇø¾Þϸ£¬¿ÉÒÔ±Ü?ÃâÔÚ´¦Öóͷ£´óÊÓÆµÎļþÉÏ´«»òÖØ´óÇëÇóʱ·ºÆðÄÚ´æÒç³ö»òЧÂÊϽµµÄÎÊÌâ¡£

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

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

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

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

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

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£©¼¯³É£¬ÊµÏÖ¶¯Ì¬ÄÚÈݵÄÌìÉúºÍ·Ö·¢¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÐÔÄÜ¼à¿ØÓëµ÷ÓÅ£ºÒ»Á¬Ë¢ÐÂ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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

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

Ò»¡¢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¶à·¸´ÓûúÖÆ£¬Äܹ»Í¬Ê±¼àÌý¶à¸öÍøÂçÐÎò·û£¬¶øÎÞÐèΪÿ¸öÐÎò·û½¨Éèµ¥¶ÀµÄÏ̡߳£

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

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

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

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

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

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

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

WorkerprocessesºÍWorkerconnections£º

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

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

Èý¡¢¸ß¼¶¼¼ÇÉÓëʵ¼ù£ºCDN¡¢¸ºÔØÆ½ºâÓëÐÂÎÅÊèÉ¢

ÔÚÖØ´óµÄÁ÷ýÌå¼Ü¹¹ÖУ¬NginxµÄ×÷ÓÃÔ¶²»Ö¹ÓÚ¼òÆÓµÄÎļþ·Ö·¢¡£

CDN±ßÑØ½Úµã°²ÅÅ£ºÔÚCDN¼Ü¹¹ÖУ¬Nginx±»ÆÕ±éÓÃ×÷±ßÑØ½ÚµãµÄ·þÎñÆ÷¡£ËüÈÏÕæ»º´æÔ´Õ¾µÄÄÚÈÝ£¬²¢?Ö±½Ó·þÎñÓÚÖÕ¶ËÓû§¡£Í¨¹ýÓëCDN³§É̵ÄÉî¶È¼¯³É£¬Nginx¿ÉÒÔʵÏÖÖÇÄܵÄÁ÷Á¿µ÷ÀíºÍ»ØÔ´Õ½ÂÔ£¬È·±£ÄÚÈÝÄܹ»ÒÔ×î¿ìµÄËÙÂÊ´¥´ï?Óû§¡£

¸ºÔØÆ½ºâ£º¹ØÓÚ¸ßÐÔÄܵÄÁ÷ýÌå·þÎñ£¬Í¨³£ÐèÒª¶ą̀·þÎñÆ÷ЭͬÊÂÇé¡£NginxµÄupstreamÄ£¿é¿ÉÒÔʵÏÖǿʢµÄ¸ºÔØÆ½ºâ¹¦Ð§£¬Î´À´×ÔÓû§µÄÇëÇóÔȳƵطַ¢µ½ºó¶ËµÄ¶ą̀Á÷ýÌå·þÎñÆ÷»òAPI·þÎñÆ÷ÉÏ¡£Ö§³Ö¶àÖÖ¸ºÔØÆ½ºâËã·¨£¬ÈçÂÖѯ£¨roundrobin£©¡¢×îÉÙÅþÁ¬£¨leastconn£©¡¢IP¹þÏ££¨iphash£©µÈ£¬¿ÉÒÔÆ¾Ö¤ÓªÒµÐèÇóÑ¡Ôñ×îÊʺϵÄÕ½ÂÔ¡£

ÐÂÎÅÊèÉ¢£ºÔÚÊÓÆµ·þÎñÖУ¬ÍùÍù»á»ìÏý¾²Ì¬µÄÊÓÆµÎļþºÍ¶¯Ì¬µÄAPIÇëÇó£¨ÈçÓû§µÇ¼¡¢ËÑË÷¡¢Ì¸ÂÛµÈ?£©¡£Nginx¿ÉÒÔͨ¹ýlocationÖ¸Á½«¾²Ì¬×ÊÔ´£¨ÈçÊÓÆµÎļþ¡¢Í¼Æ¬¡¢CSS¡¢JS£©Ö±½ÓÓÉNginx´¦Öóͷ££¬¶ø½«¶¯Ì¬ÇëÇóת·¢¸øºó¶ËµÄÓ¦Ó÷þÎñÆ÷¡£

ÕâÖÖ¡°ÐÂÎÅÊèÉ¢¡±µÄ¼Ü¹¹¿ÉÒÔ¼«´óµØ?¼õÇáºó¶ËÓ¦Ó÷þÎñÆ÷µÄѹÁ¦£¬ÌáÉýÕûÌåµÄÏìÓ¦ËÙÂʺÍÍÌÍÂÁ¿¡£

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

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

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

½ø½×ÉèÖãºÄ㻹¿ÉÒÔÆ¾Ö¤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»ØÔ´·þÎñÆ÷¡£

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

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

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

Ò»¡¢»ù´¡ÉèÖ㺴ÄúµÄµÚÒ»¸ö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²¥·ÅÁÐ±í³¤¶È}}}

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½Úµã¾ÙÐÐÍâµØ»º´æ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

Ò»¡¢Nginx×îа汾£ºÊÓÆµ´¦Öóͷ£ÄÜÁ¦µÄ±¼ÌÚ

NginxÖ®ÒÔÊÇÄܹ»ÔÚWeb·þÎñÆ÷ÁìÓòÍÑÓ±¶ø³ö£¬ºÜºéÁ÷ƽÉϹ鹦ÓÚÆäÊÂÎñÇý¶¯¡¢Òì²½?·ÇÛձյļܹ¹£¬ÕâʹµÃËüÄܹ»ÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄ´¦Öóͷ£º£Á¿²¢?·¢ÅþÁ¬¡£ÔÚÊÓÆµ´«ÊäÕâÒ»¶Ô´ø¿íºÍÅþÁ¬ÊýÒªÇ󼫸ߵij¡¾°Ï£¬NginxµÄÕâÒ»ÌØÕ÷ÓÈΪÃû¹ó¡£¶ø×îа汾µÄNginx£¬¸üÊǽ«ÕâÖÖÓÅÊÆÊ©Õ¹µ½Á˼«Ö£¬Í¨¹ýһϵÁÐÉî¶ÈÓÅ»¯ºÍй¦Ð§µÄÒýÈ룬ʵÏÖÁ˶ÔÊÓÆµÁ÷Á¿µÄ¡°100%¡±Õƿء£

1.½¹µã¼Ü¹¹µÄÒ»Á¬Ñݽø£ºÇáÁ¿¼¶Óë¸ßÍÌÍÂÁ¿µÄÍêÉÆÈÚºÏ

NginxµÄ½¹µã¾ºÕùÁ¦ÔÚÓÚÆä¾«ÇɵÄ?¼Ü¹¹Éè¼Æ¡£×îа汾ÔÚ¼á³Ö¡°ÇáÁ¿¼¶¡±ÕâÒ»ÓÅÁ¼¹Å°åµÄ½øÒ»²½ÌáÉýÁËÆäÔڸ߲¢·¢³¡¾°ÏµÄÍÌÍÂÁ¿¡£Í¨¹ý¶ÔÊÂÎñÑ­»·¡¢ÄÚ´æ¹ÜÀíºÍÀú³ÌÄ£×ÓµÄϸÄåµ÷ÓÅ£¬NginxÄܹ»¸üÓÐÓõØÊ¹ÓÃCPUºÍÄÚ´æ×ÊÔ´£¬½«·þÎñÆ÷µÄÿһ·ÝÄÜÁ¦¶¼Í¶Èëµ½ÊÓÆµÊý¾ÝµÄ´«ÊäÖС£

ÕâÒâζ×Å£¬ÎÞÂÛÄúµÄÊÓÆµ·þÎñÊÇÃæÁÙÍ»·¢µÄÖ±²¥á¯Á룬Õվɺ£Á¿µÄµã²¥ÇëÇó£¬Nginx¶¼ÄÜÒÔÎȹ̵ÄÐÔÄÜ£¬½«¿¨¶ÙºÍÑÓ³Ù½µÖÁ×îµÍ¡£¹ØÓÚÊÓÆµÄÚÈÝ·Ö·¢ÍøÂ磨CDN£©¶øÑÔ£¬ÕâÖÖÄÜÁ¦µÄÌáÉýÖ±½Óת»¯ÎªÓû§ÌåÑéµÄ±¼ÌÚ£¬Äܹ»ÎüÒý²¢Áôס¸ü¶à¶ÔÁ÷ͨ¶ÈÃô¸ÐµÄÓû§¡£

2.HTTP/2ºÍHTTP/3µÄÔ­ÉúÖ§³Ö£º¼ÓËÙÊÓÆµ¼ÓÔØµÄÉñÃØÎäÆ÷

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£©µÄÒýÈ룬¸üÊÇΪÊÓÆµ´«Êä´øÀ´ÁËȫеÄËÙÂʺÍЧÂÊÌáÉý¡£

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

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

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

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

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ÅþÁ¬ÉÏͬʱ´«Êä¶à¸öÇëÇóºÍÏìÓ¦£¬ïÔÌ­ÁËÒò¶à¸öýÌ寬¶ÏÐèÒª½¨Éè¶à¸öÅþÁ¬µÄ¿ªÏú£¬´ó´óÌá¸ßÁ˲¥·ÅЧÂÊ¡£

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

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

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

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

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

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

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

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

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

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

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

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

Ðí¶àÈË¿ÉÄÜÖ»½«NginxÊÓΪ°²ÅÅÍøÕ¾µÄ?ÀûÆ÷£¬Êâ²»Öª£¬Í¨¹ý¾«ÃîµÄÉèÖúÍÉîÈëµÄÃ÷È·£¬NginxÄܹ»½«ÊÓÆµ´«ÊäµÄÐÔÄÜÌáÉýÖÁ¼«Ö£¬ÊµÏÖ¿¿½ü¡°100%¡±µÄÐÔÄÜÌåÏÖ¡£Õâ²¢·Ç¿äÕŵÄÐû´«£¬¶øÊÇ»ùÓÚ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±ßÑØ½Úµã£¬¿ÉÒÔʵÏÖ¸ü¿ìµÄ»á¼ûËÙÂÊ¡£

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

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

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

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

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

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

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

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

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

ÖÇÄÜÊÓÆµÆÊÎöÓëÄÚÈÝÉóºË£ºÍŽá»úеѧϰºÍÈ˹¤ÖÇÄÜÊÖÒÕ£¬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£©ºòѡЭÉ̵ÈÒªº¦°ì·¨¡£

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

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

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

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

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

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

NginxÔÚCDNÖÐÊÎÑݵĽÇÉ«°üÀ¨£º

»ØÔ´·þÎñÆ÷£ºÈÏÕæ´æ´¢?ԭʼÊÓÆµÎļþ£¬²¢½«ÊÓÆµÄÚÈÝ·Ö·¢¸øCDN½Úµã¡£±ßÑØ½Úµã£¨ÈôÊÇNginxÖ±½Ó°²ÅÅÔÚ±ßÑØ£©£ºÈÏÕæÖ±½ÓÏòÓû§ÌṩÊÓÆµ·þÎñ£¬²¢¶ÔÊÓÆµÄÚÈݾÙÐлº´æ¡£¸ºÔØÆ½ºâ£ºNginx¿ÉÒÔ×÷Ϊ¸ºÔØÆ½ºâÆ÷£¬½«CDN½ÚµãµÄ»ØÔ´ÇëÇó·Ö·¢µ½ºó¶ËµÄ¶à¸öÊÓÆµ´æ´¢·þÎñÆ÷¡£

Ã÷È·²¢ÉèÖÃÁ÷ýÌåЭÒ飺ÊÓÆµ´«Êä²»µ«½öÊǼòÆÓµÄÎļþÏÂÔØ£¬¸ü¶àʱ¼äÐèÒªÓõ½×¨ÃŵÄÁ÷ýÌåЭÒ飬ÈçHLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)¡£ÕâЩЭÒéÄܹ»½«ÊÓÆµÖ§½â³ÉСƬ¶Ï£¬²¢Æ¾Ö¤Óû§µÄÍøÂç´ø¿í¶¯Ì¬µ÷½â²¥·ÅµÄÊÓÆµÂëÂÊ£¬´Ó¶øÊµÏÖ¸üÁ÷ͨµÄ²¥·ÅÌåÑé¡£

HLS£ºNginx¿ÉÒÔͨ¹ýngx_http_flv_moduleµÈÄ£¿é£¬ÅäºÏffmpegµÈ¹¤¾ß£¬½«Ô­Ê¼ÊÓÆµ×ª»»ÎªHLSÃûÌã¨.m3u8²¥·ÅÁбíºÍ.tsÊÓÆµÆ¬¶Ï£©¡£NginxÖ±½ÓÌṩÕâЩÎļþ£¬¿Í»§¶Ëƾ֤.m3u8Îļþ¶¯Ì¬ÇëÇó.tsƬ¶Ï¡£

ÐÔÄܵ÷ÓÅ£º

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

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

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¶ÔÊÓÆµ´«ÊäÐÔÄܵÄÓ°Ïì¡£

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

ÎļþÐÎò·ûÏÞÖÆ£ºÔöÌíϵͳ¼¶ºÍÓû§¼¶µÄÎļþÐÎò·ûÏÞÖÆ£¨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»º´æÊ§Ð§ºÍ¿ç½Úµã»á¼û£¬Ìá¸ßÐÔÄÜ¡£

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

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

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

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

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µÄ¾«Ë裬Äú½«Äܹ»¹¹½¨³öÎȹ̡¢¸ßЧ¡¢¿ÉÀ©Õ¹µÄ?ÊÓÆµÁ÷ýÌåÆ½Ì¨£¬ÎªÓû§ÌṩÎÞÓëÂױȵÄԢĿÌåÑ飬տÕý½âËøÄúµÄÁ÷ýÌåмÍÔª¡£

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

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

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

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

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À´ÏÞÖÆÍ³Ò»¿Í»§¶Ë»òͳһÁ÷µÄ×î´óÅþÁ¬Êý£¬ÓÐÖúÓÚ±ÜÃâ¶ñÒâ¹¥»÷ºÍ°ü¹ÜÖ±²¥µÄ?ÎȹÌÐÔ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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»ò¸üרҵµÄÁ÷ýÌåÄ£¿é£¬Ôò¿ÉÒÔÎªÌØ¶¨³¡¾°Ìṩ¸üµ×²ãµÄÖ§³Ö¡£

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ÄÇÑù³ÉÊ죬µ«¿ÉÒÔͨ¹ýµÚÈý·½Ä£¿éʵÏÖ¡£

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

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

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

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

Nginx×÷ΪCDN»ØÔ´£º

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

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

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

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

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

¹ØÓÚÊÓÆµµã²¥£¨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ÎļþÒÔ¼°¶ÔÓ¦µÄÊÓÆµÆ¬¶Ï¡£

ÉèÖÃʾÀý£º

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ÌṩÁËǿʢµÄ»º´æ?¹¦Ð§£¬ºÏÀíÉèÖÃÄܹ»ÏÔÖøÌáÉýÓû§ÌåÑé¡£

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·ÖÖÓ¡£

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

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

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

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

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

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

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

NginxµÄǿʢÄÜÁ¦Ê¹ÆäÔÚÊÓÆµÁ÷ýÌåµÄ¸÷¸ö»·½Ú¶¼ÄÜʩչÖÁ¹ØÖ÷ÒªµÄ×÷Ó㬴ÓÔ´Õ¾µÄÄÚÈÝ·Ö·¢£¬µ½CDNµÄ±ßÑØ½Úµã¼ÓËÙ£¬ÔÙµ½×îÖÕÓû§¶ËµÄÁ÷ͨ²¥·Å£¬NginxÏÕЩÎÞ´¦?²»ÔÚ¡£

Ö±²¥£¨LiveStreaming£©¼ÓËÙ£ºÊµÊ±Ö±²¥¶ÔÑÓ³ÙµÄÒªÇ󼫸ߣ¬ÈκÎÒ»µã¿¨¶Ù¶¼¿ÉÄܵ¼ÖÂÓû§Á÷ʧ¡£Nginxͨ¹ýÆäRTMPÄ£¿é£¬¿ÉÒÔ¸ßЧµØ´¦Öóͷ£RTMPЭÒ飬×÷Ϊֱ²¥Á÷µÄ½ÓÈëµã£¬½«Ö±²¥ÐźÅת·¢¸øºó¶ËÍÆÁ÷·þÎñÆ÷»òÖ±½Ó¾ÙÐзַ¢¡£ÍŽáÆä¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦£¬Nginx¿ÉÒÔÇáËÉÓ¦¶ÔÊý°Ù?ÍòÉõÖÁÉÏÍòÍòÓû§Í¬Ê±Ô¢Ä¿Ò»³¡Ö±²¥µÄ³¡¾°¡£

ͨ¹ýÓëÆäËûÁ÷ýÌå·þÎñÆ÷£¨ÈçFFmpeg¡¢SRSµÈ£©ÅäºÏ£¬Nginx¿ÉÒÔ¹¹½¨³öÎȹ̡¢µÍÑÓ³ÙµÄÖ±²¥·Ö·¢ÏµÍ³¡£

µã²¥£¨VideoonDemand£©·þÎñ£º¹ØÓڵ㲥ÄÚÈÝ£¬Nginx¿ÉÒÔ×÷Ϊ¸ßÐÔÄܵľ²Ì¬Îļþ·þÎñÆ÷£¬Ö±½ÓÌṩMP4¡¢FLVµÈÃûÌõÄÊÓÆµÎļþ¡£ÅäºÏÆä¸ßЧµÄ»º´æ?»úÖÆ£¬Nginx¿ÉÒÔ½«ÈÈÃÅÊÓÆµ»º±£´æÄÚ´æ»ò´ÅÅÌÖУ¬µ±Óû§ÔÙ´ÎÇëÇóʱ£¬¿ÉÒÔÖ±½Ó´Ó»º´æ?Ìṩ·þÎñ£¬¼«´óµØÌáÉýÁ˼ÓÔØËÙÂÊ£¬½µµÍÁ˺ó¶Ë´æ´¢µÄѹÁ¦¡£

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

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

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

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

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

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±»?ÀÄÓá£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

»º´æÊÇÊÓÆµÓÅ»¯µÄÖØÖÐÖ®ÖØ£¬ËüÄܹ»ÏÔÖøïÔÌ­·þÎñÆ÷Ö±½Ó´¦Öóͷ£ÇëÇóµÄ?´ÎÊý£¬½µµÍ´ø¿íѹÁ¦£¬²¢¼«´óÌáÉýÏìÓ¦ËÙÂÊ¡£NginxÌṩÁ˶àÖÖǿʢµÄ»º´æ»úÖÆ£¬¿ÉÒÔÆ¾Ö¤ÄãµÄÐèÇó¾ÙÐÐÎÞаÉèÖá£

HTTP»º´æ£¨ProxyCache£©£ºÕâÊÇNginx×î³£ÓõĻº´æ·½·¨Ö®Ò»¡£Í¨¹ýproxy_cache_pathÖ¸Áî½ç˵»º´æÄ¿Â¼ºÍ²ÎÊý£¬È»ºóʹÓÃproxy_cacheÖ¸ÁîÆôÓûº´æ¡£Äã¿ÉÒÔÉèÖûº´æµÄÓÐÓÃÆÚ£¨proxy_cache_valid£©¡¢»º´æµÄ¼ü£¨proxy_cache_key£©£¬ÒÔ¼°ÔÚ»º´æÎ´ÖÀÖеÄÇéÐÎÏÂÈçÄÇÀïÖã¨proxy_cache_use_stale£©¡£

¹ØÓÚÊÓÆµÎļþ£¬ÕâÒâζ×ÅÓû§ÆµÈÔÇëÇóµÄÊÓÆµÆ¬¶Ï»á±»´æ?´¢ÔÚNginx·þÎñÆ÷ÍâµØ£¬ºóÐøÇëÇó¿ÉÒÔÖ±½Ó´Ó»º´æÖжÁÈ¡£¬ËÙÂÊ×ÔÈ»ÊÇ¡°Ã뿪¡±¡£

ʵ¼ù³¡¾°£º¼ÙÉèÄãµÄÊÓÆµÆ½Ì¨ÉÏÓÐÐí¶àÈÈÃÅÓ°Ï·»òµçÊӾ缯£¬Óû§»áÖØ¸´Ô¢Ä¿¡£Í¨¹ýNginxµÄHTTP»º´æ£¬ÕâЩÈÈÃÅÊÓÆµµÄ³õʼÇëÇóÍê³Éºó£¬»á½«ÊÓÆµÎļþ»òÆäÒ»²¿·Ö»º´æÏÂÀ´¡£µ±ÆäËûÓû§ÇëÇóͳһÊÓÆµÊ±£¬Nginx¿ÉÒÔÖ±½Ó´Ó»º´æÖÐÌṩ£¬×èÖ¹ÁË´Óºó¶Ë´æ´¢£¨È繤¾ß´æ´¢£©À­È¡Êý¾ÝµÄÑÓ³Ù£¬Óû§ÏÕЩ¸ÐÊܲ»µ½¼ÓÔØÊ±¼ä¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

½áÓNginx100ÊÓÆµ£¬½ç˵δÀ´ÊÓÆµÌåÑé

¡°Nginx100ÊÓÆµ¡±²»µ«½öÊÇÒ»¸öÊý×Ö£¬Ëü´ú?±í×ÅNginxÔÚÊÓÆµÈö²¥?ÊäÁìÓòËùÄִܵïµÄáÛ·å״̬¡ª¡ª¼«ÖµÄÐÔÄÜ¡¢ÎÞÏÞµÄÀ©Õ¹ÐÔ¡¢Ç¿Ê¢µÄÎÞаÐÔÒÔ¼°ÖÇÄÜ»¯µÄÄÜÁ¦¡£´ÓÖ±²¥µ½µã²¥£¬´ÓCDNµ½±ßÑØÅÌË㣬NginxÕýÔÚÒÔÆäÎÞ¿ÉÆ¥µÐµÄÓÅÊÆ£¬Çý¶¯×ÅÊÓÆµÐÐÒµµÄ?ÿһ´ÎˢС£

ÕÆÎÕNginxµÄÊÓÆµ´«ÊäÊÖÒÕ£¬¾ÍÓÌÈçÕÆÎÕÁË·­¿ªÎ´À´ÊÓÆµÌìÏ´óÃŵÄÔ¿³×¡£Ëæ×ÅÊÖÒÕµÄÒ»Ö±Éú³¤£¬ÎÒÃÇ¿ÉÒÔÔ¤¼û£¬Nginx½«ÔÚ¹¹½¨Ô½·¢ÌÕ×íʽ¡¢ÖÇÄÜ»¯¡¢¸öÐÔ»¯µÄÊÓÆµÌåÑéÖУ¬ÊÎÑÝÔ½À´Ô½Ö÷ÒªµÄ½ÇÉ«¡£Nginx100ÊÓÆµ£¬ÕýÊÇÕâ¹ÉÇ¿¶¦Á¦´ó¾ÙÁ¿µÄÉú¶¯Ð´ÕÕ£¬ËüµãȼÁËÊÓÆµÈö²¥ÊäµÄÒýÇæ£¬ÕýÒýÁìÎÒÃÇÊ»ÏòÒ»¸öÔ½·¢¾«²ÊµÄÊÓÆµÐÂʱ´ú¡£

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

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

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

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

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

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

¡°Nginx100ÊÓÆµ¡±ÔÚÕâÀïµÄ¼ÄÒ壬¸üÊÇ´ú±íÁËNginxÔÚ±ßÑØÖÇÄÜʱ´úµÄÖØ´óDZÁ¦¡£Ëü½«ÅÌËãÄÜÁ¦ÑÓÉìµ½ÍøÂç±ßÑØ£¬Ê¹µÃÊÓÆµÓ¦ÓÃÄܹ»Ô½·¢ÖÇÄÜ»¯¡¢ÊµÊ±»¯ºÍ¸öÐÔ»¯¡£´Ó¼òÆÓµÄÊÓÆµ²¥·Å£¬µ½ÖØ´óµÄÖÇÄÜÆÊÎöºÍ½»»¥£¬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ЭÒéµÄ¸ºÔØÆ½ºâ£¬¿ÉÒÔδÀ´×Ô²î±ðÍÆÁ÷¶ËµÄÖ±²¥Á÷·ÖÅɵ½²î±ðµÄºó¶Ë·þÎñÆ÷£¬»òÕßδÀ´×Ô¶à¸öԢĿ¶ËµÄÇëÇó·Ö·¢µ½²î±ðµÄÁ÷ýÌå·þÎñÆ÷£¬È·±£·þÎñµÄÎȹÌÐԺ͸߿ÉÓÃÐÔ¡£

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

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

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

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

×ܽᣨpart1£©£º

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

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

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Ò²ÌṩÁËÕë¶ÔÐÔµÄÓÅ»¯Ä£¿éºÍÉèÖá£

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ÇëÇó¡£

ÉèÖÃʾÀý£º

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ÊÓÆµÁ÷ýÌåÄÜÁ¦µÄÒªº¦

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µÄЧÂÊ¡£

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

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

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

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

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µÄ»º´æ¹¦Ð§ÊÇÌáÉýÐÔÄܵÄÒªº¦¡£Í¨¹ýÉèÖÃ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µÄÊÓÆµÓÅ»¯½ø½×£º´ÓCDNµ½¶¯Ì¬ÏìÓ¦µÄÉî¶Èµñ×Á

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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µÄ×î¼Ñʵ¼ù

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HTTPÏìÓ¦»º´æ£¨ProxyCache£©£ºÕâÊÇNginx×î³£ÓõĻº´æ·½·¨£¬ÓÃÓÚ»º´æºó¶Ë·þÎñÆ÷·µ»ØµÄHTTPÏìÓ¦¡£¹ØÓڵ㲥ÊÓÆµ£¬¿ÉÒÔ½«ÊÓÆµÎļþ×Ô¼º»òÆäË÷ÒýÎļþ»º´æµ½Nginx·þÎñÆ÷ÉÏ¡£µ±Óû§ÇëÇóÊÓÆµÊ±£¬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%Á÷ͨ?µÄ¹ÛӰмÍÔª£¡

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

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

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

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£©¡£

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²ÎÊýÊÇÆä¸ß²¢·¢ÄÜÁ¦µÄ»ùʯ¡£

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

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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";}}

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

µ±ÊÓÆµÁ÷Á¿¼¤Ôöʱ£¬¼òµ¥·þÎñÆ÷ÄÑÒÔÔâÊÜ¡£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(µÚÈý·½Ä£¿é)»òÆäËû·½·¨ÊµÏÖ¶Ôºó¶Ë·þÎñÆ÷µÄ¿µ½¡¼ì²é£¬µ±Ä³¸ö·þÎñÆ÷·ºÆð¹ÊÕÏʱ£¬×Ô¶¯½«Æä´Ó¸ºÔØÆ½ºâ³ØÖÐÒÆ³ý£¬È·±£·þÎñµÄ?¿ÉÓÃÐÔ¡£

ÉèÖÃʾÀý£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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ÉèÖÃ...}}

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

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

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

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×îа汾ͨ¹ýһϵÁÐÊÖÒÕÉý¼¶£¬ÎªÊµÏÖµÍÑÓ³Ù¡¢¸ß²¢·¢µÄÖ±²¥?ÌåÑéÌṩÁËǿʢµÄÖ§³Ö¡£

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

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

»º´æÓÅ»¯£º

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

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

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

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

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

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

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

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

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

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

ÔðÈα༭£º Ò¶Ò»½£
ÉùÃ÷£ºÖ¤È¯Ê±±¨Á¦ÕùÐÅÏ¢ÕæÊµ¡¢×¼È·£¬ÎÄÕÂÌá¼°ÄÚÈݽö¹©²Î¿¼£¬²»×é³ÉʵÖÊÐÔͶ×ʽ¨Ò飬¾Ý´Ë²Ù×÷Σº¦×Ôµ£
ÏÂÔØ¡°Ö¤È¯Ê±±¨¡±¹Ù·½APP£¬»ò¹Ø×¢¹Ù·½Î¢ÐŹ«Öںţ¬¼´¿ÉËæÊ±Ïàʶ¹ÉÊж¯Ì¬£¬¶´²ìÕþ²ßÐÅÏ¢£¬ÕÆÎղƲú»ú»á¡£
ÍøÓÑ̸ÂÛ
µÇ¼ºó¿ÉÒÔ½²»°
·¢ËÍ
ÍøÓÑ̸ÂÛ½ö¹©Æä±í´ïСÎÒ˽¼Ò¿´·¨£¬²¢²»Åúע֤ȯʱ±¨Ì¬¶È
ÔÝÎÞ̸ÂÛ
ΪÄãÍÆ¼ö
ÍøÕ¾µØÍ¼