แƒ แƒแƒ“แƒ”แƒกแƒแƒช "a" แƒแƒ  แƒแƒ แƒ˜แƒก "a"-แƒก แƒขแƒแƒšแƒ˜. แƒฐแƒแƒ™แƒ˜แƒก แƒ™แƒ•แƒแƒšแƒ“แƒแƒ™แƒ•แƒแƒš

แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฃแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ แƒแƒ›แƒ‘แƒแƒ•แƒ˜ แƒ›แƒแƒฎแƒ“แƒ แƒฉแƒ”แƒ›แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒ›แƒ”แƒ’แƒแƒ‘แƒแƒ แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“แƒแƒช แƒฃแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ แƒ›แƒ˜แƒฎแƒแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ˜แƒกแƒ”แƒ—แƒ˜แƒ•แƒ” แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒ˜แƒงแƒ แƒฉแƒ”แƒ›แƒ—แƒ•แƒ˜แƒก.

แƒฃแƒœแƒ“แƒ แƒ•แƒ—แƒฅแƒ•แƒ, แƒ แƒแƒ› แƒฉแƒ”แƒ›แƒ˜ แƒ›แƒ”แƒ’แƒแƒ‘แƒแƒ แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ UNIX-แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜: แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ mysql, php แƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ nginx.
แƒ“แƒ แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒแƒ—แƒ”แƒฃแƒšแƒ˜ แƒแƒœ แƒ”แƒ แƒ—แƒœแƒแƒฎแƒ”แƒ•แƒแƒ แƒ˜ แƒ•แƒ”แƒ‘แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒซแƒฆแƒ•แƒœแƒ”แƒ‘แƒ แƒกแƒแƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก.

แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒแƒ˜แƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒซแƒฆแƒ•แƒœแƒ”แƒ‘แƒ แƒฏแƒแƒญแƒ•แƒ˜แƒก แƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒก, แƒ›แƒงแƒแƒ แƒแƒ“ แƒ“แƒ’แƒแƒก แƒกแƒแƒซแƒ˜แƒ”แƒ‘แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก TOP-แƒจแƒ˜. แƒ”แƒก แƒกแƒแƒ˜แƒขแƒ˜ แƒแƒ แƒ˜แƒก แƒแƒ แƒแƒ™แƒแƒ›แƒ”แƒ แƒชแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒ›แƒแƒ›แƒฎแƒ˜แƒšแƒ•แƒ”แƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ•แƒ˜แƒฆแƒแƒชแƒแƒ› แƒ›แƒแƒกแƒ–แƒ” แƒ—แƒแƒ•แƒ“แƒแƒกแƒฎแƒ›แƒ˜แƒก แƒฉแƒ•แƒ”แƒ•แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ. แƒ แƒแƒ› DDoS, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฌแƒ”แƒ แƒ”แƒœ แƒฃแƒฎแƒแƒ›แƒก แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒก แƒ“แƒ แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒแƒœ แƒจแƒ”แƒฃแƒ แƒแƒชแƒฎแƒงแƒแƒคแƒแƒก แƒฐแƒแƒกแƒขแƒ˜แƒœแƒ’แƒก แƒ“แƒ RKN-แƒก.
แƒฃแƒชแƒ”แƒ‘ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒฌแƒงแƒœแƒแƒ แƒ“แƒ แƒ“แƒ แƒ”แƒก แƒกแƒ˜แƒ›แƒจแƒ•แƒ˜แƒ“แƒ” แƒแƒ  แƒ˜แƒงแƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒ“แƒ แƒกแƒแƒ˜แƒขแƒ›แƒ แƒ—แƒแƒœแƒ“แƒแƒ—แƒแƒœ แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ–แƒ”แƒ“แƒ แƒฎแƒแƒ–แƒ˜แƒก แƒ“แƒแƒขแƒแƒ•แƒ”แƒ‘แƒ.

แƒ แƒแƒ“แƒ”แƒกแƒแƒช "a" แƒแƒ  แƒแƒ แƒ˜แƒก "a"-แƒก แƒขแƒแƒšแƒ˜. แƒฐแƒแƒ™แƒ˜แƒก แƒ™แƒ•แƒแƒšแƒ“แƒแƒ™แƒ•แƒแƒš

แƒ”แƒก แƒ˜แƒงแƒ แƒ’แƒแƒ›แƒแƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒแƒ•แƒแƒ“ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒก แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜.

แƒซแƒ˜แƒšแƒ˜แƒก แƒ“แƒ แƒ แƒ˜แƒงแƒ, แƒ แƒแƒชแƒ แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ›แƒ แƒ“แƒแƒ แƒ”แƒ™แƒ: โ€žแƒกแƒแƒœ, แƒฉแƒ”แƒ›แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒแƒ  แƒฃแƒงแƒฃแƒ แƒ”แƒ‘? แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ’แƒแƒขแƒ”แƒฎแƒ”แƒก, แƒแƒ›แƒแƒก แƒ•แƒ”แƒ  แƒ•แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ แƒฃแƒ™แƒ•แƒ” แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ™แƒ•แƒ˜แƒ แƒแƒ แƒแƒ  แƒ›แƒขแƒแƒ•แƒ”แƒ‘แƒก. แƒ˜แƒฅแƒœแƒ”แƒ‘ แƒ“แƒ แƒแƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ แƒžแƒแƒ แƒแƒœแƒแƒ˜แƒ˜แƒก แƒ›แƒ™แƒฃแƒ แƒœแƒแƒšแƒแƒ‘แƒ?โ€

แƒ แƒแƒกแƒแƒช แƒ›แƒแƒฐแƒงแƒ•แƒ แƒœแƒแƒฎแƒ”แƒ•แƒแƒ แƒกแƒแƒแƒ—แƒ˜แƒแƒœแƒ˜ แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒฏแƒแƒ›แƒ“แƒ”แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

  • แƒ’แƒแƒขแƒ”แƒฎแƒ•แƒ˜แƒก แƒœแƒ˜แƒแƒ“แƒแƒ’แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒœแƒแƒงแƒแƒคแƒ˜แƒ”แƒ แƒ˜ แƒ˜แƒงแƒ;
  • แƒ—แƒแƒ•แƒ“แƒแƒ›แƒกแƒฎแƒ›แƒ”แƒšแƒก แƒจแƒ”แƒ”แƒซแƒšแƒ แƒกแƒฃแƒžแƒ”แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒžแƒแƒ•แƒ”แƒ‘แƒ;
  • แƒ—แƒแƒ•แƒ“แƒแƒกแƒฎแƒ›แƒ (แƒ—แƒฃ แƒ”แƒก แƒ›แƒแƒฎแƒ“แƒ) แƒ˜แƒงแƒ แƒ’แƒแƒ›แƒ˜แƒ–แƒœแƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒแƒ“ แƒแƒ› แƒกแƒแƒ˜แƒขแƒ–แƒ”;
  • แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ แƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ’แƒ”แƒกแƒ›แƒแƒ“แƒ”แƒ— แƒ˜แƒงแƒ แƒ—แƒฃ แƒแƒ แƒ แƒ แƒแƒ˜แƒ›แƒ” แƒจแƒ”แƒฆแƒฌแƒ”แƒ•แƒ;
  • แƒฐแƒแƒ™แƒ”แƒ แƒ›แƒ แƒ•แƒ”แƒ  แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ™แƒแƒ“แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ–แƒ”.

แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒ‘แƒแƒšแƒ แƒžแƒฃแƒœแƒฅแƒขแƒก.

แƒ แƒแƒ“แƒ”แƒกแƒแƒช "a" แƒแƒ  แƒแƒ แƒ˜แƒก "a"-แƒก แƒขแƒแƒšแƒ˜. แƒฐแƒแƒ™แƒ˜แƒก แƒ™แƒ•แƒแƒšแƒ“แƒแƒ™แƒ•แƒแƒš

แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ—แƒ”แƒ—แƒ แƒ˜ แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ˜แƒก IP แƒฃแƒงแƒฃแƒ แƒ”แƒ‘แƒก แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก. แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒคแƒ แƒแƒœแƒขแƒ”แƒœแƒ“แƒก แƒจแƒแƒ แƒ˜แƒก แƒแƒ  แƒฎแƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒชแƒ•แƒšแƒ http(s) แƒ’แƒแƒ แƒ“แƒ, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜/แƒžแƒแƒ แƒแƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒแƒ แƒชแƒ”แƒ แƒ—แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒ˜แƒšแƒ˜. แƒœแƒแƒชแƒ แƒ˜แƒกแƒคแƒ”แƒ  แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ–แƒ”, 80/443-แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒ แƒžแƒแƒ แƒขแƒ˜ แƒ“แƒแƒฎแƒฃแƒ แƒฃแƒšแƒ˜แƒ. แƒ—แƒ”แƒ—แƒ แƒ˜ backend IP-แƒ”แƒ‘แƒ˜ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ›แƒ˜แƒฎแƒแƒ˜แƒšแƒ˜ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ”แƒœแƒ“แƒแƒ‘แƒ.

แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ”แƒก Debian 9 แƒ“แƒ แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ–แƒแƒ แƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ, แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ˜แƒ–แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒแƒ›แƒงแƒแƒ แƒแƒกแƒ’แƒแƒœ แƒ’แƒแƒ แƒ” firewall-แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒฉแƒ”แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.

โ€žแƒ™แƒแƒ แƒ’แƒ˜, แƒ›แƒแƒ›แƒ”แƒชแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒโ€œ, แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒซแƒ˜แƒšแƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒแƒ—แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ. "แƒ›แƒ” แƒฉแƒ”แƒ›แƒ˜ แƒ—แƒ•แƒแƒšแƒ˜แƒ— แƒ•แƒœแƒแƒฎแƒแƒ•."

แƒแƒฅ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒจแƒ˜:

$ 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

แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ›แƒ”แƒแƒ แƒ” แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ: "แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก nginx-แƒ˜แƒก แƒแƒกแƒ”แƒ—แƒ˜ แƒฃแƒซแƒ•แƒ”แƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ?"

แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ—แƒ•แƒšแƒ˜แƒก, แƒ แƒแƒ› แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ:

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

แฒ’แƒ˜แƒ แƒ”แƒ™แƒแƒ•:
-แƒ›แƒ˜แƒจแƒ แƒ แƒแƒขแƒแƒ› แƒจแƒ”แƒ˜แƒ™แƒ แƒ˜แƒ‘แƒ” แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ nginx?
- แƒ’แƒแƒ˜แƒฆแƒ•แƒ˜แƒซแƒ”, แƒ›แƒ” แƒแƒ แƒช แƒ™แƒ˜ แƒ•แƒ˜แƒชแƒ˜ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ แƒ”แƒก!
- แƒ™แƒแƒ แƒ’แƒ˜, แƒ“แƒแƒ˜แƒซแƒ˜แƒœแƒ”...

แƒœแƒ˜แƒœแƒ˜แƒฅแƒกแƒ˜ แƒ˜แƒก แƒแƒจแƒ™แƒแƒ แƒแƒ“ แƒแƒฆแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜แƒ แƒ“แƒ แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ โ€ž-Tโ€œ-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ›แƒแƒšแƒฃแƒšแƒ˜แƒ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜แƒก แƒ’แƒแƒ›แƒ. แƒฐแƒแƒ™แƒ”แƒ แƒแƒ‘แƒแƒ–แƒ” แƒ”แƒญแƒ•แƒ˜ แƒแƒฆแƒแƒ  แƒ’แƒ”แƒžแƒแƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ›แƒ˜แƒ˜แƒฆแƒ แƒ“แƒ (แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒ˜แƒจแƒแƒ› แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ›แƒแƒ˜แƒœแƒช แƒจแƒ”แƒชแƒ•แƒแƒšแƒ แƒแƒฎแƒšแƒ˜แƒ—) แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒฉแƒแƒ—แƒ•แƒแƒšแƒ.

แƒ“แƒ แƒ›แƒแƒ แƒ—แƒšแƒแƒช, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ•แƒ˜แƒฆแƒแƒชแƒแƒ› แƒ›แƒ˜แƒ˜แƒฆแƒ แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ rootแƒแƒฐ, แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒแƒก แƒแƒ–แƒ แƒ˜ แƒแƒฅแƒ•แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ, แƒ“แƒ แƒฃแƒแƒ–แƒ แƒ แƒ˜แƒงแƒ แƒ˜แƒ›แƒ˜แƒก แƒซแƒ”แƒ‘แƒœแƒ, แƒ แƒ แƒ˜แƒงแƒ แƒ˜แƒฅ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ แƒชแƒœแƒแƒ‘แƒ˜แƒกแƒ›แƒแƒงแƒ•แƒแƒ แƒ”แƒแƒ‘แƒแƒ› แƒ“แƒแƒแƒ›แƒแƒ แƒชแƒฎแƒ แƒซแƒ˜แƒšแƒ˜. แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ˜แƒแƒ—, แƒ แƒ˜แƒกแƒ˜ แƒ“แƒแƒ›แƒแƒšแƒ•แƒ แƒกแƒฃแƒ แƒ“แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ’แƒแƒœ?

แƒจแƒ”แƒ•แƒ”แƒชแƒแƒ“แƒแƒ— แƒ›แƒ˜แƒ•แƒงแƒ•แƒ”แƒ—:

$ 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 แƒ•แƒชแƒแƒ“แƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒ“แƒ‘, แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ -- แƒ”แƒ แƒ—แƒแƒ“-cc-opt -g แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ˜แƒœแƒแƒก แƒ“แƒ แƒ˜แƒ›แƒ”แƒ“แƒ˜ แƒ›แƒแƒฅแƒ•แƒก, แƒ แƒแƒ› แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ -O2 แƒ”แƒก แƒแƒ  แƒ“แƒแƒ’แƒ•แƒ˜แƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒ  แƒ•แƒ˜แƒชแƒ˜ แƒ แƒแƒ’แƒแƒ  ngx_dump_config แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ”แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ 'T':, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ“แƒแƒ•แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒ— แƒแƒ› แƒ‘แƒšแƒแƒ™แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ 't':

แƒ แƒแƒขแƒแƒ› แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— '-t' แƒแƒกแƒ”แƒ•แƒ” '-T'แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ if (ngx_dump_config) แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒฎแƒ“แƒ”แƒ‘แƒ if (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;
    }

แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ—แƒฃ แƒ™แƒแƒ“แƒ˜ แƒจแƒ”แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒแƒ› แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ แƒ“แƒ แƒแƒ แƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ 'T':, แƒ›แƒแƒจแƒ˜แƒœ แƒฉแƒ”แƒ›แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก.

แƒขแƒ”แƒกแƒขแƒ˜ 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;

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒแƒฅ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—.

แฒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒแƒ’แƒ”แƒœแƒขแƒ˜'s 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 ะฐ;
}

แƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜ html- แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ 'แƒ' on "แƒ" ะธ 'A' on "แƒ":

sub_filter_once off;
sub_filter 'ะพ' $sign_o;
sub_filter 'ะฐ' $sign_a;

แƒ›แƒแƒ แƒ—แƒแƒšแƒ˜แƒ, แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒก แƒแƒ แƒ˜แƒก 'a' != 'a' แƒ แƒแƒ’แƒแƒ แƒช 'แƒ' != 'แƒ':

แƒ แƒแƒ“แƒ”แƒกแƒแƒช "a" แƒแƒ  แƒแƒ แƒ˜แƒก "a"-แƒก แƒขแƒแƒšแƒ˜. แƒฐแƒแƒ™แƒ˜แƒก แƒ™แƒ•แƒแƒšแƒ“แƒแƒ™แƒ•แƒแƒš

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒกแƒแƒซแƒ˜แƒ”แƒ‘แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ”แƒ‘แƒ˜, แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ 100% แƒ™แƒ˜แƒ แƒ˜แƒšแƒ˜แƒชแƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒšแƒแƒ—แƒ˜แƒœแƒฃแƒ แƒ˜แƒ— แƒ’แƒแƒ–แƒแƒ•แƒ”แƒ‘แƒฃแƒš แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒš แƒœแƒแƒ’แƒแƒ•แƒก แƒ˜แƒฆแƒ”แƒ‘แƒ”แƒœ. "แƒ" ะธ "แƒ". แƒ›แƒ” แƒแƒ  แƒ•แƒ‘แƒ”แƒ“แƒแƒ• แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒแƒ˜แƒกแƒแƒฎแƒ”แƒ‘แƒ แƒ”แƒก SEO-แƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ“ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ, แƒ แƒแƒ› แƒแƒกแƒแƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒ”แƒ—แƒ›แƒ แƒจแƒ”แƒ แƒ”แƒ•แƒแƒ› แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒแƒก แƒžแƒแƒ–แƒ˜แƒชแƒ˜แƒ”แƒ‘แƒ–แƒ” แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒจแƒ˜.

แƒ แƒ แƒ•แƒ—แƒฅแƒ•แƒ, แƒคแƒแƒœแƒขแƒแƒ–แƒ˜แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒ‘แƒ˜แƒญแƒ”แƒ‘แƒ.

แƒšแƒ˜แƒขแƒ”แƒ แƒแƒขแƒฃแƒ แƒ

แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ GDB-แƒ˜แƒ—
gdb (1) โ€” Linux man page
strace(1) โ€” Linux-แƒ˜แƒก แƒ™แƒแƒชแƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜
Nginx - แƒ›แƒแƒ“แƒฃแƒšแƒ˜ ngx_http_sub_module
แƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ˜แƒก, แƒฏแƒแƒญแƒ•แƒ˜แƒก แƒ“แƒ แƒ”แƒšแƒ”แƒฅแƒขแƒ แƒ แƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ