āϝāĻ–āύ 'āĻ•' 'āĻ•' āĻāϰ āϏāĻŽāĻžāύ āύāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāĻ• āĻāϰ āĻĒāϰāĻŋāĻĒā§āϰ⧇āĻ•ā§āώāĻŋāϤ⧇

āφāĻŽāĻžāϰ āĻāĻ• āĻŦāĻ¨ā§āϧ⧁āϰ āϏāĻžāĻĨ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ…āĻĒā§āϰ⧀āϤāĻŋāĻ•āϰ āϘāϟāύāĻž āϘāĻŸā§‡āϛ⧇āĨ¤ āϤāĻŦ⧇ āĻāϟāĻŋ āĻŽāĻŋāĻ–āĻžāχāϞ⧇āϰ āϜāĻ¨ā§āϝ āϝāϤāϟāĻž āĻ…āĻĒā§āϰ⧀āϤāĻŋāĻ•āϰ āĻ›āĻŋāϞ, āĻāϟāĻŋ āφāĻŽāĻžāϰ āϜāĻ¨ā§āϝ āĻ āĻŋāĻ• āϤāϤāϟāĻžāχ āĻŦāĻŋāύ⧋āĻĻāύāĻŽā§‚āϞāĻ• āĻ›āĻŋāϞāĨ¤

āφāĻŽāĻŋ āĻŦāϞāϤ⧇āχ āĻšāĻŦ⧇ āϝ⧇ āφāĻŽāĻžāϰ āĻŦāĻ¨ā§āϧ⧁ āĻŦ⧇āĻļ āχāωāύāĻŋāĻ•ā§āϏ-āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀: āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϟāĻŋ āύāĻŋāĻœā§‡āχ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻŽāĻžāχāĻāϏāĻ•āĻŋāωāĻāϞ, āĻĒāĻŋāĻāχāϚāĻĒāĻŋ āĻāĻŦāĻ‚ āϏāĻšāϜ āϏ⧇āϟāĻŋāĻ‚āϏ āĻ•āϰ⧁āύ nginx.
āĻāĻŦāĻ‚ āϤāĻžāϰ āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āϏāϰāĻžā§āϜāĻžāĻŽā§‡āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŦ⧇āĻĻāĻŋāϤ āĻāĻ• āĻĄāϜāύ āĻŦāĻž āĻĻ⧇āĻĄāĻŧāϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻšā§‡āχāύāϏ⧋āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŦ⧇āĻĻāĻŋāϤ āĻāχ āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāĻ°ā§āϚ āχāĻžā§āϜāĻŋāύ⧇āϰ āĻļā§€āĻ°ā§āώ⧇ āĻĻ⧃āĻĸāĻŧāĻ­āĻžāĻŦ⧇ āĻŦāϏ⧇āĨ¤ āĻāχ āϏāĻžāχāϟāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ…-āĻŦāĻžāĻŖāĻŋāĻœā§āϝāĻŋāĻ• āĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāĻ•, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϕ⧇āω āĻāϟāĻŋāϕ⧇ āφāĻ•ā§āϰāĻŽāĻŖ āĻ•āϰāĻžāϰ āĻ…āĻ­ā§āϝāĻžāϏ āĻ•āϰ⧇ āĻĢ⧇āϞ⧇āϛ⧇āĨ¤ āϝ⧇ DDoS, āϤāĻžāϰāĻĒāϰ āύ⧃āĻļāĻ‚āϏ āĻŦāϞ, āϤāĻžāϰāĻĒāϰ āϤāĻžāϰāĻž āĻ…āĻļā§āϞ⧀āϞ āĻŽāĻ¨ā§āϤāĻŦā§āϝ āϞ⧇āϖ⧇ āĻāĻŦāĻ‚ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻāĻŦāĻ‚ āφāϰāϕ⧇āĻāύ-āϕ⧇ āĻ—āĻžāϞāĻžāĻ—āĻžāϞāĻŋ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
āĻšāĻ āĻžā§Ž, āϏāĻŦāĻ•āĻŋāϛ⧁ āĻļāĻžāĻ¨ā§āϤ āĻšāϝāĻŧ⧇ āϗ⧇āϞ āĻāĻŦāĻ‚ āĻāχ āĻļāĻžāĻ¨ā§āϤāϟāĻŋ āĻ­āĻžāϞ āύāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻžāχāϟāϟāĻŋ āϧ⧀āϰ⧇ āϧ⧀āϰ⧇ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻĢāϞāĻžāĻĢāϞ⧇āϰ āĻļā§€āĻ°ā§āώ āϞāĻžāχāύāϗ⧁āϞāĻŋ āϛ⧇āĻĄāĻŧ⧇ āϝ⧇āϤ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇āĨ¤

āϝāĻ–āύ 'āĻ•' 'āĻ•' āĻāϰ āϏāĻŽāĻžāύ āύāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāĻ• āĻāϰ āĻĒāϰāĻŋāĻĒā§āϰ⧇āĻ•ā§āώāĻŋāϤ⧇

āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻŦāĻžāĻĻ āĻ›āĻŋāϞ, āϤāĻžāϰāĻĒāϰ āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ⧇āϰ āĻ—āĻ˛ā§āĻĒ āύāĻŋāĻœā§‡āχāĨ¤

āϘ⧁āĻŽā§‡āϰ āϏāĻŽāϝāĻŧ āϘāύāĻŋāϝāĻŧ⧇ āĻāϞ āϝāĻ–āύ āĻĢā§‹āύ āĻŦ⧇āĻœā§‡ āωāĻ āϞ: “āϏāĻžāύ, āϤ⧁āĻŽāĻŋ āĻ•āĻŋ āφāĻŽāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻĻāĻŋāϕ⧇ āϤāĻžāĻ•āĻžāĻŦ⧇ āύāĻž? āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ āĻŽāύ⧇ āĻšāĻšā§āϛ⧇ āφāĻŽāĻŋ āĻšā§āϝāĻžāĻ• āĻšāϝāĻŧ⧇āĻ›āĻŋ, āφāĻŽāĻŋ āĻāϟāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āύāĻž, āϤāĻŦ⧇ āĻ…āύ⧁āĻ­ā§‚āϤāĻŋāϟāĻŋ āϤ⧃āϤ⧀āϝāĻŧ āϏāĻĒā§āϤāĻžāĻšā§‡āϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāϕ⧇ āϛ⧇āĻĄāĻŧ⧇ āϝāĻžāϝāĻŧāύāĻŋāĨ¤ āĻšāϝāĻŧāϤ⧋ āφāĻŽāĻžāϰ āĻĒā§āϝāĻžāϰāĻžāύāĻŋāϝāĻŧāĻžāϰ āϚāĻŋāĻ•āĻŋā§ŽāϏāĻž āύ⧇āĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āĻāϏ⧇āϛ⧇?

āĻāϰāĻĒāϰ āϝāĻž āĻ›āĻŋāϞ āφāϧāĻž āϘāĻŖā§āϟāĻžāϰ āφāϞ⧋āϚāύāĻž āϝāĻž āύāĻŋāĻŽā§āύāϰ⧂āĻĒ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇:

  • āĻšā§āϝāĻžāĻ•āĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻŽāĻžāϟāĻŋ āĻŦ⧇āĻļ āωāĻ°ā§āĻŦāϰ āĻ›āĻŋāϞ;
  • āĻāĻ•āϜāύ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀ āϏ⧁āĻĒāĻžāϰ āχāωāϜāĻžāϰ āĻ…āϧāĻŋāĻ•āĻžāϰ āϞāĻžāĻ­ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇;
  • āφāĻ•ā§āϰāĻŽāĻŖāϟāĻŋ (āϝāĻĻāĻŋ āĻāϟāĻŋ āϘāĻŸā§‡ āĻĨāĻžāϕ⧇) āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āĻāχ āϏāĻžāχāĻŸā§‡ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ;
  • āϏāĻŽāĻ¸ā§āϝāĻž āĻāϞāĻžāĻ•āĻž āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻļ⧁āϧ⧁ āĻŦ⧁āĻāϤ⧇ āĻšāĻŦ⧇ āϕ⧋āύ āĻ…āύ⧁āĻĒā§āϰāĻŦ⧇āĻļ āĻ›āĻŋāϞ āĻ•āĻŋāύāĻž;
  • āĻšā§āϝāĻžāĻ• āϏāĻžāχāϟ āϕ⧋āĻĄ āĻāĻŦāĻ‚ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž.

āĻļ⧇āώ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇.

āϝāĻ–āύ 'āĻ•' 'āĻ•' āĻāϰ āϏāĻŽāĻžāύ āύāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāĻ• āĻāϰ āĻĒāϰāĻŋāĻĒā§āϰ⧇āĻ•ā§āώāĻŋāϤ⧇

āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏāĻžāĻĻāĻž āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄ āφāχāĻĒāĻŋ āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĻ⧇āĻ–āĻžāϝāĻŧ. āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻāĻŦāĻ‚ āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄā§‡āϰ āĻŽāĻ§ā§āϝ⧇ HTTP(āϗ⧁āϞāĻŋ) āĻ›āĻžāĻĄāĻŧāĻž āϕ⧋āύ⧋ āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ āύ⧇āχ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀/āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāϗ⧁āϞāĻŋ āφāϞāĻžāĻĻāĻž, āϕ⧋āύ⧋ āϕ⧀ āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ āĻšāϝāĻŧāύāĻŋ⧎ āϧ⧂āϏāϰ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ, 80/443 āĻ›āĻžāĻĄāĻŧāĻž āϏāĻŽāĻ¸ā§āϤ āĻĒā§‹āĻ°ā§āϟ āĻŦāĻ¨ā§āϧāĨ¤ āĻšā§‹āϝāĻŧāĻžāχāϟ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āφāχāĻĒāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĻ⧁āχāϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻ•āĻžāϛ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ, āϝāĻžāĻĻ⧇āϰ āĻŽāĻŋāĻ–āĻžāχāϞ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ•āϰ⧇āĨ¤

āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄā§‡ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻĄā§‡āĻŦāĻŋāϝāĻŧāĻžāύ 9 āĻāĻŦāĻ‚ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϟāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻšāĻŋāϰāĻžāĻ—āϤ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āĻĻā§āĻŦāĻžāϰāĻž āĻĒ⧃āĻĨāĻŋāĻŦā§€ āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ āĻāĻŦāĻ‚ āĻŦāĻ¨ā§āϧ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤

"āĻ āĻŋāĻ• āφāϛ⧇, āφāĻŽāĻžāϕ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĻāĻŋāύ," āφāĻŽāĻŋ āĻāĻ• āϘāĻ¨ā§āϟāĻžāϰ āϜāĻ¨ā§āϝ āϘ⧁āĻŽ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋāĨ¤ "āφāĻŽāĻŋ āύāĻŋāĻœā§‡āϰ āĻšā§‹āϖ⧇ āĻĻ⧇āĻ–āĻŦāĨ¤"

āĻāĻ–āĻžāύ⧇ āĻāĻŦāĻ‚ āφāϰāĻ“:

$ grep -F PRETTY_NAME /etc/*releas*
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
$ `echo $SHELL` --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
$ nginx -v
nginx version: nginx/1.10.3
$ gdb --version
GNU gdb (Debian 8.2.1-2) 8.2.1

āĻāĻ•āϟāĻŋ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻšā§āϝāĻžāĻ• āϖ⧁āρāϜāϛ⧇āύ

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

āφāĻŽāĻŋ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŽā§‹āĻĄā§‡ āĻļ⧁āϰ⧁ āĻ•āϰāĻŋ, āĻāĻ–āύāĻ“ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻ›āĻŋ āύāĻž āϕ⧀ āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āφāĻŽāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰāϗ⧁āϞāĻŋ āĻ…āĻ§ā§āϝāϝāĻŧāύ āĻ•āϰāĻŋāĨ¤ āĻĒā§āϰāĻĨāĻŽāϤ, āφāĻŽāĻŋ āφāĻ—ā§āϰāĻšā§€ nginx āϝ⧇āĻšā§‡āϤ⧁, āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇, āĻāϟāĻŋ āĻ›āĻžāĻĄāĻŧāĻž āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄā§‡ āφāϰ āĻ•āĻŋāϛ⧁āχ āύ⧇āχāĨ¤
āĻ•āύāĻĢāĻŋāĻ—āĻžāϰāϗ⧁āϞāĻŋ āϛ⧋āϟ, āĻāĻ• āĻĄāϜāύ āĻĢāĻžāχāϞ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϏ⧁āĻ—āĻ āĻŋāϤ, āφāĻŽāĻŋ āϕ⧇āĻŦāϞ āϏ⧇āϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧇āĻ›āĻŋ āĻŦāĻŋāĻĄāĻŧāĻžāϞāĻ“āĻš āĻāĻ• āĻāĻ• āĻ•āϰ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻŦāϞ⧇ āĻŽāύ⧇ āĻšāĻšā§āϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āĻ•āĻ–āύāχ āϜāĻžāύ⧇āύ āύāĻž āϝ⧇ āφāĻŽāĻŋ āĻ•āĻŋāϛ⧁ āĻŽāĻŋāϏ āĻ•āϰ⧇āĻ›āĻŋ āĻ•āĻŋāύāĻž āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž, āφāĻŽāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϤāĻžāϞāĻŋāĻ•āĻž āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĻāĻŋāύ:

$ nginx -T
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

āφāĻŽāĻŋ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻŋāύāĻŋ: "āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻŋ āϕ⧋āĻĨāĻžāϝāĻŧ?"

$ nginx -V
nginx version: nginx/1.10.3
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĒā§āϰāĻļā§āύ⧇ āĻāĻ•āϟāĻŋ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĒā§āϰāĻļā§āύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇: "āϕ⧇āύ āĻāύāϜāĻŋāύ⧇āĻ•ā§āϏ⧇āϰ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻžāĻšā§€āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ?"

āωāĻĒāϰāĻ¨ā§āϤ⧁, āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ•āϰ⧇ āϝ⧇ āϏāĻ°ā§āĻŦāĻļ⧇āώ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇:

$ dpkg -l nginx | grep "[n]ginx"
ii  nginx          1.14.2-2+deb10u1 all          small, powerful, scalable web/proxy server

āφāĻŽāĻŋ āĻĢā§‹āύ āĻĻāĻŋāĻšā§āĻ›āĻŋ:
- āĻŽāĻŋāĻļāĻž, āϤ⧁āĻŽāĻŋ āφāĻŦāĻžāϰ āϜāĻĄāĻŧā§‹ āĻšāϞ⧇ āϕ⧇āύ? nginx?
- āĻĻāĻžāρāĻĄāĻŧāĻžāĻ“, āφāĻŽāĻŋ āĻāϟāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āϜāĻžāύāĻŋ āύāĻž!
-āφāĻšā§āĻ›āĻž āϘ⧁āĻŽāĻžāĻ“...

nginx āĻāϟāĻŋ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰāĻ­āĻžāĻŦ⧇ āĻĒ⧁āύāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ "-T" āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āφāωāϟāĻĒ⧁āϟ āĻāĻ•āϟāĻŋ āĻ•āĻžāϰāϪ⧇ āϞ⧁āĻ•āĻžāύ⧋ āφāϛ⧇āĨ¤ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰ āϕ⧋āύ āϏāĻ¨ā§āĻĻ⧇āĻš āύ⧇āχ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻāϟāĻŋāϕ⧇ āϏāĻšāϜāĻ­āĻžāĻŦ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ (āϝ⧇āĻšā§‡āϤ⧁ āĻŽāĻŋāĻļāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰāϟāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇āϛ⧇āύ) āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āϏāĻŽāĻžāϧāĻžāύ⧇āϰ āĻŦāĻŋāώāϝāĻŧāϟāĻŋ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤

āĻāĻŦāĻ‚ āĻĒā§āϰāĻ•ā§ƒāϤāĻĒāĻ•ā§āώ⧇, āϝ⧇āĻšā§‡āϤ⧁ āϕ⧇āω āĻ…āϧāĻŋāĻ•āĻžāϰ āĻĒ⧇āϝāĻŧ⧇āϛ⧇ āĻļāĻŋāĻ•āĻĄāĻŧ'āφāĻš, āϤāĻžāĻšāϞ⧇ āĻāϟāĻž āĻ•āϰāĻžāχ āĻŦā§‹āϧāĻ—āĻŽā§āϝ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒ⧁āύāϰāĻžāϝāĻŧ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž, āĻāĻŦāĻ‚ āϏ⧇āĻ–āĻžāύ⧇ āϕ⧀ āϭ⧁āϞ āĻ›āĻŋāϞ āϤāĻž āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāĻž āĻ…āϕ⧇āĻœā§‹ āĻ›āĻŋāϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāχāĻŦāĻžāϰ āĻ•ā§ŒāϤ⧂āĻšāϞ āϘ⧁āĻŽāϕ⧇ āĻĒāϰāĻžāϜāĻŋāϤ āĻ•āϰ⧇āĻ›āĻŋāϞāĨ¤ āϤāĻžāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇ āϕ⧀ āϞ⧁āĻ•āĻžāϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ āϤāĻž āφāĻŽāϰāĻž āϕ⧀āĻ­āĻžāĻŦ⧇ āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻŦ?

āφāϏ⧁āύ āĻŸā§āϰ⧇āϏ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ:

$ strace nginx -T

āφāĻŽāϰāĻž āĻāϟāĻŋāϰ āĻĻāĻŋāϕ⧇ āϤāĻžāĻ•āĻžāχ, āĻāĻ•āϟāĻŋ āϞāĻž āĻŸā§āϰ⧇āϏ⧇ āĻ¸ā§āĻĒāĻˇā§āϟāϤāχ āϝāĻĨ⧇āĻˇā§āϟ āϞāĻžāχāύ āύ⧇āχ

write(1, "/etc/nginx/nginx.conf", 21/etc/nginx/nginx.conf)   = 21
write(1, "...
write(1, "n", 1

āĻļ⧁āϧ⧁ āĻŽāϜāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāϏ⧁āύ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āϤ⧁āϞāύāĻž āĻ•āϰāĻŋāĨ¤

$ strace nginx -T 2>&1 | wc -l
264
$ strace nginx -t 2>&1 | wc -l
264

āφāĻŽāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋ āϕ⧋āĻĄ āĻ…āĻ‚āĻļ /src/core/nginx.c

            case 't':
                ngx_test_config = 1;
                break;

            case 'T':
                ngx_test_config = 1;
                ngx_dump_config = 1;
                break;

āĻĢāĻ°ā§āĻŽā§‡ āφāύāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ:

            case 't':
                ngx_test_config = 1;
                break;

            case 'T':
                ngx_test_config = 1;
                //ngx_dump_config = 1;
                break;

āĻŦāĻž

            case 't':
                ngx_test_config = 1;
                break;

            case 'T':
                ngx_test_config = 1;
                ngx_dump_config = 0;
                break;

āϤāĻžāχ "-T" āĻĻā§āĻŦāĻžāϰāĻž āϤāĻžāϞāĻŋāĻ•āĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋ?

āϝāĻĻāĻŋ āφāĻŽāĻžāϰ āϚāĻŋāĻ¨ā§āϤāĻž āϏāĻ āĻŋāĻ• āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻŽāĻ¸ā§āϝāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ ngx_dump_config āφāϏ⧁āύ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ āϜāĻŋāĻĄāĻŋāĻŦāĻŋ, āĻ­āĻžāĻ—ā§āϝāĻ•ā§āϰāĻŽā§‡ āĻāĻ•āϟāĻŋ āϚāĻžāĻŦāĻŋ āφāϛ⧇ --with-cc-opt -g āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻāĻŦāĻ‚ āϝ⧇ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāĻœā§‡āĻļāĻžāύ āφāĻļāĻž āĻ•āϰāĻŋ -āĻ“2 āĻāϟāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āώāϤāĻŋ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤ āĻāĻ•āχ āϏāĻŽāϝāĻŧ⧇, āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāĻŋ āϜāĻžāύāĻŋ āύāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ ngx_dump_config āĻŽāĻ§ā§āϝ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϕ⧇āϏ 'āϟāĻŋ':, āφāĻŽāϰāĻž āĻāχ āĻŦā§āϞāĻ•āϟāĻŋāϕ⧇ āĻ•āϞ āĻ•āϰāĻŦ āύāĻž, āϤāĻŦ⧇ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ āϕ⧇āϏ 'āϟāĻŋ':

āϕ⧇āύ āφāĻĒāύāĻŋ '-t' āĻāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ '-T' āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĻŦā§āϞāĻ• āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ āϝāĻĻāĻŋ (ngx_dump_config) āĻ­āĻŋāϤāϰ⧇ āϘāĻŸā§‡ āϝāĻĻāĻŋ (ngx_test_config):

    if (ngx_test_config) {
        if (!ngx_quiet_mode) {
            ngx_log_stderr(0, "configuration file %s test is successful",
                           cycle->conf_file.data);
        }

        if (ngx_dump_config) {
            cd = cycle->config_dump.elts;

            for (i = 0; i < cycle->config_dump.nelts; i++) {

                ngx_write_stdout("# configuration file ");
                (void) ngx_write_fd(ngx_stdout, cd[i].name.data,
                                    cd[i].name.len);
                ngx_write_stdout(":" NGX_LINEFEED);

                b = cd[i].buffer;

                (void) ngx_write_fd(ngx_stdout, b->pos, b->last - b->pos);
                ngx_write_stdout(NGX_LINEFEED);
            }
        }

        return 0;
    }

āĻ…āĻŦāĻļā§āϝāχ, āϝāĻĻāĻŋ āĻāχ āĻ…āĻ‚āĻļ⧇ āϕ⧋āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āύāĻž āĻšāϝāĻŧ āϕ⧇āϏ 'āϟāĻŋ':, āϤāĻžāĻšāϞ⧇ āφāĻŽāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤

nginx.conf āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύāχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āĻāϟāĻŋ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻŋāϤ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϝ⧇ āĻŽā§āϝāĻžāϞāĻ“āϝāĻŧā§āϝāĻžāϰāϟāĻŋ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ nginx āĻĒā§āϰāĻ•āĻžāϰ:

events {
}

http {
	include /etc/nginx/sites-enabled/*;
}

āφāĻŽāϰāĻž āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤

āĻĄāĻŋāĻŦāĻžāĻ—āĻžāϰ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ

$ gdb --silent --args nginx -t
Reading symbols from nginx...done.
(gdb) break main
Breakpoint 1 at 0x1f390: file src/core/nginx.c, line 188.
(gdb) run
Starting program: nginx -t
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, main (argc=2, argv=0x7fffffffebc8) at src/core/nginx.c:188
188     src/core/nginx.c: No such file or directory.
(gdb) print ngx_dump_config=1
$1 = 1
(gdb) continue
Continuing.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:
events {
}

http {
map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

map Đž:$sign_user_agent:$sign_uri $sign_o
{
Đž:1:0 o;
default Đž;
}

map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}

sub_filter_once off;
sub_filter 'Đž' $sign_o;
sub_filter 'а' $sign_a;

        include /etc/nginx/sites-enabled/*;
}
# configuration file /etc/nginx/sites-enabled/default:

[Inferior 1 (process 32581) exited normally]
(gdb) quit

āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϗ⧁āϞāĻŋ:

  • āĻĢāĻžāĻ‚āĻļāύ⧇ āĻāĻ•āϟāĻŋ āĻŦā§āϰ⧇āĻ•āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϏ⧇āϟ āĻ•āϰ⧁āύ āĻĒā§āϰāϧāĻžāύ ()
  • āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϚāĻžāϞāĻžāύ
  • āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇āϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ āϝāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āϰ āφāωāϟāĻĒ⧁āϟ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇ ngx_dump_config=1
  • āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāύ/āĻļ⧇āώ āĻ•āϰ⧁āύ

āφāĻŽāϰāĻž āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻšā§āĻ›āĻŋ, āφāϏāϞ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āφāĻŽāĻžāĻĻ⧇āϰ āĻĨ⧇āϕ⧇ āφāϞāĻžāĻĻāĻž, āφāĻŽāϰāĻž āĻāϟāĻŋ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒāϰāĻœā§€āĻŦā§€ āĻ…āĻ‚āĻļ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāĻŋ:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

map Đž:$sign_user_agent:$sign_uri $sign_o
{
Đž:1:0 o;
default Đž;
}

map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}

sub_filter_once off;
sub_filter 'Đž' $sign_o;
sub_filter 'а' $sign_a;

āĻāϰ āĻ•ā§āϰāĻŽāĻžāύ⧁āϏāĻžāϰ⧇ āĻāĻ–āĻžāύ⧇ āĻ•āĻŋ āϘāϟāϛ⧇ āϤāĻž āĻāĻ•āĻŦāĻžāϰ āĻĻ⧇āϖ⧇ āύ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ•.

āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āĻšāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻĻā§‚āϤāĻāϰ yandex/google:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āĻŦāĻžāĻĻ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāĻĒā§āϰ⧇āϏ:

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

āĻāĻŦāĻ‚ āϝāĻžāϰāĻž āωāĻĒāϰ⧇āϰ āωāĻ­āϝāĻŧ āĻļāĻ°ā§āϤ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻĄāĻŧ⧇ āϤāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ

map Đž:$sign_user_agent:$sign_uri $sign_o
{
Đž:1:0 o;
default Đž;
}

map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}

āϞ⧇āĻ–āĻžāϰ āĻ­āĻŋāϤāϰ āĻāχāϚāϟāĻŋāĻāĻŽāĻāϞ- āĻĒ⧃āĻˇā§āĻ āĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ 'āĻ“' āωāĻĒāϰ 'āĻ“' и 'āĻ•' āωāĻĒāϰ 'āĻ•':

sub_filter_once off;
sub_filter 'Đž' $sign_o;
sub_filter 'а' $sign_a;

āĻāϟāĻž āĻ āĻŋāĻ•, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏ⧂āĻ•ā§āĻˇā§āĻŽāϤāĻž āϝ⧇ 'a'!= 'a' āĻ āĻŋāĻ• āϝ⧇āĻŽāύ 'āĻ“'!= 'āĻ“':

āϝāĻ–āύ 'āĻ•' 'āĻ•' āĻāϰ āϏāĻŽāĻžāύ āύāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāĻ• āĻāϰ āĻĒāϰāĻŋāĻĒā§āϰ⧇āĻ•ā§āώāĻŋāϤ⧇

āĻāχāĻ­āĻžāĻŦ⧇, āϏāĻžāĻ°ā§āϚ āχāĻžā§āϜāĻŋāύ āĻŦāϟāϗ⧁āϞāĻŋ āϏāĻžāϧāĻžāϰāĻŖ 100% āϏāĻŋāϰāĻŋāϞāĻŋāĻ• āĻĒāĻžāĻ ā§āϝ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āĻ˛ā§āϝāĻžāϟāĻŋāύ āĻĻāĻŋāϝāĻŧ⧇ āĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āφāĻŦāĻ°ā§āϜāύāĻž āĻĒāĻžāϝāĻŧ 'āĻ•' и 'āĻ“'. āĻāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāϏāχāĻ“āϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇ āϤāĻž āύāĻŋāϝāĻŧ⧇ āφāĻŽāĻŋ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻžāϰ āϏāĻžāĻšāϏ āĻ•āϰāĻŋ āύāĻž, āϤāĻŦ⧇ āĻāϟāĻŋ āĻ…āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āϝ⧇ āĻāχ āϧāϰāύ⧇āϰ āĻ…āĻ•ā§āώāϰāϗ⧁āϞāĻŋ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻĢāϞāĻžāĻĢāϞ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋāϤ⧇ āχāϤāĻŋāĻŦāĻžāϚāĻ• āĻĒā§āϰāĻ­āĻžāĻŦ āĻĢ⧇āϞāĻŦ⧇āĨ¤

āφāĻŽāĻŋ āĻ•āĻŋ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŋ, āĻ•āĻ˛ā§āĻĒāύāĻž āϏāĻ™ā§āϗ⧇ āĻŦāϞāĻ›āĻŋ.

āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ

GDB āĻĻāĻŋāϝāĻŧ⧇ āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚
gdb(1) — āϞāĻŋāύāĻžāĻ•ā§āϏ āĻŽā§āϝāĻžāύ āĻĒ⧇āϜ
strace(1) — āϞāĻŋāύāĻžāĻ•ā§āϏ āĻŽā§āϝāĻžāύ āĻĒ⧇āϜ
Nginx - āĻŽāĻĄāĻŋāωāϞ ngx_http_sub_module
āĻ•āϰāĻžāϤ, āĻšā§‡āχāύāϏ⧋ āĻāĻŦāĻ‚ āĻŦ⧈āĻĻā§āϝ⧁āϤāĻŋāĻ• āĻ•āϰāĻžāϤ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇

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

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