ÔÚÕâ¸öÐÅÏ¢±¬Õ¨¡¢ÅþÁ¬ÎÞËù²»ÔÚµÄʱ´ú£¬ÍøÕ¾ºÍÍøÂçЧÀ͵ÄÐÔÄÜÓëÎȹÌÐÔ³ÉΪÆóÒµÒÔÖÂСÎÒ˽¼ÒÕ¾³¤µÄµÚÒ»ÒªÎñ¡£Nginx£¬×÷ΪÓɶíÂÞ˹¿ª·¢ÕßIgorSysoevÉè¼ÆµÄ¸ßÐÔÄÜWebЧÀÍÆ÷ºÍ·´ÏòÊðÀí¹¤¾ß£¬ÒÔÆä׿ԽµÄ²¢·¢´¦Öóͷ£ÄÜÁ¦¡¢µÍ×ÊÔ´ÏûºÄºÍ¸»ºñµÄ¹¦Ð§¶øÖøÃûÓÚÊÀ¡£
×Ô2004Äê½µÉúÒÔÀ´£¬Òѱ»È«ÇòÁè¼Ý50%µÄ¶¥¼¶ÍøÕ¾½ÓÄÉ£¬³ÉΪÁË»¥ÁªÍø»ù´¡¼Ü¹¹Öв»¿É»òȱµÄÒ»»·¡£
×÷ÉõNginx£¿¼òÆÓÀ´Ëµ£¬Nginx²»µ«½öÊÇһ̨WebЧÀÍÆ÷£¬¸üÊÇÒ»¸öÍòÄܵÄÁ÷Á¿ÖÎÀíר¼Ò¡£Ëü¿ÉÒÔ¿ìËٵش¦Öóͷ£³ÉǧÉÏÍòµÄ²¢·¢ÅþÁ¬£¬ÕâÒ»µã¹ØÓÚÏÖ´úÍøÕ¾À´ËµÒâÒå·Ç·²¡£ÓÈÆäÊÇÔÚÃæÁÙÍ»·¢Á÷Á¿ºÍ¸ß»á¼ûÁ¿Ê±£¬NginxÒÀÈ»¼á³Ö×ÅÓÅÒìµÄÏìÓ¦ËÙÂʺÍÎȹÌÐÔ¡£³ýÁË×÷ΪͨË׵ľ²Ì¬ÎļþЧÀÍÆ÷£¬Ëü»¹Äܳ䵱·´ÏòÊðÀí¡¢¸ºÔØÆ½ºâÆ÷¡¢ÓʼþÊðÀíÉõÖÁAPIÍø¹Ø£¬ÈÃһ̨ЧÀÍÆ÷±äÉíΪ¡°¶àÃæÊÖ¡±¡£
¸ßÐÔÄÜ£ºNginx½ÓÄÉÒì²½ÊÂÎñÇý¶¯Ä£×Ó£¬´¦Öóͷ£ÇëÇóºÜÊǸßЧ£¬ÄÜÔÚ¼«µÍµÄÓ²¼þ×ÊÔ´Ìõ¼þÏÂʵÏÖ¼«¼ÑµÄÍÌÍÂÄÜÁ¦¡£Ä£¿é»¯¼Ü¹¹£º¸»ºñµÄÄÚ½¨Ä£¿éºÍµÚÈý·½À©Õ¹£¬Ê¹Æä¹¦Ð§¿ÉÒÔÎÞа¶¨ÖÆ£¬Öª×ãÖÖÖÖÖØ´ó³¡¾°¡£µÍ×ÊÔ´Õ¼Ó㺱ßÑØ×ÊÔ´Õ¼ÓÃÉÙÉÙ£¬ÎÞÂÛÊÇÔÚÔÆ¶ËÕÕ¾ÉÍâµØ°²ÅÅ£¬¶¼Äܼá³ÖµÍ±¾Ç®ÔËÓª¡£
Îȹ̿ɿ¿£º¾ÓɶàÄêµÄʵ¼ùÄ¥Á·£¬NginxÌåÏÖ³ö¼«¸ßµÄÎȹÌÐÔºÍÈÝ´íÄÜÁ¦¡£Ç¿Ê¢µÄÇå¾²ÐÔ£ºÄÚÖöàÖÖÇå¾²ÌØÕ÷£¬¼ÓÉÏÖ§³ÖSSL/TLS£¬ÎªÍøÕ¾ÌṩÇå¾²°ü¹Ü¡£
·´ÏòÊðÀí£ºÒþ²Øºó¶ËЧÀÍÆ÷ÕæÊµÐÅÏ¢£¬ÌáÉýÇå¾²ÐÔºÍά»¤±ãµ±ÐÔ¡£¸ºÔØÆ½ºâ£ºÖÇÄܵ÷ÀíÇëÇó£¬ÌáÉýÍøÕ¾ÈÝ´íÂÊÓë¸ß¿ÉÓÃÐÔ¡£¾²Ì¬ÄÚÈÝЧÀÍ£º¸ßËÙ¼ÓÔØÍ¼Æ¬¡¢CSS¡¢JSµÈ¾²Ì¬×ÊÔ´£¬Ìá¸ßÓû§ÌåÑé¡£APIÖÎÀí£ºÎªÎ¢Ð§Àͼܹ¹Ìṩ¸ßЧµÄAPIÈë¿ÚÐòÁС£
Ö®ÒÔÊÇÔÆÔÆÊÜÇàíù£¬ÊÇÓÉÓÚNginxÌìÉú¾Í¾ß±¸¡°²ÏË¿°ãµÄϸÄ塱ÐÔÄÜÓÅÊÆ£¬ÎÞÂÛÊÇÖÐСÆóÒµÕվɻ¥ÁªÍø¾ÞÍ·£¬¶¼ÔÚÒ»Ö±ÍÚ¾òËüµÄDZÄÜ¡£Ðí¶à¡°»¥ÁªÍø¾ÞÍ·¡±¸üÊǽ«Æä×÷Ϊ½¹µãÁ÷Á¿µ÷ÀíÄ£¿é£¬ºÃ±ÈNetflix¡¢Twitter¡¢DropboxµÈ£¬ÓÃËüÀ´È·±£Ã¿Ò»ÇëÇó¶¼ÄÜ¿ìËÙ¡¢Îȹ̵ִ
δÀ´Éú³¤Ç÷ÊÆËæ×Å»¥ÁªÍøÓ¦ÓõÄÒ»Ö±Éý¼¶£¬NginxÒ²ÔÚÒ»Á¬Á¢Òì¡£¼¯³ÉÈÝÆ÷»¯¡¢Î¢Ð§Àͼܹ¹£¬Ö§³Ö¶àʵÀýºáÏòÀ©Õ¹£¬ÔöÇ¿Çå¾²ÐÔ£¬Í¬Ê±ÔÚ±ßÑØÅÌËã¡¢ÎïÁªÍøµÈÐÂÐ˳¡¾°ÖÐÕ¹ÏÖ¼ÛÖµ¡£Î´À´£¬Nginx½«ÓëAI¡¢×Ô¶¯»¯ÔËάϸÃÜÁ¬Ïµ£¬×ÊÖúÆóҵʵÏÖ¡°ÖÇÆôδÀ´¡±µÄÍøÂçÉú̬¡£
Nginx²»µ«ÊÇÒ»¿î¹¤¾ß£¬¸üÊÇÒ»³¡webÐÔÄÜË¢ÐÂÔ˶¯µÄÁìÅÜÕß¡£ËüµÄ¡°ÇáÓ¯Óëǿʢ¡±ÈÃÎÞÊý¿ª·¢ÕßΪ֮ÕÛ·þ£¬Ò²ÈÃÆóÒµÔÚÇ¿ÁÒµÄÊг¡¾ºÕùÖÐΪ»¢¸µÒí¡£ÕÆÎÕNginxµÄÉñÃØ£¬¾ÍÊÇÕ¾ÔÚÁËÊý×Ö»¯×ªÐ͵ķç¿ÚÀ˼⣬ӽӸü¸ß¡¢¸ü¿ì¡¢¸üÇ¿µÄÍøÂçδÀ´¡£
¼ÈÈ»NginxÔÆÔÆÇ¿Ê¢£¬ÔõÑù²Å»ª×î´óÏ޶ȵØÊ©Õ¹ËüµÄÓÅÊÆ£¬×öµ½¼È¸ßЧÓÖÇå¾²£¿ÒÔϽ«ÎªÄãÏêϸÏÈÈÝһЩÊÊÓõÄÓÅ»¯¼¼ÇÉ£¬ÖúÄã´òÔìÊôÓÚ×Ô¼ºµÄ¡°ÍøÂçÉñ¾ÖÐÊࡱ¡£
µ÷½âworkerÀú³ÌÊý£ººÏÀíµÄworker_processesÊýÄ¿£¬¿ÉÒÔ³ä·ÖʹÓöàºËCPU×ÊÔ´¡£Ò»Ñùƽ³£½¨ÒéÉèÖÃΪ¡°auto¡±£¬ÈÃNginx×Ô¶¯Ê¶±ðÓ²¼þ¡£ºÏÀíÉèÖÃworker_connections£º¿ØÖÆÃ¿¸öworkerµÄ×î´óÅþÁ¬Êý£¬È·±£ÔÚá¯ÁëÆÚÒ²ÄÜÎȹÌЧÀÍ¡£
ÆôÓÃGzipѹËõ£º¶ÔÎı¾ÀàÐÍÄÚÈÝÆôÓÃѹËõ£¬´ó·ùïÔÌ´«ÊäÊý¾ÝÁ¿£¬ÌáÉý¼ÓÔØËÙÂÊ¡£»º´æÉèÖÃÓÅ»¯£ºÊ¹Óûº´æ¿ØÖƾ²Ì¬×ÊÔ´ºÍÊðÀíÇëÇó£¬ïÔ̲»ÐëÒªµÄÇëÇóת·¢¡£
SSL/TLS¼ÓÃÜ£ºÇ¿ÖÆÆôÓÃHTTPS£¬ÉèÖúÏÀíµÄ¼ÓÃÜËã·¨£¬×èÖ¹ÖÐÐÄÈ˹¥»÷¡£ÏÞÖÆ»á¼ûÔ´£ºÍ¨¹ý°×Ãûµ¥¡¢IPÏÞÖÆ»òËÙÂÊÏÞÖÆ£¬±ÜÃâDDoSµÈ¶ñÒâ¹¥»÷¡£Ç徲ͷ²¿ÉèÖãºÍêÉÆContentSecurityPolicy£¨CSP£©¡¢X-Frame-OptionsµÈÇ徲ͷÐÅÏ¢£¬ÌáÉýÍøÒ³¿¹¹¥»÷ÄÜÁ¦¡£
ÈÕÖ¾Éó¼ÆÓë¼à¿Ø£º¿ªÆô»á¼ûÓë¹ýʧÈÕÖ¾£¬ÊµÊ±¼à¿ØÒì³£Á÷Á¿£¬¼°Ôçʶ±ðÇå¾²ÎÊÌâ¡£
ÂÖѯ£¨RoundRobin£©£º×î»ù´¡µÄ¸ºÔØÆ½ºâÕ½ÂÔ£¬ÔȳƷÖÅÉÇëÇó¡£IP¹þÏ££¨IPHash£©£º¼á³ÖͳһIPÇëÇóÔÚͳһºó¶Ë£¬Ìá¸ß»á»°Ò»ÖÂÐÔ¡£¿µ½¡¼ì²é£ºÉèÖüì²é»úÖÆ£¬×Ô¶¯ÌÞ³ý¹ÊÕϵĺó¶Ë£¬Ìá¸ßϵͳÈÝ´í¡£¶¯Ì¬À©Õ¹£ºÁ¬ÏµÈÝÆ÷ÖÎÀí¹¤¾ß£¬ÊµÏÖ×Ô¶¯ºáÏòÀ©Õ¹¡£
ËÄ¡¢Î¢Ð§Àͼܹ¹ÖеÄNginx½ÇÉ«ÔÚ΢ЧÀͼܹ¹ÖУ¬NginxµÄ×÷ÓÃÈÕÒæÍ»³ö£¬Ëü²»µ«×÷ΪAPIÍø¹Ø£¬»¹ÄÜÍê³ÉЧÀÍ·¢Ã÷¡¢ÇëÇóת·¢µÈʹÃü¡£Ê¹ÓÃ΢ЧÀͼܹ¹µÄµ¯ÐÔ£¬Á¬ÏµÐ§ÀÍ×¢²áÓë·¢Ã÷¹¤¾ß£¨ÈçConsul¡¢Etcd£©£¬ÊµÏÖÇëÇóµÄÖÇÄܵ÷Àí¡£
Îå¡¢×Ô¶¯»¯ÓëÓÅ»¯¹¤¾ßµÄÁ¬Ïµ½èÖú×Ô¶¯»¯¾ç±¾ºÍ¼à¿ØÆ½Ì¨£¨ÈçPrometheus¡¢Grafana£©£¬ÊµÏÖÐÔÄÜÖ¸±ê¿ÉÊÓ»¯£¬ÊµÊ±µ÷ÓÅ¡£Ê¹ÓÃÉèÖÃÖÎÀí¹¤¾ß£¨ÈçAnsible¡¢SaltStack£©Í³Ò»°²ÅźͰ汾ÖÎÀí£¬È·±£ÉèÖõÄÒ»ÖÂÐÔ¡£
Áù¡¢Î´À´µÄNginxÐÂÆ«ÏòËæ×Å5G¡¢±ßÑØÅÌËãµÈÐÂÊÖÒÕµÄÉú³¤£¬NginxÒ²ÔÚһֱ˳Ӧת±ä¡£ÀýÈ磬NginxUnitµÄ·ºÆð£¬½«ÆäÄÜÁ¦À©Õ¹µ½¶àÓïÑÔÇéÐÎÖУ¬±äµÃÔ½·¢ÎÞа¡£ÆóÒµ¶Ô¿ÉÊÓ²ìÐÔºÍ×Ô¶¯»¯µÄÐèÇóÈÕÒæÔöÌí£¬NginxÒ²ÔÚÇå¾²¡¢¼à¿ØºÍÖÇÄܵ÷Àí·½ÃæÒ»Ö±É¡£
×ܽáÀ´Ëµ£¬NginxÓµÓÐÎÞÏÞµÄDZÄÜ£¬Ö»ÒªÕÆÎÕһЩʵս¼¼ÇÉ£¬¾ÍÄÜÈÃËü²»µ«ÊÇÒ»¸ö¡°Á÷Á¿µ÷ÀíÔ±¡±£¬¶øÊÇÕû¸öÍøÂç¼Ü¹¹µÄ½¹µãѪÂö¡£¿ìËÙÏìÓ¦¡¢µÍÑÓ³Ù¡¢Çå¾²Îȹ̣¬ÕâЩ¶¼ÊÇNginx´ø¸øÄãµÄ×î´óÀñÎï¡£Õ¾ÔÚÊÖÒÕÀå¸ïµÄÀ˼⣬ÈÃÎÒÃÇÒ»Æð̽Ë÷¡¢Êµ¼ù£¬Ê»ÏòÍøÂçÐÂʱ´úµÄ±Ë°¶¡£