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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

½¹µãÓÅ»¯Õ½ÂÔ¶þ£º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£¬±ÜÃ⻺´æ´úÀí¹ýʧµØ»º´æÎ´Ñ¹ËõµÄÄÚÈÝ£©µÈ£¬¿ÉÒÔÆ¾Ö¤ÏÖʵÐèÇó¾ÙÐиüϸÄåµÄ?ÉèÖà ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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ЭÒéµÄ¸ºÔØÆ½ºâ£¬¿ÉÒÔδÀ´×Ô²î±ðÍÆÁ÷¶ËµÄÖ±²¥?Á÷·ÖÅɵ½²î±ðµÄºó¶Ë·þÎñÆ÷£¬»òÕßδÀ´×Ô¶à¸öԢĿ¶ËµÄÇëÇó·Ö·¢µ½²î±ðµÄÁ÷ýÌå·þÎñÆ÷£¬È·±£·þÎñµÄÎȹÌÐԺ͸߿ÉÓÃÐÔ ¡£

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×îа汾»¹ÎªÊÓÆµÄÚÈݵĴ¦Öóͷ£ºÍ¹ÜÀíÌṩÁ˸ü¶àµÄ¿ÉÄÜÐÔ ¡£

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

APIÍø¹ØÓë΢·þÎñ¼Ü¹¹£ºÔÚÏÖ´ú»¯µÄÊÓÆµÆ½Ì¨¼Ü¹¹ÖУ¬Nginx¾­³£ÊÎÑÝAPIÍø¹ØµÄ½ÇÉ«£¬ÈÏÕæÇëÇóµÄ·ÓÉ¡¢ÈÏÖ¤¡¢ÏÞÁ÷µÈ¹¦Ð§ ¡£¹ØÓÚÊÓÆµÉÏ´«¡¢×ªÂ롢ý×ʹÜÀíµÈ΢·þÎñ£¬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¶ÔÕâЩÐÂЭÒéµÄÖ§³Ö£¬ÎªÊµÏÖ¼«ÖÂÁ÷ͨµÄÊÓÆµÌåÑéÌṩÁ˸üÇ¿µÄÊÖÒÕ°ü¹Ü ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÐÔÄܵ÷ÓÅ£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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¼ÓÃÜ¡¢ÄÚÈÝ´ò°ü?µÈ ¡£

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

ÔÚNginxÖÐÆôÓÃHTTP/3ºÍQUICÖ§³Ö£¬Í¨³£ÐèҪʹÓÃÌØ¶¨µÄÄ£¿é£¨ÀýÈ磬ͨ¹ýBoringSSLÖ§³ÖQUIC£© ¡£ËäÈ»ÆäÉèÖÃÏà¶ÔÖØ´ó£¬µ«Ò»µ©ÊµÏÖ£¬½«ÎªÊÓÆµÁ÷ýÌå´øÀ´Ø¨¹ÅδÓеÄÐÔÄÜÌáÉýºÍÓû§ÌåÑéÓÅ»¯ ¡£Õâ±ê¼Ç×Å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ÊÓÆµ¡±Ëù´ú±íµÄǿʢ´¦Öóͷ£ÄÜÁ¦ ¡£

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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

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

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

Õ¹ÍûδÀ´£¬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ÉèÖúÏÀí£¬ÒÔÓ¦¶Ôº£Á¿Ð¡ÎļþµÄ²¢·¢ÇëÇó ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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±»ÀÄÓà ¡£

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

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

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

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

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

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

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

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

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

ÔÙÕߣ¬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ÍÆÁ÷ºÍÀ­Á÷ÇëÇó£¬ÎªÖ±²¥Æ½Ì¨ÌṩÁËǿʢµÄºó¶ËÖ§³Ö ¡£

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ÊÓÆµ·þÎñÆ÷

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

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²¥·ÅÁÐ±í³¤¶È}}}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

¶þ¡¢½¹µãÄ£¿éÆÊÎö£º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£¬ÄãµÄÁ÷ýÌå¼ÓËÙÆ÷

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×ܽᣨpart1£©£º

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

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

Èý¡¢Õë¶ÔÊÓÆµÃûÌõÄÌØÓÐÓÅ»¯

²î±ðµÄ?ÊÓÆµÃûÌöԴ«ÊäºÍ²¥·ÅÓÐ×Ųî±ðµÄÒªÇó ¡£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ÇëÇó ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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£ºÎªºÎÊÇÊÓÆµ·Ö·¢µÄ½¾×Ó£¿

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

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

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

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

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

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

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;#...»º´æºÍÆäËû´úÀíÉèÖÃ...}}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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

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

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

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

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

WorkerprocessesºÍWorkerconnections£º

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

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

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

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

ÔÚǰһ²¿·Ö£¬ÎÒÃÇÒѾ­ÉîÈëÏàʶÁËNginxÔÚʵÏÖ100%ÊÓÆµÐÔÄÜ·½ÃæµÄ»ù´¡ÄÜÁ¦£¬°üÀ¨Æä¸ßЧµÄ²¢·¢´¦Öóͷ£Ä£×Ó¡¢Ç¿Ê¢µÄ?»º´æ»úÖÆÒÔ¼°ÓëCDNµÄ¼¯³É ¡£ÒªÕæÕýÈÃ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";}}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

»º´æÊÇÌáÉýÊÓÆµ»á¼ûËÙÂÊ¡¢½µµÍÔ´·þÎñÆ÷ѹÁ¦µÄÒªº¦ ¡£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·ÖÖÓ ¡£

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

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

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

ÉèÖÃʾÀý£º

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

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

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

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

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

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

×÷Ϊ»ØÔ´·þÎñÆ÷:ÉèÖÃNginxµÄproxy_cacheÖ¸ÏòCDNµÄ»º´æ½Úµã£¬µ±CDN½Úµã»º´æÊ§Ð§Ê±£¬ÇëÇó»á»ØÔ´µ½Nginx ¡£×÷Ϊ±ßÑØ½Úµã:Ö±½Ó°²ÅÅNginx×÷ΪCDNµÄ±ßÑØ½Úµã£¬³ä·ÖʹÓÃ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¶ÔÊÓÆµ´«ÊäÐÔÄܵÄÓ°Ïì ¡£

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

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

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Äܹ»ÏñÒ»¸öѵÁ·ÓÐËØµÄÖ¸»Ó¹Ù£¬ÓÐÌõ²»ÎɵØÎªÃ¿Ò»Î»¹ÛÖÚ·Ö·¢ÊÓÆµÁ÷£¬È·±£ËûÃǶ¼ÄÜÏíÊܵ½ÎÞ·ìµÄԢĿÌåÑé ¡£

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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ÄÜÁ¦µÄÖÜÈ«ÊÍ·Å ¡£

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

±ßÑØÅÌËãµÄ¿ÉÄÜÐÔ£ºËæ×Å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£©ºòѡЭÉ̵ÈÒªº¦°ì·¨ ¡£

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

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

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

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

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

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

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

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

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

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

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

Nginx×÷ΪCDN±ßÑØ½Úµã£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HTTP/2ºÍHTTP/3µÄ¸³ÄÜ£º¹Å°åµÄHTTP/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£©ÍÆË͵½¿Í»§¶Ë£¬ïÔÌ­ºóÐøÇëÇó ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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Ò²±»¸¶ÓëÁ˸üǿʢµÄÄÜÁ¦£¬Ëü²»ÔÙ½ö½öÊÇÄÚÈݵķַ¢Õߣ¬¸üÊÇÖÇÄܵġ°±ßÑØÅÌËã½Úµã¡± ¡£

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

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

¡°Nginx100ÊÓÆµ¡±ÔÚÕâÀïµÄ¼ÄÒ壬¸üÊÇ´ú±íÁËNginxÔÚ±ßÑØÖÇÄÜʱ´úµÄÖØ´óDZÁ¦ ¡£Ëü½«ÅÌËãÄÜÁ¦ÑÓÉìµ½ÍøÂç±ßÑØ£¬Ê¹µÃÊÓÆµÓ¦ÓÃÄܹ»Ô½·¢ÖÇÄÜ»¯¡¢ÊµÊ±»¯ºÍ¸öÐÔ»¯ ¡£´Ó¼òÆÓµÄÊÓÆµ²¥·Å£¬µ½ÖØ´óµÄÖÇÄÜÆÊÎöºÍ½»»¥£¬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»ò¸üרҵµÄÁ÷ýÌåÄ£¿é£¬Ôò¿ÉÒÔÎªÌØ¶¨³¡¾°Ìṩ¸üµ×²ãµÄÖ§³Ö ¡£

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

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

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

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

Nginx×÷ΪCDN»ØÔ´£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tcp_nopushon;Óëtcp_nodelayon;£º

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

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

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

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

Nginx100%ÊÓÆµ´«Ê䣬²¢·ÇÒ»¸öÖյ㣬¶øÊÇÒ»¸öÒ»Á¬½ø»¯µÄÀú³Ì ¡£Ëæ×Å5G¡¢Wi-Fi6µÈÐÂÒ»´úÍøÂçµÄÆÕ¼°£¬ÒÔ¼°8KÇø·ÖÂÊ¡¢VR/ARµÈÐÂÐÎ̬ÄÚÈݵķºÆð£¬¶ÔÊÓÆµ´«ÊäµÄÒªÇó½«Ò»Ö±ÌáÉý ¡£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}

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

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

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

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µÈÖ¸ÁʵÏÖ½Úµã¼äµÄ?»º´æ?ͬ²½ºÍÓÐÓÃÐÔУÑ飬½øÒ»²½Ìá¸ßÕûÌ建´æÖÀÖÐÂÊ ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

»º´æÓÅ»¯£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Îå¡¢Çå¾²Óë¼à¿Ø£º±£?ÕÏÊÓÆµ·þÎñµÄÎȹÌÔËÐÐ

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

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

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

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

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

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

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

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

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

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

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

³ýÁË»ù´¡ÉèÖã¬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ÊÓÆµÐÔÄܸüÉÏÒ»²ãÂ¥*

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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