OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻžāφāĻŽāϰāĻž āϏāĻŽā§āĻŽā§‡āϞāύ āĻĨ⧇āϕ⧇ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻĻāύ⧇āϰ āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāĻŋ āĻšāĻžāχāϞ⧋āĻĄ++ 2016, āϝāĻž āĻ—āϤ āĻŦāĻ›āϰ⧇āϰ 7-8 āύāϭ⧇āĻŽā§āĻŦāϰ āĻŽāĻ¸ā§āϕ⧋āϰ āĻ•āĻžāϛ⧇ āĻ¸ā§āĻ•āϞāϕ⧋āĻ­ā§‹āϤ⧇ āĻ…āύ⧁āĻˇā§āĻ āĻŋāϤ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āĻ­ā§āϞāĻžāĻĻāĻŋāĻŽāĻŋāϰ āĻĒā§āϰ⧋āϟāĻžāϏāĻ­ OpenResty āĻāĻŦāĻ‚ Lua āĻāϰ āϏāĻžāĻĨ⧇ NGINX āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻž āĻŦāϞ⧇āĨ¤

āĻšā§āϝāĻžāϞ⧋ āϏāĻŦāĻžāχ, āφāĻŽāĻžāϰ āύāĻžāĻŽ āĻ­ā§āϞāĻžāĻĻāĻŋāĻŽāĻŋāϰ āĻĒā§āϰ⧋āϟāĻžāϏāĻ­, āφāĻŽāĻŋ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āϜāĻ¨ā§āϝ āĻ•āĻžāϜ āĻ•āϰāĻŋāĨ¤ āφāĻŽāĻŋ āφāĻĒāύāĻžāϕ⧇ āφāĻŽāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āϟ⧁ āĻŦāϞāĻŦ. āφāĻŽāĻŋ āϕ⧋āĻĄ āϞāĻŋāĻ–āϤ⧇ āφāĻŽāĻžāϰ āĻœā§€āĻŦāύ⧇āϰ āϤāĻŋāύ āϚāϤ⧁āĻ°ā§āĻĨāĻžāĻ‚āĻļ āĻŦā§āϝāϝāĻŧ āĻ•āϰāĻŋāĨ¤ āφāĻŽāĻŋ āφāĻ•ā§āώāϰāĻŋāĻ• āĻ…āĻ°ā§āĻĨ⧇ āĻŽā§‚āϞ āĻĨ⧇āϕ⧇ āĻāĻ•āϜāύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻžāϰ āĻšāϝāĻŧ⧇āĻ›āĻŋ: āφāĻŽāĻŋ āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ āφāĻŽāĻžāϰ āĻ¸ā§āĻŦāĻĒā§āύ⧇ āϕ⧋āĻĄ āĻĻ⧇āĻ–āĻŋāĨ¤ āĻœā§€āĻŦāύ⧇āϰ āĻāĻ• āϚāϤ⧁āĻ°ā§āĻĨāĻžāĻ‚āĻļ āĻšāϞ āĻļāĻŋāĻ˛ā§āĻĒ āωāĻ¨ā§āύāϝāĻŧāύ, āϕ⧋āĻĄ āϞ⧇āĻ–āĻž āϝāĻž āϏāϰāĻžāϏāϰāĻŋ āĻ‰ā§ŽāĻĒāĻžāĻĻāύ⧇ āϝāĻžāϝāĻŧāĨ¤ āϕ⧋āĻĄ āϝāĻž āφāĻĒāύāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϕ⧇āω āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϜāĻžāύ⧇āύ āύāĻžāĨ¤

āĻāϟāĻž āĻ•āϤāϟāĻž āĻ–āĻžāϰāĻžāĻĒ āĻ›āĻŋāϞ āϤāĻž āϜāĻžāύāĻžāϤ⧇āĨ¤ āϝāĻ–āύ āφāĻŽāĻŋ āĻāĻ•āϟ⧁ āϜ⧁āύāĻŋāϝāĻŧāϰ āĻ›āĻŋāϞāĻžāĻŽ, āϤāĻ–āύ āφāĻŽāĻŋ āĻāϏ⧇āĻ›āĻŋāϞāĻžāĻŽ āĻāĻŦāĻ‚ āϤāĻžāϰāĻž āφāĻŽāĻžāϕ⧇ āĻāχ āĻĻ⧁āϟāĻŋ āĻŸā§‡āϰāĻžāĻŦāĻžāχāϟ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻž āĻāĻ–āύ āϏāĻŦāĻžāϰ āĻšāĻžāχāϞ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ–āĻžāύ⧇āĨ¤ āφāĻŽāĻŋ āĻ•āύāĻĢāĻžāϰ⧇āĻ¨ā§āϏ⧇ āĻ—āĻŋāϝāĻŧ⧇ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāϞāĻžāĻŽ: "āĻŦāĻ¨ā§āϧ⧁āϰāĻž, āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧁āύ, āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āĻ•āĻŋ āĻŦāĻĄāĻŧ āĻĄā§‡āϟāĻž āφāϛ⧇, āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āĻŋ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ? āφāĻĒāύāĻŋ āϏ⧇āĻ–āĻžāύ⧇ āĻ•āϤ āϘāĻžāρāϟāĻŋ āφāϛ⧇? āϤāĻžāϰāĻž āφāĻŽāĻžāϕ⧇ āωāĻ¤ā§āϤāϰ āĻĻāĻŋāϞ: "āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ 100 āĻ—āĻŋāĻ—āĻžāĻŦāĻžāχāϟ āφāϛ⧇!" āφāĻŽāĻŋ āĻŦāϞāϞāĻžāĻŽ: "āϕ⧁āϞ, 100 āĻ—āĻŋāĻ—āĻžāĻŦāĻžāχāϟ!" āĻāĻŦāĻ‚ āφāĻŽāĻŋ āύāĻŋāĻœā§‡āϕ⧇ āϏ⧁āĻ¨ā§āĻĻāϰāĻ­āĻžāĻŦ⧇ āϜ⧁āϜ⧁ āĻŽā§āĻ– āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϚāĻŋāĻ¨ā§āϤāĻž. āφāĻĒāύāĻŋ āĻŽāύ⧇ āĻ•āϰ⧇āύ, āĻšā§āϝāĻžāρ, āϛ⧇āϞ⧇āϰāĻž āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ, āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āφāĻĒāύāĻŋ āĻĢāĻŋāϰ⧇ āφāϏ⧇āύ āĻāĻŦāĻ‚ āĻāχ āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻŸā§‡āϰāĻžāĻŦāĻžāχāϟ āĻĄā§‡āϟāĻžāĻŦ⧇āϏāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āϟāĻŋāĻ™ā§āĻ•āĻžāϰ āĻ•āϰ⧇āύāĨ¤ āφāϰ āĻāχ āĻšāĻšā§āϛ⧇ āϜ⧁āύāĻŋāϝāĻŧāϰāĨ¤ āφāĻĒāύāĻŋ āĻāϟāĻž āĻ•āĻŋ āĻāĻ•āϟāĻŋ āĻšāĻŋāϟ āĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ?

āφāĻŽāĻŋ 20 āϟāĻŋāϰāĻ“ āĻŦ⧇āĻļāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāώāĻž āϜāĻžāύāĻŋāĨ¤ āĻ•āĻžāϜ āϚāϞāĻžāĻ•āĻžāϞ⧀āύ āφāĻŽāĻžāϕ⧇ āĻāϟāĻŋāχ āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϤāĻžāϰāĻž āφāĻĒāύāĻžāϕ⧇ āĻāϰāĻ˛ā§āϝāĻžāĻ‚-āĻ, āϏāĻŋ-āϤ⧇, āϏāĻŋ++-āĻ, āϞ⧁āϝāĻŧāĻž-āϤ⧇, āĻĒāĻžāχāĻĨāύ⧇, āϰ⧁āĻŦāĻŋ-āϤ⧇, āĻ…āĻ¨ā§āϝ āĻ•āĻŋāϛ⧁āϤ⧇ āϕ⧋āĻĄ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϕ⧇ āϏāĻŦāχ āĻ•āĻžāϟāϤ⧇ āĻšāĻŦ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇, āφāĻŽāĻŋ āĻ›āĻŋāϞ. āϏāĻ āĻŋāĻ• āϏāĻ‚āĻ–ā§āϝāĻž āĻ—āĻŖāύāĻž āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ āĻšāϝāĻŧāύāĻŋ, āϤāĻŦ⧇ āϕ⧋āĻĨāĻžāĻ“ 20 āĻāϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻŋ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇āĨ¤

āϝ⧇āĻšā§‡āϤ⧁ āĻāĻ–āĻžāύ⧇ āϏāĻŦāĻžāχ āϜāĻžāύ⧇ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āϕ⧀ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āϕ⧀ āĻ•āϰāĻŋ, āϤāĻžāχ āφāĻŽāϰāĻž āĻ•āϤāϟāĻž āĻļāĻžāĻ¨ā§āϤ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āϕ⧀ āĻ•āϰāĻŋ āϤāĻž āύāĻŋāϝāĻŧ⧇ āφāĻŽāĻŋ āĻ•āĻĨāĻž āĻŦāϞāĻŦ āύāĻžāĨ¤ āφāĻŽāĻŋ āĻļ⧁āϧ⧁ āφāĻĒāύāĻžāϕ⧇ āĻŦāϞāĻŦ āϝ⧇ āϏāĻžāϰāĻž āĻŦāĻŋāĻļā§āĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ 13āϟāĻŋ āĻ…āĻĢāĻŋāϏ āφāϛ⧇, 300 āϟāĻŋāϰāĻ“ āĻŦ⧇āĻļāĻŋ āĻ•āĻ°ā§āĻŽāϚāĻžāϰ⧀, āĻŽāĻ¸ā§āϕ⧋, āϤāĻžāϞāĻŋāύ āĻāĻŦāĻ‚ āĻŽāĻžāĻ˛ā§āϟāĻžāϝāĻŧ āωāĻ¨ā§āύāϝāĻŧāύāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϚāĻžāύ, āφāĻĒāύāĻŋ āĻŽāĻžāĻ˛ā§āϟāĻž āύāĻŋāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝāĻĻāĻŋ āĻļā§€āϤāĻ•āĻžāϞ⧇ āĻ āĻžāĻ¨ā§āĻĄāĻž āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻĒāĻŋāĻ  āĻ—āϰāĻŽ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧāĨ¤

āĻŦāĻŋāĻļ⧇āώāϤ, āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻ­āĻžāĻ— āĻĒāĻžāχāĻĨāύ 2-āĻ āϞāĻŋāϖ⧇āϛ⧇āĨ¤ āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāϏāĻž āĻ•āϰāĻ›āĻŋ āĻāĻŦāĻ‚ āĻĢā§āϝāĻžāĻļāύ⧇āĻŦāϞ āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ⧇āϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āϏāĻŽāϝāĻŧ āύ⧇āχ, āϤāĻžāχ āφāĻŽāϰāĻž āĻ•ā§āώāϤāĻŋāĻ—ā§āϰāĻ¸ā§āϤ āĻšāĻšā§āĻ›āĻŋāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻœā§āϝāĻžāĻ™ā§āĻ—ā§‹ āφāϛ⧇, āĻ•āĻžāϰāĻŖ āĻāϤ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āφāϛ⧇, āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āϤāĻž āĻĢ⧇āϞ⧇ āĻĻāĻŋāϝāĻŧ⧇āĻ›āĻŋāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ MySQL, Redis āĻāĻŦāĻ‚ NGINXāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āύ⧇āĻ• āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āϜāĻŋāύāĻŋāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāĻ™ā§āĻ—ā§‹āĻĄāĻŋāĻŦāĻŋ āφāϛ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āĻ–āϰāĻ—ā§‹āĻļ āφāϛ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻ•āĻŋāϛ⧁āχ āύ⧇āχ - āϤāĻŦ⧇ āĻāϟāĻŋ āφāĻŽāĻžāϰ āύāϝāĻŧ, āĻāĻŦāĻ‚ āφāĻŽāĻŋ āĻāϟāĻŋ āĻ•āϰāĻŋ āύāĻžāĨ¤

āĻ“āĻĒ⧇āύāϰ⧇āĻ¸ā§āϟāĻŋ

āύāĻŋāĻœā§‡āϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻŦāϞāϞāĻžāĻŽāĨ¤ āϚāϞ⧁āύ āĻĻ⧇āĻ–āĻŋ āφāϜ āφāĻŽāĻŋ āĻ•āĻŋ āύāĻŋāϝāĻŧ⧇ āĻ•āĻĨāĻž āĻŦāϞāϤ⧇ āϝāĻžāĻšā§āĻ›āĻŋāσ

  • OpenResty āĻ•āĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻ•āĻŋ āĻĻāĻŋāϝāĻŧ⧇ āĻ–āĻžāĻ“āϝāĻŧāĻž āĻšāϝāĻŧ?
  • āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻĒāĻžāχāĻĨāύ, āύ⧋āĻĄāĻœā§‡āĻāϏ, āĻĒāĻŋāĻāχāϚāĻĒāĻŋ, āĻ—ā§‹ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āϜāĻŋāύāĻŋāϏ āĻĨāĻžāĻ•āĻž āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āϕ⧇āύ āϚāĻžāĻ•āĻžāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āωāĻĻā§āĻ­āĻžāĻŦāύ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϝāĻž āύāĻŋāϝāĻŧ⧇ āϏāĻŦāĻžāχ āϖ⧁āĻļāĻŋ?
  • āĻāĻŦāĻ‚ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻœā§€āĻŦāύ⧇āϰ āωāĻĻāĻžāĻšāϰāĻŖāĨ¤ āφāĻŽāĻžāϕ⧇ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻĻāύāϟāĻŋ āĻ…āύ⧇āĻ• āĻ•āĻŽ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻ•āĻžāϰāĻŖ āφāĻŽāĻŋ āĻāϟāĻŋ 3,5 āϘāĻ¨ā§āϟāĻž āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋ, āϤāĻžāχ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

OpenResty āĻšāϞ NGINXāĨ¤ āϤāĻžāϕ⧇ āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ, āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ“āϝāĻŧ⧇āĻŦ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϰāϝāĻŧ⧇āϛ⧇, āϝāĻž āĻ­āĻžāϞ āϞ⧇āĻ–āĻž, āĻāϟāĻŋ āĻĻā§āϰ⧁āϤ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āφāĻŽāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļāχ āĻ‰ā§ŽāĻĒāĻžāĻĻāύ⧇ NGINX āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϏāĻ•āϞ⧇āχ āϜāĻžāύ⧇āύ āϝ⧇ āϤāĻŋāύāĻŋ āĻĻā§āϰ⧁āϤ āĻāĻŦāĻ‚ āĻļāĻžāĻ¨ā§āϤāĨ¤ āϤāĻžāϰāĻž āĻāϤ⧇ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏ I/O āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇, āϤāĻžāχ āĻĒāĻžāχāĻĨāύ⧇ āϗ⧇āϭ⧇āĻ¨ā§āϟ āϝ⧇āĻ­āĻžāĻŦ⧇ āϏāĻžāχāϕ⧇āϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϏ⧇āĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŋāϛ⧁ āϏāĻžāχāϕ⧇āϞ āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχāĨ¤ Gevent āϚāĻŽā§ŽāĻ•āĻžāϰ, āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϏāĻŋ-āϕ⧋āĻĄ āϞ⧇āϖ⧇āύ āĻāĻŦāĻ‚ āϜāĻŋāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻ•āĻŋāϛ⧁ āϭ⧁āϞ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ, āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻĄāĻŋāĻŦāĻžāĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāĻ—āϞ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āύāĨ¤ āφāĻŽāĻžāϰ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻž āĻ›āĻŋāϞ: āϏ⧇āĻ–āĻžāύ⧇ āϕ⧀ āϭ⧁āϞ āĻšāϝāĻŧ⧇āϛ⧇ āϤāĻž āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āĻĒ⧁āϰ⧋ āĻĻ⧁āχ āĻĻāĻŋāύ āϞ⧇āϗ⧇āϛ⧇āĨ¤ āϕ⧇āω āϝāĻĻāĻŋ āφāϗ⧇ āĻ•āϝāĻŧ⧇āĻ• āϏāĻĒā§āϤāĻžāĻš āĻ–āύāύ āύāĻž āĻ•āϰāϤ, āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ, āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āϞāĻŋāϖ⧇, āĻāĻŦāĻ‚ Google āĻāϟāĻŋ āϖ⧁āρāĻœā§‡ āύāĻž āĻĒāĻžāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒāĻžāĻ—āϞ āĻšāϝāĻŧ⧇ āϝ⧇āϤāĻžāĻŽāĨ¤

NGINX āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻ•ā§āϝāĻžāĻļāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŽāĻžāύāĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻž āύāĻŋāϝāĻŧ⧇ āφāĻĒāύāĻžāϰ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ, āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āϕ⧋āĻĨāĻžāĻ“ āϧ⧀āϰ āύāĻž āĻšāύ, āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āϕ⧋āĻĨāĻžāĻ“ āĻŦāĻ°ā§āĻŖāύāĻžāĻ•āĻžāϰ⧀ āύāĻž āĻšāĻžāϰāĻžāύāĨ¤ Nginx āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āϖ⧁āĻŦ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ•, āφāĻĒāύāĻžāϕ⧇ āϕ⧀ āύāĻŋāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āύāĻŋāϝāĻŧ⧇ āĻ­āĻžāĻŦāϤ⧇ āĻšāĻŦ⧇ āύāĻž - WSGI, PHP-FPM, Gunicorn, UnicornāĨ¤ Nginx āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύāĻĻ⧇āϰ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϤāĻžāϰāĻž āĻāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϤāĻž āϜāĻžāύ⧇āĨ¤ Nginx āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āωāĻĒāĻžāϝāĻŧ⧇ āĻ…āύ⧁āϰ⧋āϧāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰ⧇āĨ¤ āφāĻŽāĻŋ āĻāχ āĻŦāĻŋāώāϝāĻŧ⧇ āĻāĻ•āϟ⧁ āĻĒāϰ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻŦāĨ¤ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇, āϤāĻžāϰ āĻāĻ•āϟāĻŋ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻ–āύ āϤāĻŋāύāĻŋ āĻ…āύ⧁āϰ⧋āϧāϟāĻŋ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āĻ›āĻŋāϞ⧇āύ, āĻ•āĻ–āύ āϤāĻŋāύāĻŋ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰ⧇āĻ›āĻŋāϞ⧇āύ āĻāĻŦāĻ‚ āĻ•āĻ–āύ āϤāĻŋāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϟāĻŋ āĻĻāĻŋāϝāĻŧ⧇āĻ›āĻŋāϞ⧇āύāĨ¤

Nginx āĻļāĻžāĻ¨ā§āϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āφāϛ⧇: āĻāϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŽāύ āϏāĻ¤ā§āĻ¤ā§āĻŦ⧇āĻ“, āϛ⧇āϞ⧇āϰāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇ āϠ⧇āϞ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āϏāĻŽāĻ¸ā§āϤ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇āĻ“ āĻāϟāĻŋ āϝāĻĨ⧇āĻˇā§āϟ āύāĻŽāύ⧀āϝāĻŧ āύāϝāĻŧāĨ¤ āĻāχ āĻļāĻ•ā§āϤāĻŋ āϝāĻĨ⧇āĻˇā§āϟ āύāϝāĻŧāĨ¤ āĻ…āϤāĻāĻŦ, Taobao āĻĨ⧇āϕ⧇ āĻŦāϞāĻ›āĻŋ āĻāĻ• āϏāĻŽāϝāĻŧ, āφāĻŽāĻŋ āĻĒā§āϰāĻžāϝāĻŧ āφāϟ āĻŦāĻ›āϰ āφāϗ⧇ āĻŽāύ⧇ āĻ•āϰāĻŋ, āĻāϟāĻŋ āĻŽāĻ§ā§āϝ⧇ Lua āύāĻŋāĻ°ā§āĻŽāĻŋāϤ. āϏ⧇ āĻ•āĻŋ āĻĻ⧇āϝāĻŧ?

  • āφāϝāĻŧāϤāύ. āĻāϟāĻž āϛ⧋āϟ. LuaJIT āϕ⧋āĻĨāĻžāĻ“ 100-200 āĻ•āĻŋāϞ⧋āĻŦāĻžāχāϟ āĻŽā§‡āĻŽāϰāĻŋ āĻ“āĻ­āĻžāϰāĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āĻ“āĻ­āĻžāϰāĻšā§‡āĻĄ āĻĻ⧇āϝāĻŧāĨ¤
  • āĻ¸ā§āĻĒā§€āĻĄ. LuaJIT āĻĻā§‹āĻ­āĻžāώ⧀ āĻ…āύ⧇āĻ• āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ C-āĻāϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ, āĻ•āĻŋāϛ⧁ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻāϟāĻŋ āϜāĻžāĻ­āĻžāϰ āĻ•āĻžāϛ⧇ āĻšā§‡āϰ⧇ āϝāĻžāϝāĻŧ, āĻ•āĻŋāϛ⧁ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāϟāĻŋāϕ⧇ āĻ›āĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻ•āĻŋāϛ⧁ āϏāĻŽāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ, āĻāϟāĻŋ āĻļāĻŋāĻ˛ā§āĻĒ⧇āϰ āϰāĻžāĻˇā§āĻŸā§āϰ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāĻŋāϤ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ JIT āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰāĨ¤ āĻāĻ–āύ āĻ āĻžāĻ¨ā§āĻĄāĻž āĻŦ⧇āĻļā§€ āφāϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāϰāĻž āϖ⧁āĻŦ āĻ­āĻžāϰ⧀, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āχ V8. āĻ•āĻŋāϛ⧁ āĻœā§‡āĻāϏ āχāĻ¨ā§āϟāĻžāϰāĻĒā§āϰ⧇āϟāĻžāϰ āĻāĻŦāĻ‚ āϜāĻžāĻ­āĻž āĻšāϟāĻ¸ā§āĻĒāϟ āĻ•āĻŋāϛ⧁ āĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻĻā§āϰ⧁āϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ•āĻŋāϛ⧁ āĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻāĻ–āύāĻ“ āĻšāĻžāϰāĻžāϝāĻŧāĨ¤
  • āĻļ⧇āĻ–āĻž āϏāĻšāϜ. āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ°ā§āϞ āϕ⧋āĻĄāĻŦ⧇āϏ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻŦ⧁āĻ•āĻŋāĻ‚ āύāĻž āĻ•āϰ⧇āύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āĻĒāĻžāĻ°ā§āϞ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻžāϰāĻĻ⧇āϰ āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻŦ⧇āύ āύāĻžāĨ¤ āĻ•āĻžāϰāĻŖ āϤāĻžāϰāĻž āϏ⧇āĻ–āĻžāύ⧇ āύ⧇āχ, āϤāĻžāĻĻ⧇āϰ āϏāĻŦāĻžāχāϕ⧇ āύāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āĻļ⧇āĻ–āĻžāύ⧋ āĻĻā§€āĻ°ā§āϘ āĻāĻŦāĻ‚ āĻ•āĻ āĻŋāύāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ…āĻ¨ā§āϝ āĻ•āĻŋāϛ⧁āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻžāϰ āϚāĻžāύ āϤāĻŦ⧇ āϤāĻžāĻĻ⧇āϰ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āĻŦāĻž āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϞ⧁āϝāĻŧāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁āχ āϏāĻšāϜāĨ¤ āϞ⧁āϝāĻŧāĻž āϤāĻŋāύ āĻĻāĻŋāύ⧇ āϝ⧇āϕ⧋āύ⧋ āϜ⧁āύāĻŋāϝāĻŧāϰ āĻļāĻŋāϖ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāϟāĻž āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āφāĻŽāĻžāϰ āĻĒā§āϰāĻžāϝāĻŧ āĻĻ⧁āχ āϘāĻŖā§āϟāĻž āϞ⧇āϗ⧇āϛ⧇āĨ¤ āĻĻ⧁āχ āϘāĻ¨ā§āϟāĻž āĻĒāϰ⧇, āφāĻŽāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āωāĻ¤ā§āĻĒāĻžāĻĻāύ⧇ āϕ⧋āĻĄ āϞāĻŋāĻ–āĻ›āĻŋāϞāĻžāĻŽāĨ¤ āĻĒā§āϰāĻžāϝāĻŧ āĻāĻ• āϏāĻĒā§āϤāĻžāĻš āĻĒāϰ⧇, āϤāĻŋāύāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻĒā§āϰāϝ⧋āϜāύāĻžāϝāĻŧ āĻ—āĻŋāϝāĻŧ⧇ āϚāϞ⧇ āϝāĻžāύāĨ¤

āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāϟāĻŋ āĻāχ āĻŽāϤ āĻĻ⧇āĻ–āĻžāϝāĻŧ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āĻāĻ–āĻžāύ⧇ āĻ…āύ⧇āĻ• āφāϛ⧇. OpenResty āϞ⧁āϝāĻŧāĻžāĻļ āĻāĻŦāĻ‚ āχāĻžā§āϜāĻŋāύ āωāĻ­āϝāĻŧāχ āĻāĻ•āϗ⧁āĻšā§āĻ› āĻŽāĻĄāĻŋāωāϞ āĻāĻ•āĻ¤ā§āϰ āĻ•āϰ⧇āϛ⧇āĨ¤ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āφāϛ⧇ - āĻ¸ā§āĻĨāĻžāĻĒāύ āĻāĻŦāĻ‚ āĻ•āĻžāϜ.

āωāĻĻāĻžāĻšāϰāĻŖ

āĻ—āĻžāύ⧇āϰ āĻ•āĻĨāĻž āϝāĻĨ⧇āĻˇā§āϟ, āφāϏ⧁āύ āϕ⧋āĻĄā§‡ āϚāϞ⧇ āϝāĻžāχāĨ¤ āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻšā§āϝāĻžāϞ⧋ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āĻ“āĻ–āĻžāύ⧇ āĻ•āĻŋ? āĻāχ āχāĻžā§āϜāĻŋāύ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ. āφāĻŽāϰāĻž āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋ āύāĻž, āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϰāĻžāωāϟāĻŋāĻ‚ āϞāĻŋāĻ–āĻŋ āύāĻž, āφāĻŽāϰāĻž āĻ•āĻŋāϛ⧁ āϰ⧇āĻĄāĻŋāĻŽā§‡āĻĄ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻŋ āύāĻž - āφāĻŽāĻžāĻĻ⧇āϰ āĻāϟāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ NGINX-āĻ āφāϛ⧇, āφāĻŽāϰāĻž āĻ­āĻžāϞ āĻāĻŦāĻ‚ āĻ…āϞāϏāĻ­āĻžāĻŦ⧇ āĻŦāĻžāϏ āĻ•āϰāĻŋāĨ¤

content_by_lua_block āĻāĻ•āϟāĻŋ āĻŦā§āϞāĻ• āϝāĻž āĻŦāϞ⧇ āϝ⧇ āφāĻŽāϰāĻž āϞ⧁āϝāĻŧāĻž āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻĒāϰāĻŋāĻŦ⧇āĻļāύ āĻ•āϰāĻ›āĻŋ⧎ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āχāĻžā§āϜāĻŋāύ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āύāĻŋāχ remote_addr āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻ¸ā§āϞāĻŋāĻĒ string.format. āĻāχ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻāĻ•āχ sprintf, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ Lua, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏāĻ āĻŋāĻ•. āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻāϟāĻŋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟāϕ⧇ āĻĻāĻŋāϝāĻŧ⧇ āĻĨāĻžāĻ•āĻŋāĨ¤

āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāϟāĻŋ āĻāχ āĻŽāϤ āĻĻ⧇āĻ–āĻžāĻŦ⧇:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦāĻžāĻ¸ā§āϤāĻŦ āϜāĻ—āϤ⧇ āĻĢāĻŋāϰ⧇āĨ¤ āωāĻ¤ā§āĻĒāĻžāĻĻāύ⧇, āϕ⧇āω āĻšā§āϝāĻžāϞ⧋ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇ āύāĻžāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇ āĻŦāĻž āĻ…āĻ¨ā§āϝ āϕ⧋āĻĨāĻžāĻ“ āϝāĻžāϝāĻŧ āĻāĻŦāĻ‚ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāϝāĻŧ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇āĨ¤

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āĻļ⧁āϧ⧁ āĻŦāϏ⧇ āĻŦāϏ⧇ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇āĨ¤ āĻāϟāĻž āϖ⧁āĻŦ āĻ­āĻžāϞ⧋ āύāĻž. āϝāĻ–āύ 100.000 āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āφāϏ⧇, āĻāϟāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϖ⧁āĻŦ āĻ•āĻ āĻŋāύāĨ¤ āĻ…āϤāĻāĻŦ, āφāϏ⧁āύ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤ āφāĻŽāϰāĻž āĻ›āĻŦāĻŋ āϖ⧁āρāϜāĻŦ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻŦāĻŋāĻĄāĻŧāĻžāϞāĨ¤ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āφāĻŽāϰāĻž āĻļ⧁āϧ⧁ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāĻŦ āύāĻž, āφāĻŽāϰāĻž āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāϗ⧁āϞāĻŋ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāĻŦ āĻāĻŦāĻ‚, āϝāĻĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ "āĻŦāĻŋāĻĄāĻŧāĻžāϞāĻ›āĻžāύāĻž" āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰ⧇, āφāĻŽāϰāĻž āĻŦāĻŋāĻĄāĻŧāĻžāϞ, āĻĢā§āϞāĻĢāĻŋ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻŦāĨ¤ āĻĒā§āϰāĻĨāĻŽā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻĄā§‡āϟāĻž āĻĒ⧇āϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻāχ āĻŽāϤ āĻĻ⧇āĻ–āĻžāϝāĻŧ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āĻĻ⧁āϟāĻŋ āϞāĻžāχāύ āφāĻĒāύāĻžāϕ⧇ GET āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻŦāĻžāĻ›āĻžāχ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ, āϕ⧋āύ⧋ āϜāϟāĻŋāϞāϤāĻž āύ⧇āχāĨ¤ āϤāĻžāϰāĻĒāϰ⧇ āφāĻŽāϰāĻž, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻāϏāĻ•āĻŋāωāĻāϞ āϕ⧋āϝāĻŧ⧇āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ āϏāĻš āĻāĻ•āϟāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĨ⧇āϕ⧇ āĻāχ āϤāĻĨā§āϝāϟāĻŋ āĻĒāĻžāχāĨ¤ āϏāĻŦāĻ•āĻŋāϛ⧁ āϏāĻšāϜ. āĻāϟāĻŋ āĻāχ āĻŽāϤ āĻĻ⧇āĻ–āĻžāϝāĻŧ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāĻŽāϰāĻž āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϏāĻ‚āϝ⧋āĻ— resty.mysql, āϝāĻž āφāĻŽāϰāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻ•āĻŋāϟ āφāϛ⧇. āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŋāϛ⧁ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ, āϏāĻŦāĻ•āĻŋāϛ⧁ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĨ¤ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ SQL āĻ•ā§āϝ⧋āϝāĻŧāĻžāϰ⧀ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰ⧁āύ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āĻāϟāĻž āĻāĻ•āϟ⧁ āĻ­ā§€āϤāĻŋāĻ•āϰ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻž āĻ•āĻžāϜ āĻ•āϰ⧇. āĻāĻ–āĻžāύ⧇ 10 āĻšāϞ āϏ⧀āĻŽāĻžāĨ¤ āφāĻŽāϰāĻž 10āϟāĻŋ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻŦ⧇āϰ āĻ•āϰāĻŋ, āφāĻŽāϰāĻž āĻ…āϞāϏ, āφāĻŽāϰāĻž āφāϰāĻ“ āĻĻ⧇āĻ–āĻžāϤ⧇ āϚāĻžāχ āύāĻžāĨ¤ āĻāϏāĻ•āĻŋāωāĻāϞ-āĻ, āφāĻŽāĻŋ āϏ⧀āĻŽāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϭ⧁āϞ⧇ āϗ⧇āĻ›āĻŋāĨ¤

āϤāĻžāϰāĻĒāϰ āφāĻŽāϰāĻž āϏāĻŦ āĻĒā§āϰāĻļā§āύ⧇āϰ āϜāĻ¨ā§āϝ āχāĻŽā§‡āϜ āϖ⧁āρāĻœā§‡. āφāĻŽāϰāĻž āĻāĻ•āϗ⧁āĻšā§āĻ› āĻ…āύ⧁āϰ⧋āϧ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ Lua āĻŸā§‡āĻŦāĻŋāϞ āĻĒā§‚āϰāĻŖ āĻ•āϰāĻŋ reqs, āĻāĻŦāĻ‚ āĻ•āϰ ngx.location.capture_multi.

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āĻāχ āϏāĻŽāĻ¸ā§āϤ āĻ…āύ⧁āϰ⧋āϧāϗ⧁āϞāĻŋ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ⧇ āϝāĻžāϝāĻŧ āĻāĻŦāĻ‚ āωāĻ¤ā§āϤāϰāϗ⧁āϞāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻĢāĻŋāϰ⧇ āφāϏ⧇āĨ¤ āϚāϞāĻŽāĻžāύ āϏāĻŽāϝāĻŧāϟāĻŋ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϧ⧀āϰ āĻ—āϤāĻŋāϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽāϝāĻŧ⧇āϰ āϏāĻŽāĻžāύāĨ¤ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āϏāĻŦāĻžāχ 50 āĻŽāĻŋāϞāĻŋāϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻĢāĻŋāϰ⧇ āφāϏāĻŋ, āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻāĻ•āĻļāϤ āĻ…āύ⧁āϰ⧋āϧ āĻĒāĻžāĻ āĻžāχ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž 50 āĻŽāĻŋāϞāĻŋāϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒāĻžāĻŦ⧎

āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āĻ…āϞāϏ āĻāĻŦāĻ‚ HTTP āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ•ā§āϝāĻžāĻļāĻŋāĻ‚ āϞāĻŋāĻ–āϤ⧇ āϚāĻžāχ āύāĻž, āϤāĻžāχ āφāĻŽāϰāĻž NGINX āϕ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āϰāϤ⧇ āĻŦāĻžāĻ§ā§āϝ āĻ•āϰāĻŦāĨ¤ āφāĻĒāύāĻŋ āĻĻ⧇āϖ⧇āϛ⧇āύ, āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āϰ⧋āϧ āĻ›āĻŋāϞ url/fetch, āĻāϟāĻž āĻāĻ–āĻžāύ⧇:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāĻŽāϰāĻž āϏāĻšāϜ āĻ•āϰāĻŋ proxy_pass, āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•ā§āϝāĻžāĻļ⧇ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϏāĻŦāĻ•āĻŋāϛ⧁ āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āϤāĻŦ⧇ āĻāϟāĻŋ āϝāĻĨ⧇āĻˇā§āϟ āύāϝāĻŧ, āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ–āύāĻ“ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āĻĄā§‡āϟāĻž āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏāĻšāϜ āϧāĻžāϰāĻŖāĻž āĻšāϞ āϏāĻŦāĻ•āĻŋāϛ⧁āϕ⧇ JSON-āĻ āϏāĻšāĻœā§‡, āĻĻ⧁āϟāĻŋ āϞāĻžāχāύ⧇ āϏāĻŋāϰāĻŋāϝāĻŧāĻžāϞ āĻ•āϰāĻžāĨ¤ āφāĻŽāϰāĻž Content-Type āĻĻāĻŋāχ, āφāĻŽāϰāĻž JSON āĻĻ⧇āχāĨ¤

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ•āϟāĻŋ āĻ…āϏ⧁āĻŦāĻŋāϧāĻž āφāϛ⧇: āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ JSON āĻĒāĻĄāĻŧāϤ⧇ āϚāĻžāύ āύāĻžāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻĢā§āϰāĻ¨ā§āϟ-āĻāĻ¨ā§āĻĄ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āφāĻ•āĻ°ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ•āĻ–āύāĻ“ āĻ•āĻ–āύāĻ“ āφāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽā§‡ āĻāϟāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰāĻŋ āύāĻžāĨ¤ āĻšā§āϝāĻžāρ, āĻāĻŦāĻ‚ āĻāϏāχāĻ“ āĻŦāĻŋāĻļ⧇āώāĻœā§āĻžāϰāĻž āĻŦāϞāĻŦ⧇āύ āϝ⧇ āφāĻŽāϰāĻž āϝāĻĻāĻŋ āĻ›āĻŦāĻŋāϗ⧁āϞāĻŋ āϖ⧁āρāϜāĻ›āĻŋ, āϤāĻŦ⧇ āϤāĻžāϰāĻž āĻĒāĻžāĻ¤ā§āϤāĻž āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤ āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āϤāĻžāĻĻ⧇āϰ āĻ•āĻŋāϛ⧁ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āĻĻ⧇āχ, āϤāĻžāϰāĻž āĻŦāϞāĻŦ⧇ āϝ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻ°ā§āϚ āχāĻžā§āϜāĻŋāύāϗ⧁āϞāĻŋ āĻ•āĻŋāϛ⧁ āϏ⧂āĻšā§€ āĻ•āϰ⧇ āύāĻžāĨ¤

āĻāϟāĻž āύāĻŋāϝāĻŧ⧇ āĻ•āĻŋ āĻ•āϰāϤ⧇ āϚāĻžāύ? āĻ…āĻŦāĻļā§āϝāχ, āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ HTML āĻĻ⧇āĻŦāĨ¤ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāϗ⧁āϞāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻ āĻŋāĻ• āύāϝāĻŧ, āϤāĻžāχ āφāĻŽāϰāĻž āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϚāĻžāχ⧎ āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāϛ⧇ lua-resty-template.

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāĻĒāύāĻŋ āĻ…āĻŦāĻļā§āϝāχ āϤāĻŋāύāϟāĻŋ āĻ­āϝāĻŧāĻ™ā§āĻ•āϰ āĻ…āĻ•ā§āώāϰ OPM āĻĻ⧇āϖ⧇āϛ⧇āύāĨ¤ OpenResty āĻāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āύāĻŋāϝāĻŧ⧇ āφāϏ⧇, āϝāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻĒāύāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āĻāĻ•āϟāĻŋ āϗ⧁āĻšā§āĻ› āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇, lua-resty-template. āĻāϟāĻŋ āĻœā§āϝāĻžāĻ™ā§āĻ—ā§‹ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āĻŸā§‡āϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āχāĻžā§āϜāĻŋāύāĨ¤ āϏ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āϕ⧋āĻĄ āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϏāĻŦāĻ•āĻŋāϛ⧁ āĻāχāϰāĻ•āĻŽ āĻ•āĻŋāϛ⧁ āĻĻ⧇āĻ–āĻžāĻŦ⧇:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāĻŽāϰāĻž āĻĄā§‡āϟāĻž āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟāϟāĻŋāϕ⧇ āφāĻŦāĻžāϰ āĻĻ⧁āϟāĻŋ āϞāĻžāχāύ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϖ⧁āĻļāĻŋ, āĻŦāĻŋāĻĄāĻŧāĻžāϞ āĻĒ⧇āϝāĻŧ⧇āϛ⧇āύ. āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āĻ…āύ⧁āϰ⧋āϧāϟāĻŋ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰ⧇āĻ›āĻŋ, āϤāĻŋāύāĻŋ āĻŦāĻŋāĻĄāĻŧāĻžāϞāĻ›āĻžāύāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāĻļāĻŽ āϏ⧀āϞāĻ“ āĻĒ⧇āϝāĻŧ⧇āϛ⧇āύāĨ¤ āφāĻĒāύāĻŋ āĻ•āĻ–āύāχ āϜāĻžāύ⧇āύ āύāĻž, āĻšāϝāĻŧāϤ⧋ āϤāĻŋāύāĻŋ āĻāϟāĻŋ āϖ⧁āρāϜāĻ›āĻŋāϞ⧇āύ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻŋāύāĻŋ āϤāĻžāϰ āĻ…āύ⧁āϰ⧋āϧāϟāĻŋ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāύāĻŋāĨ¤

āϏāĻŦāĻ•āĻŋāϛ⧁āχ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻŦāĻŋāĻ•āĻžāĻļ⧇ āφāĻ›āĻŋ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻāĻ–āύāĻ“ āĻĻ⧇āĻ–āĻžāϤ⧇ āϚāĻžāχ āύāĻžāĨ¤ āĻāϰ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻ•āϰāĻž āϝāĻžāĻ•. āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāϏ⧁āύ āĻĻ⧇āĻ–āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ NGINX OpenResty āĻāϰ āĻĒāϰāĻŋāĻĒā§āϰ⧇āĻ•ā§āώāĻŋāϤ⧇ āĻ…āύ⧁āϰ⧋āϧāϟāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧇:

  • āĻĒā§āϰāĻĨāĻŽ āĻĒāĻ°ā§āĻŦ- āĻĒā§āϰāĻŦ⧇āĻļ, āϝāĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻāχāĻŽāĻžāĻ¤ā§āϰ āĻāϏ⧇āϛ⧇, āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āϤāĻžāϕ⧇ āĻšā§‡āĻĄāĻžāϰ, IP āĻ āĻŋāĻ•āĻžāύāĻž, āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĄā§‡āϟāĻž āĻĻā§āĻŦāĻžāϰāĻž āĻĻ⧇āϖ⧇āĻ›āĻŋāĨ¤ āφāĻŽāϰāĻž āĻāϟāĻŋ āĻĒāĻ›āĻ¨ā§āĻĻ āύāĻž āĻšāϞ⧇ āφāĻĒāύāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻāϟāĻŋ āϕ⧇āĻŸā§‡ āĻĢ⧇āϞāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāϟāĻŋ āĻ…āύ⧁āĻŽā§‹āĻĻāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āĻ…āĻĨāĻŦāĻž āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻ…āύ⧇āĻ• āĻ…āύ⧁āϰ⧋āϧ āĻĒāĻžāχ, āφāĻŽāϰāĻž āĻāχ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āϏāĻšāĻœā§‡āχ āϏ⧇āϗ⧁āϞāĻŋ āϕ⧇āĻŸā§‡ āĻĢ⧇āϞāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤
  • āĻĒ⧁āύāĻ°ā§āĻŦāĻžāϰ āϞ⧇āĻ–āĻž. āĻ•āĻŋāϛ⧁ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻĄā§‡āϟāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āϞ⧇āĻ–āĻžāĨ¤
  • āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁. āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻĻāĻŋāχāĨ¤
  • āĻšā§‡āĻĄāĻžāϰ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ. āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻļāĻŋāϰ⧋āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ. āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ proxy_pass, āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āφāϗ⧇ āĻ•āĻŋāϛ⧁ āĻļāĻŋāϰ⧋āύāĻžāĻŽ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤
  • āĻļāϰ⧀āϰ⧇āϰ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ. āφāĻŽāϰāĻž āĻļāϰ⧀āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤
  • āϞāĻ— āχāύ āĻ•āϰ⧁āύ - āϞāĻ—āĻŋāĻ‚ āĻāĻ•āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ¸ā§āϤāϰ āĻ›āĻžāĻĄāĻŧāĻž āχāϞāĻžāĻ¸ā§āϟāĻŋāĻ• āϏāĻžāĻ°ā§āĻšā§‡ āϞāĻ— āϞ⧇āĻ–āĻž āϏāĻŽā§āĻ­āĻŦāĨ¤

āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻāχ āĻŽāϤ āĻ•āĻŋāϛ⧁ āĻĻ⧇āĻ–āĻžāĻŦ⧇:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāĻŽāϰāĻž āϝ⧇ āĻāϟāĻŋ āϝ⧋āĻ— āĻ•āϰāĻŦ location, āϝāĻž āφāĻŽāϰāĻž āφāϗ⧇ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄāϟāĻŋ āϏ⧇āĻ–āĻžāύ⧇ āϰ⧇āϖ⧇āĻ›āĻŋ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āϕ⧁āĻ•āĻŋ āĻŸā§‹āϕ⧇āύ āφāϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āĻĻ⧇āĻ–āϤ⧇. āϝāĻĻāĻŋ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āĻ…āύ⧁āĻŽā§‹āĻĻāύ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻŋāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āϧ⧂āĻ°ā§āϤ āĻāĻŦāĻ‚ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āĻāĻ•āϟāĻŋ āϕ⧁āĻ•āĻŋ āĻŸā§‹āϕ⧇āύ āϏ⧇āϟ āĻ•āϰāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧎ āĻ…āϤāĻāĻŦ, āφāĻŽāϰāĻž āĻāϟāĻŋ āϰ⧇āĻĄāĻŋāϏ⧇āĻ“ āϰāĻžāĻ–āĻŦ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āϰ⧇āĻĄāĻŋāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϕ⧋āĻĄāϟāĻŋ āϖ⧁āĻŦ āϏāĻšāϜ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ­āĻžāώāĻžāϰ āĻĨ⧇āϕ⧇ āφāϞāĻžāĻĻāĻž āύāϝāĻŧāĨ¤ āĻāĻ•āχ āϏāĻžāĻĨ⧇, āϏāĻŽāĻ¸ā§āϤ āχāύāĻĒ⧁āϟ/āφāωāϟāĻĒ⧁āϟ, āϏ⧇āĻ–āĻžāύ⧇ āϕ⧀ āφāϛ⧇, āĻāĻ–āĻžāύ⧇ āϕ⧀ āφāϛ⧇, āĻāϟāĻŋ āĻŦā§āϞāĻ• āĻ•āϰāϛ⧇ āύāĻžāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏ āϕ⧋āĻĄ āϞ⧇āϖ⧇āύ, āϤāĻžāĻšāϞ⧇ āĻāϟāĻŋ āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ Gevent āϏāĻ™ā§āϗ⧇ āĻŽāϤ, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ­āĻžāϞ āĻ•āϰāĻž.

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāϏ⧁āύ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āύāĻŋāĻœā§‡āχ āĻ•āϰāĻŋ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āφāĻŽāϰāĻž āĻŦāϞāĻŋ āϝ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻŦāĻĄāĻŋ āĻĒāĻĄāĻŧāϤ⧇ āĻšāĻŦ⧇āĨ¤ āφāĻŽāϰāĻž POST āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋ, āϞāĻ—āχāύ āĻāĻŦāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϏāĻ āĻŋāĻ• āĻ•āĻŋāύāĻž āϤāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύāĨ¤ āϝāĻĻāĻŋ āϭ⧁āϞ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āĻ…āύ⧁āĻŽā§‹āĻĻāύ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻŋāĨ¤ āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āϤāĻžāϰāĻž āϏāĻ āĻŋāĻ• āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž Redis āĻ āĻŸā§‹āϕ⧇āύ āϞāĻŋāĻ–āĻŋ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āϕ⧁āĻ•āĻŋ āϏ⧇āϟ āĻ•āϰāϤ⧇ āϭ⧁āϞāĻŦ⧇āύ āύāĻž, āĻāϟāĻŋ āĻĻ⧁āϟāĻŋ āϞāĻžāχāύ⧇ āĻ•āϰāĻž āĻšāϝāĻŧ:

OpenResty: NGINX āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āωāĻĻāĻžāĻšāϰāĻŖ āϏāĻšāϜ, āĻ…āύ⧁āĻŽāĻžāύāĻŽā§‚āϞāĻ•āĨ¤ āĻ…āĻŦāĻļā§āϝāχ, āφāĻŽāϰāĻž āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ āύāĻž āϝāĻž āĻŽāĻžāύ⧁āώāϕ⧇ āĻŦāĻŋāĻĄāĻŧāĻžāϞ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧇ āϜāĻžāύ⧇āĨ¤ āϤ⧋ āϚāϞ⧁āύ āĻœā§‡āύ⧇ āύ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ• āĻ‰ā§ŽāĻĒāĻžāĻĻāύ⧇ āĻ•āĻŋ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

  • āĻŽāĻŋāύāĻŋāĻŽāĻžāϞāĻŋāĻ¸ā§āϟ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ. āĻ•āĻ–āύāĻ“ āĻ•āĻ–āύāĻ“ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻŦ⧇āĻļ āĻ•āĻŋāϛ⧁ āĻĄā§‡āϟāĻž āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇: āϕ⧋āĻĨāĻžāĻ“ āφāĻŽāĻžāĻĻ⧇āϰ āϤāĻžāϰāĻŋāĻ– āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āϕ⧋āĻĨāĻžāĻ“ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŋāϛ⧁ āϧāϰāϪ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āĻāĻ–āύ āϏāĻžāχāĻŸā§‡ āĻ•āϤāϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϰāϝāĻŧ⧇āϛ⧇ āϤāĻž āĻŦāϞāϤ⧇ āĻšāĻŦ⧇, āĻāĻ•āϟāĻŋ āĻ•āĻžāωāĻ¨ā§āϟāĻžāϰ āĻŦāĻž āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ⧇ āĻ¸ā§āĻ•ā§āϰ⧁ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϤ āϛ⧋āϟ āĻ•āĻŋāϛ⧁āĨ¤ āĻ•āĻŋāϛ⧁ āĻ¨ā§āϝ⧂āύāϤāĻŽ āϟ⧁āĻ•āϰāĻž āϖ⧁āĻŦ āϏāĻšāĻœā§‡āχ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāϟāĻŋ āĻĻā§āϰ⧁āϤ, āϏāĻšāϜ āĻāĻŦāĻ‚ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āĻšāĻŦ⧇āĨ¤
  • āĻĄā§‡āϟāĻž āĻĒā§āϰāĻŋāĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚. āĻ•āĻ–āύāĻ“ āĻ•āĻ–āύāĻ“ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύ āĻāĻŽā§āĻŦ⧇āĻĄ āĻ•āϰāϤ⧇ āϚāĻžāχ, āĻāĻŦāĻ‚ āφāĻŽāϰāĻž API āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āϏāĻžāĻĨ⧇ āĻāχ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāύāϗ⧁āϞāĻŋ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻŋāĨ¤ āĻāϟāĻŋ āĻāĻ–āĻžāύ⧇ āĻ•āϰāĻž āϖ⧁āĻŦ āϏāĻšāϜāĨ¤ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϞ⧋āĻĄ āĻ•āϰāĻŋ āύāĻž, āϝāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻ•āĻ ā§‹āϰ āĻĒāϰāĻŋāĻļā§āϰāĻŽ āĻ•āϰāϛ⧇āĨ¤ āφāĻĒāύāĻŋ āĻāĻ–āĻžāύ⧇ āύāĻŋāϤ⧇ āĻāĻŦāĻ‚ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ. āφāĻŽāϰāĻž āĻ•āĻŋāϛ⧁ JS āĻŽā§‹āĻ˛ā§āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻŦāĻž āĻŦāĻŋāĻĒāϰ⧀āϤāĻ­āĻžāĻŦ⧇, āφāύāĻ¸ā§āϟāĻŋāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āφāϗ⧇ āĻ•āĻŋāϛ⧁ āĻĒā§āϰāĻŋāĻĒā§āϰāϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤
  • āĻŽāĻžāχāĻ•ā§āϰ⧋āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽā§āĻŽā§āĻ–āĻ­āĻžāĻ—. āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āĻ­āĻžāϞ āϕ⧇āϏ, āφāĻŽāĻŋ āĻāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāϰ āφāϗ⧇, āφāĻŽāĻŋ Tenzor-āĻāϰ āϜāĻ¨ā§āϝ āĻ•āĻžāϜ āĻ•āϰ⧇āĻ›āĻŋ, āĻāĻ•āϟāĻŋ āχāϞ⧇āĻ•āĻŸā§āϰāύāĻŋāĻ• āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚ āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋ āϝ⧇āϟāĻŋ āĻĻ⧇āĻļ⧇āϰ āĻĒā§āϰāĻžāϝāĻŧ āĻ…āĻ°ā§āϧ⧇āĻ• āφāχāύāĻŋ āϏāĻ¤ā§āϤāĻžāϰ āϜāĻ¨ā§āϝ āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĻ›āĻŋ, āĻāĻ•āχ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏ⧇āĻ–āĻžāύ⧇ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ: āϰāĻžāωāϟāĻŋāĻ‚, āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻāĻŦāĻ‚ āφāϰāĻ“ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁āĨ¤
    āĻ“āĻĒ⧇āύāϰ⧇āĻ¸ā§āϟāĻŋ āφāĻĒāύāĻžāϰ āĻŽāĻžāχāĻ•ā§āϰ⧋āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āφāĻ āĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁āϤ⧇ āĻāĻ•āĻ• āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇āĨ¤ āϝ⧇āĻšā§‡āϤ⧁ āĻŽāĻžāχāĻ•ā§āϰ⧋āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞāĻŋ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āϞ⧇āĻ–āĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āφāĻĒāύāĻžāϰ āĻāĻ–āĻžāύ⧇ Node.js āφāϛ⧇, āφāĻĒāύāĻžāϰ āĻāĻ–āĻžāύ⧇ PHP āφāϛ⧇, āφāĻĒāύāĻžāϰ āĻāĻ–āĻžāύ⧇ Python āφāϛ⧇, āĻāĻ–āĻžāύ⧇ āĻ•āĻŋāϛ⧁ Erlang āϜāĻŋāύāĻŋāϏ āφāϛ⧇, āφāĻŽāϰāĻž āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇ āφāĻŽāϰāĻž āϏāĻŦ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻāĻ•āχ āϕ⧋āĻĄ āφāĻŦāĻžāϰ āϞāĻŋāĻ–āϤ⧇ āϚāĻžāχ āύāĻžāĨ¤ āĻ…āϤāĻāĻŦ, OpenResty āϏāĻžāĻŽāύ⧇āϰ āĻ…āĻ‚āĻļ⧇ āĻĒā§āϞāĻžāĻ— āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ. āϏāĻžāϧāĻžāϰāĻŖāϤ NGINX āĻĒā§āϰāĻŦ⧇āĻļāĻĻā§āĻŦāĻžāϰ⧇ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āϏāĻŽāĻ¸ā§āϤ āĻ…āύ⧁āϰ⧋āϧ āĻāϟāĻŋāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻāχ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻāϟāĻŋ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāĻž āϖ⧁āĻŦ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ•āĨ¤ āφāĻĒāύāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻ•āĻŋāϛ⧁ āĻ—āĻŖāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϕ⧋āĻĨāĻžāĻ“ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āχ āχāϞāĻžāĻ¸ā§āϟāĻŋāĻ•āϏāĻžāĻ°ā§āϚ, āϞāĻ—āĻ¸ā§āĻŸā§āϝāĻžāĻļ, āĻŦāĻž āĻļ⧁āϧ⧁ āϞāϗ⧇ āĻāϟāĻŋ āϞāĻŋāϖ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻāϟāĻŋ āϕ⧋āĻĨāĻžāĻ“ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤
  • āĻŽāĻžāĻ˛ā§āϟāĻŋ-āχāωāϜāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ. āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ…āύāϞāĻžāχāύ āϗ⧇āĻŽāϗ⧁āϞāĻŋ āĻ•āϰāĻžāĻ“ āϖ⧁āĻŦ āĻ­āĻžāϞāĨ¤ āφāϜ āϕ⧇āĻĒ āϟāĻžāωāύ⧇ āφāϞ⧇āĻ•āϜāĻžāĻ¨ā§āĻĄāĻžāϰ āĻ—ā§āĻ˛ā§āϝāĻžāĻĄāĻŋāĻļ āφāĻĒāύāĻžāϕ⧇ āĻŦāϞāĻŦ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ“āĻĒ⧇āύāϰ⧇āĻ¸ā§āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻ˛ā§āϟāĻŋāĻĒā§āϞ⧇āϝāĻŧāĻžāϰ āϗ⧇āĻŽā§‡āϰ āĻĒā§āϰ⧋āĻŸā§‹āϟāĻžāχāĻĒ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤
  • āĻ…āύ⧁āϰ⧋āϧ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāĻŋāĻ‚ (WAF). āĻāĻ–āύ āϏāĻŦ āϧāϰāϪ⧇āϰ āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻĢā§āϝāĻžāĻļāύ⧇āĻŦāϞ, āϏ⧇āĻ–āĻžāύ⧇ āĻ…āύ⧇āĻ• āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āϤāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ OpenResty-āĻāϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ⧇, āφāĻĒāύāĻŋ āύāĻŋāĻœā§‡āϕ⧇ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝāĻž āφāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āϏāĻšāĻœā§‡ āĻāĻŦāĻ‚ āϏāĻšāĻœā§‡āχ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻĒāĻžāχāĻĨāύ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāϛ⧇āύ āϝ⧇ āĻĒāĻŋāĻāχāϚāĻĒāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āχāύāĻœā§‡āĻ•āĻļāύ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāĻŦ⧇ āύāĻž, āϝāĻĻāĻŋ āύāĻž, āĻ…āĻŦāĻļā§āϝāχ, āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻ•āύāϏ⧋āϞ āĻĨ⧇āϕ⧇ āϝ⧇ āϕ⧋āύāĻ“ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āύāĨ¤ āφāĻĒāύāĻŋ āϜāĻžāύ⧇āύ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ MySQL āĻāĻŦāĻ‚ Python āφāϛ⧇āĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ, āĻāĻ–āĻžāύ⧇ āϤāĻžāϰāĻž āĻ•āĻŋāϛ⧁ āϧāϰāϪ⧇āϰ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻŸā§āϰāĻžāĻ­āĻžāĻ°ā§āϏāĻžāϞ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇ āĻ•āĻŋāϛ⧁ āχāύāĻœā§‡āĻ•āĻļāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻ…āϤāĻāĻŦ, āφāĻĒāύāĻŋ āϏāĻžāĻŽāύ⧇āϰ āĻ…āĻ‚āĻļ⧇ āĻĻā§āϰ⧁āϤ āĻāĻŦāĻ‚ āϏāĻ¸ā§āϤāĻžāϝāĻŧ āĻŽā§‚āĻ• āĻ…āύ⧁āϰ⧋āϧāϗ⧁āϞāĻŋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤
  • āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ. āϝ⧇āĻšā§‡āϤ⧁ OpenResty NGINX-āĻāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϤ⧈āϰāĻŋ, āĻāϟāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āĻŦā§‹āύāĻžāϏ āϰāϝāĻŧ⧇āϛ⧇ - āĻāϟāĻŋ NGINX āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ. āĻāϟāĻŋ āĻ…āύ⧇āĻ• āĻŦāĻĄāĻŧ, āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āĻĒā§āϰāĻĨāĻŽā§‡āχ āĻ…āύ⧇āĻ• āĻĒā§āϰāĻļā§āύ⧇āϰ āωāĻ¤ā§āϤāϰ NGINX āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇⧎

    āϞ⧁āϝāĻŧāĻž āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ. āĻ—āϤāĻ•āĻžāϞ āφāĻŽāĻŋ āĻšāĻžāχāϞ⧋āĻĄ ++ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āĻĻāĻŋāĻŦāϏ⧇ āφāϏāĻž āϛ⧇āϞ⧇āĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻĨāĻž āĻŦāϞ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āĻļ⧁āύ⧇āĻ›āĻŋ āϝ⧇ āϞ⧁āϝāĻŧāĻžāϤ⧇ āϕ⧇āĻŦāϞ āĻŸā§āϝāĻžāϰāĻžāĻ¨ā§āϟ⧁āϞ āϞ⧇āĻ–āĻž āφāϛ⧇āĨ¤ āĻāĻŽāύ āύāϝāĻŧ, āϞ⧁āϝāĻŧāĻžāϝāĻŧ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āϞ⧇āĻ–āĻž āφāϛ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖ: OpenResty, Prosody XMPP āϏāĻžāĻ°ā§āĻ­āĻžāϰ, Love2D āϗ⧇āĻŽ āχāĻžā§āϜāĻŋāύ, Lua āĻ“āϝāĻŧāĻžāϰāĻ•ā§āϰāĻžāĻĢāϟ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝ āϕ⧋āĻĨāĻžāĻ“ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ…āύ⧇āĻ• āϞ⧁āϝāĻŧāĻž āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ āφāϛ⧇, āϤāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻļā§€āϞ āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻŽāĻžāϰ āϏāĻŽāĻ¸ā§āϤ āϞ⧁āϝāĻŧāĻž āĻĒā§āϰāĻļā§āύ⧇āϰ āĻ•āϝāĻŧ⧇āĻ• āϘāĻ¨ā§āϟāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āωāĻ¤ā§āϤāϰ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āφāĻĒāύāĻŋ āϝāĻ–āύ āĻŽā§‡āϞāĻŋāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ āϞāĻŋāĻ–āĻŦ⧇āύ, āφāĻ•ā§āώāϰāĻŋāĻ• āĻ…āĻ°ā§āĻĨ⧇ āĻ•āϝāĻŧ⧇āĻ• āĻŽāĻŋāύāĻŋāĻŸā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻāĻ•āϗ⧁āĻšā§āĻ› āωāĻ¤ā§āϤāϰ āϰāϝāĻŧ⧇āϛ⧇, āϤāĻžāϰāĻž āϕ⧀ āĻāĻŦāĻ‚ āϕ⧀āĻ­āĻžāĻŦ⧇, āϕ⧀ āϕ⧀ āϤāĻž āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇āĨ¤ āĻāϟāĻž āĻĻāĻžāϰ⧁āĻŖ. āĻĻ⧁āĻ°ā§āĻ­āĻžāĻ—ā§āϝāĻŦāĻļāϤ, āĻāχ āϧāϰāύ⧇āϰ āφāĻ¨ā§āϤāϰāĻŋāĻ• āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ āϏāĻ°ā§āĻŦāĻ¤ā§āϰ āύ⧇āχāĨ¤
    āĻ“āĻĒ⧇āύāϰ⧇āĻ¸ā§āϟāĻŋāϤ⧇ āĻ—āĻŋāϟāĻšāĻžāĻŦ āϰāϝāĻŧ⧇āϛ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻ•āĻŋāϛ⧁ āϭ⧇āϙ⧇ āϗ⧇āϞ⧇ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϖ⧁āϞāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϗ⧁āĻ—āϞ āĻ—ā§āϰ⧁āĻĒ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āϞāĻŋāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻž āϰāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻŋāώāϝāĻŧ āύāĻŋāϝāĻŧ⧇ āφāϞ⧋āϚāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻšā§€āύāĻž āĻ­āĻžāώāĻžāϝāĻŧ āĻāĻ•āϟāĻŋ āĻŽā§‡āχāϞāĻŋāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻž āϰāϝāĻŧ⧇āϛ⧇ - āφāĻĒāύāĻŋ āĻ•āĻ–āύāχ āϜāĻžāύ⧇āύ āύāĻž, āĻšāϝāĻŧāϤ āφāĻĒāύāĻŋ āχāĻ‚āϰ⧇āϜāĻŋ āĻŦāϞāϤ⧇ āĻĒāĻžāϰ⧇āύ āύāĻž, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āϚāĻžāχāύāĻŋāϜ āĻœā§āĻžāĻžāύ āφāϛ⧇āĨ¤

āĻĢāϞāĻžāĻĢāϞ

  • āφāĻŽāĻŋ āφāĻļāĻž āĻ•āϰāĻŋ āφāĻŽāĻŋ āĻŦā§‹āĻāĻžāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāϝāĻŧ⧇āĻ›āĻŋ āϝ⧇ āĻ“āĻĒ⧇āύāϰ⧇āĻ¸ā§āϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦ⧇āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āĻ•āĻžāĻ āĻžāĻŽā§‹āĨ¤
  • āĻāϟāĻŋāϤ⧇ āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āĻāĻ•āϟāĻŋ āĻ•āĻŽ āĻĨā§āϰ⧇āĻļāĻšā§‹āĻ˛ā§āĻĄ āϰāϝāĻŧ⧇āϛ⧇, āϝ⧇āĻšā§‡āϤ⧁ āϕ⧋āĻĄāϟāĻŋ āφāĻŽāϰāĻž āϝāĻž āϞāĻŋāĻ–āĻŋ āϤāĻžāϰ āĻ…āύ⧁āϰ⧂āĻĒ, āĻ­āĻžāώāĻžāϟāĻŋ āĻŦ⧇āĻļ āϏāĻšāϜ āĻāĻŦāĻ‚ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāĨ¤
  • āĻāϟāĻŋ āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻ›āĻžāĻĄāĻŧāĻžāχ āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏ I/O āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āύ⧁āĻĄāϞāϏ āĻĨāĻžāĻ•āĻŦ⧇ āύāĻž āĻ•āĻžāϰāĻŖ āφāĻŽāϰāĻž āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ NodeJS-āĻ āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤
  • āĻāϟāĻŋāϰ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āĻ¸ā§āĻĨāĻžāĻĒāύāĻž āϰāϝāĻŧ⧇āϛ⧇, āĻ•āĻžāϰāĻŖ āφāĻŽāĻžāĻĻ⧇āϰ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏāĻ āĻŋāĻ• āĻŽāĻĄāĻŋāωāϞ āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āĻĄ āϏāĻš NGINX āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻāĻŦāĻ‚ āϏāĻŦāĻ•āĻŋāϛ⧁āχ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤
  • āĻŦāĻĄāĻŧ āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻļā§€āϞ āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧāĨ¤

āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϰāĻžāωāϟāĻŋāĻ‚ āĻ•āϰāĻž āĻšāϝāĻŧ āφāĻŽāĻŋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻŦāϞāĻŋāύāĻŋ, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āĻĻā§€āĻ°ā§āϘ āĻ—āĻ˛ā§āĻĒ āĻšāϤ⧇ āĻĒāϰāĻŋāĻŖāϤ.

āφāĻĒāύāĻžāϰ āĻŽāύ⧋āϝ⧋āϗ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϕ⧇ āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ!

āĻ­āĻŋāĻĄāĻŋāĻ“ āĻĻ⧇āĻ–āĻžāĻ“

āĻ­ā§āϞāĻžāĻĻāĻŋāĻŽāĻŋāϰ āĻĒā§āϰ⧋āϟāĻžāϏāĻ­ - āĻ“āĻĒ⧇āύāϰ⧇āĻ¸ā§āϟāĻŋ: āĻāύāϜāĻŋāφāχāĻāύāĻāĻ•ā§āϏāϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāĻž

āωāĻ¤ā§āϏ: www.habr.com

āĻāĻ•āϟāĻŋ āĻŽāĻ¨ā§āϤāĻŦā§āϝ āϜ⧁āĻĄāĻŧ⧁āύ