āĻāĻŽāĻžāϰ āĻāĻ āĻŦāύā§āϧā§āϰ āϏāĻžāĻĨā§ āϏāĻŦāĻā§āϝāĻŧā§ āĻ āĻĒā§āϰā§āϤāĻŋāĻāϰ āĻāĻāύāĻž āĻāĻā§āĻā§āĨ¤ āϤāĻŦā§ āĻāĻāĻŋ āĻŽāĻŋāĻāĻžāĻāϞā§āϰ āĻāύā§āϝ āϝāϤāĻāĻž āĻ āĻĒā§āϰā§āϤāĻŋāĻāϰ āĻāĻŋāϞ, āĻāĻāĻŋ āĻāĻŽāĻžāϰ āĻāύā§āϝ āĻ āĻŋāĻ āϤāϤāĻāĻžāĻ āĻŦāĻŋāύā§āĻĻāύāĻŽā§āϞāĻ āĻāĻŋāϞāĨ¤
āĻāĻŽāĻŋ āĻŦāϞāϤā§āĻ āĻšāĻŦā§ āϝ⧠āĻāĻŽāĻžāϰ āĻŦāύā§āϧ⧠āĻŦā§āĻļ āĻāĻāύāĻŋāĻā§āϏ-āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§: āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āύāĻŋāĻā§āĻ āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻŽāĻžāĻāĻāϏāĻāĻŋāĻāĻāϞ, āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻāĻŦāĻ āϏāĻšāĻ āϏā§āĻāĻŋāĻāϏ āĻāϰā§āύ 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% āϏāĻŋāϰāĻŋāϞāĻŋāĻ āĻĒāĻžāĻ ā§āϝā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āϞā§āϝāĻžāĻāĻŋāύ āĻĻāĻŋāϝāĻŧā§ āĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻāĻŦāϰā§āĻāύāĻž āĻĒāĻžāϝāĻŧ 'āĻ' и 'āĻ'. āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāϏāĻāĻāĻā§ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āĻāϰ⧠āϤāĻž āύāĻŋāϝāĻŧā§ āĻāĻŽāĻŋ āĻāϞā§āĻāύāĻž āĻāϰāĻžāϰ āϏāĻžāĻšāϏ āĻāϰāĻŋ āύāĻž, āϤāĻŦā§ āĻāĻāĻŋ āĻ
āϏāĻŽā§āĻāĻžāĻŦā§āϝ āϝ⧠āĻāĻ āϧāϰāύā§āϰ āĻ
āĻā§āώāϰāĻā§āϞāĻŋ āĻ
āύā§āϏāύā§āϧāĻžāύ āĻĢāϞāĻžāĻĢāϞā§āϰ āĻ
āĻŦāϏā§āĻĨāĻžāύāĻā§āϞāĻŋāϤ⧠āĻāϤāĻŋāĻŦāĻžāĻāĻ āĻĒā§āϰāĻāĻžāĻŦ āĻĢā§āϞāĻŦā§āĨ¤
āĻāĻŽāĻŋ āĻāĻŋ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŋ, āĻāϞā§āĻĒāύāĻž āϏāĻā§āĻā§ āĻŦāϞāĻāĻŋ.
āϰā§āĻĢāĻžāϰā§āύā§āϏ
āĻāϤā§āϏ: www.habr.com
