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

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

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

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

ÉèÖÃʾÀý£º

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

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

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

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

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

Nginx¿ÉÒÔͨ¹ý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ЭÒé £¬ÊµÏÖÖ±²¥ÍÆÁ÷ºÍ²¥·Å ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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£º²»µ«ÊÇWeb·þÎñÆ÷ £¬¸üÊÇÊÓÆµÁ÷ýÌåµÄ¼ÓËÙÒýÇæ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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

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

ÓÅ»¯Óëµ÷ÓÅ£ºÍÚ¾ò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ÊÓÆµ¡±Ëù´ú±íµÄǿʢ´¦Öóͷ£ÄÜÁ¦ ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RTMPÄ£¿éÉèÖãº

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

²î±ðµÄÊÓÆµÃûÌöԴ«ÊäºÍ²¥?·ÅÓÐ×Ųî±ðµÄÒªÇó ¡£NginxÒ²ÌṩÁËÕë¶ÔÐÔµÄÓÅ»¯Ä£¿éºÍÉèÖà ¡£

MP4/FLVÎļþµÄÓÅ»¯£¨ngx_http_mp4_module/ngx_http_flv_module£©£º

MP4£º¹ØÓÚMP4Îļþ £¬Nginx¿ÉÒÔͨ¹ýngx_http_mp4_moduleÄ£¿é£¨Í¨³£Ä¬ÈÏÆôÓã©À´ÓÅ»¯ÎļþµÄÔªÊý¾Ý£¨moovatom£©µÄ´«Êä ¡£½«moovatom·ÅÔÚÎļþ¿ªÍ·£¨faststart£©¹ØÓÚÁ÷ʽ²¥?·ÅÖÁ¹ØÖ÷Òª ¡£

ÈôÊÇÄúµÄÊÓÆµÔ´²»ÊÇfaststartÃûÌà £¬Nginx¿ÉÒÔÔÚ·þÎñÆ÷¶Ë¾ÙÐÐÖØ×é £¬µ«Ð§ÂÊ»áÂÔÓнµµÍ ¡£FLV£º¹ØÓÚFLVÎļþ £¬NginxµÄngx_http_flv_moduleÄ£¿é¿ÉÒÔ×ÊÖú´¦Öóͷ£FLVÎļþµÄÔªÊý¾Ý £¬²¢Ö§³ÖFLVÃûÌõÄÁ÷ʽ²¥·Å ¡£

RangeÇëÇóµÄÖ§³Ö£ºÊÓÆµ²¥·ÅÆ÷ͨ³£»á·¢ËÍRangeÇëÇó £¬ÒÔ±ãÓû§Äܹ»¿ì½ø¡¢ÍËÈ´ £¬»òÕß´Ó?ÖÐÖ¹´¦¼ÌÐø²¥·Å ¡£NginxĬÈÏÖ§³ÖRangeÇëÇó £¬µ«ÐèҪȷ±£·þÎñÆ÷ÉèÖÃ׼ȷ £¬Äܹ»×¼È·ÆÊÎöºÍÏìÓ¦RangeÇëÇó ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 £¬×÷Ϊһ¿î¸ßÐÔÄܵÄWeb·þÎñÆ÷ºÍ·´Ïò´ú?Àí·þÎñÆ÷ £¬ÒÀ¸½Æä׿ԽµÄÐÔÄܺÍÎÞаµÄÉèÖà £¬³ÉΪÏàʶ¾öÕâЩÎÊÌâµÄÀûÆ÷ £¬ÎªÊµÏÖ¡°Nginx100%ÊÓÆµ £¬100%ÐÔÄÜ¡±µÄÄ¿µÄÌṩÁ˼áʵµÄÊÖÒÕÖ§³Ö ¡£

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

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

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

ÐÔÄܵ÷ÓÅ£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HTTPÏìÓ¦»º´æ£¨ProxyCache£©£ºÕâÊÇNginx×î³£ÓõĻº´æ·½·¨ £¬ÓÃÓÚ»º´æ?ºó¶Ë·þÎñÆ÷·µ»ØµÄHTTPÏìÓ¦ ¡£¹ØÓڵ㲥ÊÓÆµ £¬¿ÉÒÔ½«ÊÓÆµÎļþ×Ô¼º»òÆäË÷ÒýÎļþ»º´æµ½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×÷ΪAPIÍø¹Ø¡¢¸ºÔØÆ½ºâÆ÷¡¢»º´æ·þÎñÆ÷ £¬ÉõÖÁÍŽáÆä×÷ΪWeb·þÎñÆ÷µÄÉí·Ý £¬¿ÉÒÔ¹¹½¨³öÖØ´óµ«¸ßЧµÄÁ÷ýÌå·Ö·¢ÏµÍ³ ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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¹Ø×¢µÄÊÇÆ¿¾±´ø¿íºÍÍù·µÊ±¼ä ¡£

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

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

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

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

ÉèÖÃʾÀý£º

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

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

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

workerprocessesºÍworkerconnections£ºÌáÉý²¢·¢´¦?ÀíÄÜÁ¦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

»º´æÓÅ»¯£º

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

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

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

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

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

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

¡°Nginx100ÊÓÆµ¡±ÔÚÕâÀïµÄ¼ÄÒå £¬¸üÊÇ´ú±íÁËNginxÔÚ±ßÑØÖÇÄÜʱ´úµÄÖØ´óDZÁ¦ ¡£Ëü½«ÅÌËãÄÜÁ¦ÑÓÉìµ½ÍøÂç±ßÑØ £¬Ê¹µÃÊÓÆµÓ¦ÓÃÄܹ»Ô½·¢ÖÇÄÜ»¯¡¢ÊµÊ±»¯ºÍ¸öÐÔ»¯ ¡£´Ó¼òÆÓµÄÊÓÆµ²¥·Å £¬µ½ÖØ´óµÄÖÇÄÜÆÊÎöºÍ½»»¥ £¬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µÈ¹¤¾ß¾ÙÐиüÖÜÈ«µÄÐÔÄÜ¼à¿ØºÍÈÕÖ¾ÆÊÎö £¬ÒÔ±ãʵʱ·¢Ã÷Ï¢Õù¾öÐÔÄÜÆ¿¾± ¡£

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}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WorkerprocessesºÍWorkerconnections£º

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

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

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

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

NginxÒÀ¸½Æä¸ßÐÔÄÜ¡¢¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦¡¢ÎÞаµÄÉèÖÃÒÔ¼°¸»ºñµÄÉú̬ϵͳ £¬Äܹ»ÓÐÓõؽâ¾öÊÓÆµÁ÷ýÌå·þÎñÖеÄ?ÖÖÖÖÍ´µã £¬´Ó»ù´¡ÉÏÌáÉýÓû§Ô¢Ä¿ÌåÑé ¡£Ëü²»µ«½öÊÇÒ»¸ö·þÎñÆ÷ £¬¸üÊǹ¹½¨Ò»¸öǿʢ?¡¢Îȹ̡¢µÍÑÓ³ÙÊÓÆµÁ÷ýÌåÆ½Ì¨µÄ¼áʵ»ùʯ ¡£Óµ±§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ÔÚÊÓÆµÐÔÄܵÄʵÏÖÉÏ £¬ÒÀ¸½Æä¸ßЧµÄ²¢·¢´¦Öóͷ£ÄÜÁ¦¡¢Ç¿Ê¢µÄ»º´æ»úÖÆÒÔ¼°¶ÔÁ÷ýÌåЭÒéµÄÓÅÒìÖ§³Ö £¬ÒѾ­³ÉΪ¹¹½¨¸ßÐÔÄÜÊÓÆµ·Ö·¢ÏµÍ³µÄÊ×Ñ¡¼Æ»® ¡£´Ó¾²Ì¬ÎļþµÄ¿ìËÙ¶ÁÈ¡ £¬µ½¶¯Ì¬ÄÚÈݵÄÖÇÄÜ»º´æ £¬ÔÙµ½ÓëCDNµÄÎ޷켯³É £¬NginxÕýÔÚÓÃËüµÄ·½·¨ £¬ÎªÎÒÃÇÃè»æ×ÅÒ»·ùÁ÷ͨÎÞ¿¨¶ÙµÄÊÓÆµÌåÑéÀ¶Í¼ ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

»º´æ²ß?ÂÔµÄϸÄ廯£º

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

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

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

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

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

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

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

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

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

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

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

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

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

ÊÓÆµÁ÷µÄÌØµãÊÇÅþÁ¬Ê±¼ä³¤¡¢Êý¾Ý´«ÊäÒ»Á¬ ¡£Òò´Ë £¬ÔõÑù¸ßЧµØ¹ÜÀíº£Á¿³¤ÅþÁ¬ £¬ÊÇ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ÄÜ £¬ÎªÓû§´øÀ´Ø¨¹ÅδÓеġ°Ë¿»¬¡±ÊÓÌýÊ¢Ñç°É£¡

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tcp_nopushon;Óëtcp_nodelayon;£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×ܽᣨpart1£©£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Nginx×÷ΪCDN»ØÔ´£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£¨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±ßÑØ½Úµã £¬¿ÉÒÔʵÏÖ¸ü¿ìµÄ»á¼ûËÙÂÊ ¡£

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

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

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

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

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

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

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

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

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ѹËõ ¡£

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

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

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

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

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

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

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

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

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

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

ÕâÒâζ×Å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ÔÚ²»ÎȹÌÍøÂçϵÄ?ÐÔÄÜ £¬ïÔÌ­Á˶ª°üÖØ´«´øÀ´µÄÓ°Ïì £¬¹ØÓÚÊÓÆµÁ÷µÄÎȹÌÐÔÖÁ¹ØÖ÷Òª ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ʵ¼ù³¡¾°£º¼ÙÉèÄãµÄÊÓÆµÆ½Ì¨ÉÏÓÐÐí¶àÈÈÃÅÓ°Ï·»òµçÊӾ缯 £¬Óû§»áÖØ¸´Ô¢Ä¿ ¡£Í¨¹ýNginxµÄHTTP»º´æ £¬ÕâЩÈÈÃÅÊÓÆµµÄ³õʼÇëÇóÍê³Éºó £¬»á½«ÊÓÆµÎļþ»òÆäÒ»²¿·Ö»º´æÏÂÀ´ ¡£µ±ÆäËûÓû§ÇëÇóͳһÊÓÆµÊ± £¬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ÌṩµÄstub_statusÄ£¿é»òµÚÈý·½¼à¿Ø¹¤¾ß£¨ÈçPrometheus+Grafana£© £¬ÊµÊ±¼à¿ØNginxµÄÅþÁ¬Êý¡¢ÇëÇóÊý¡¢´ø¿íʹÓÃÇéÐεÈÒªº¦Ö¸±ê ¡£

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

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

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

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

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

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

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

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

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

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

ÔÚÉÏÒ»²¿·Ö £¬ÎÒÃÇÉîÈëÏàʶÁËNginxµÄ¼Ü¹¹ÓÅÊÆ¼°Æä½¹µã¹¦Ð§ £¬ÕâЩΪʵÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÓÚ¨Á˼áʵµÄ»ù´¡ ¡£ÀíÂÛÖÕ¾¿ÊÇÀíÂÛ £¬½«NginxµÄÐÔÄÜDZÁ¦ÍêÈ«ÊÍ·Å £¬»¹ÐèÒªÔÚÏÖʵ°²ÅÅÖоÙÐÐÏ꾡Èë΢µÄÉèÖÃÓÅ»¯ ¡£±¾?²¿·Ö½«¾Û½¹ÓÚ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¡±±¶ÊÍ·Åʱ £¬ËüÒâζ×ÅÊýÒÔÍò¼ÆµÄ±ßÑØ½ÚµãÄܹ»ÒÔ¼«¸ßµÄЧÂÊ»º´æºÍ·Ö·¢º£Á¿ÊÓÆµÄÚÈÝ £¬ÈÃÌìϸ÷µØµÄÓû§¶¼ÄÜÏíÊܵ½ÈçË¿°ã˳»¬µÄԢĿÌåÑé £¬ËƺõÊÓÆµÄÚÈݾ͡°×¡¡±ÔÚËûÃǼÒÃÅ¿Ú ¡£

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

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

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

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

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

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

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

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

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

ÉèÖÃʾÀý£º

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÏÖ´úÁ÷ýÌå²¥·ÅÔçÒѲ»ÊǼòÆÓµÄÎļþÏÂÔØ £¬¶øÊÇ»ùÓÚһϵÁÐÓÅ»¯µÄЭÒéÀ´ÊµÏÖµÄ ¡£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Îļþ´«Êäʧ°Ü? £¬²¥·ÅÆ÷Ò²¿ÉÒÔʵÑéÇëÇóÏÂÒ»¸ö ¡£

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ÔÚ¾²Ì¬Îļþ·þÎñ·½ÃæÓµÓÐÎÞ¿ÉÏà±ÈµÄÓÅÊÆ £¬ÆäÓÅ»¯µÄÎļþI/OºÍÄÚ´æ¹ÜÀí £¬Äܹ»ÒÔ×î¿ìµÄËÙÂʽ«ÊÓÆµÊý¾ÝÍÆË͸ø¿Í»§¶Ë ¡£

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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