เจœเจฆเฉ‹เจ‚ 'a' 'a' เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจ‡เฉฑเจ• เจนเฉˆเจ• เจฆเฉ‡ เจฎเฉฑเจฆเฉ‡เจจเจœเจผเจฐ

เจฎเฉ‡เจฐเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‹เจธเจค เจจเจพเจฒ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจฆเฉเจ–เจฆเจพเจˆ เจ•เจนเจพเจฃเฉ€ เจตเจพเจชเจฐเฉ€เฅค เจชเจฐ เจ‡เจน เจฎเจฟเจ–เจพเจ‡เจฒ เจฒเจˆ เจœเจฟเฉฐเจจเจพ เจฆเฉเจ–เจฆเจพเจˆ เจจเจฟเจ•เจฒเจฟเจ†, เจ‡เจน เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ‰เจจเจพ เจนเฉ€ เจฎเจจเฉ‹เจฐเฉฐเจœเจ• เจธเฉ€เฅค

เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจนเจฟเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉ‡เจฐเจพ เจฆเฉ‹เจธเจค เจ•เจพเจซเจผเฉ€ เจนเฉˆ เจฏเฉ‚เจจเจฟเจ•เจธ-เจ‰เจชเจญเฉ‹เจ—เจคเจพ: เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ MySQL, PHP เจ…เจคเฉ‡ เจธเจงเจพเจฐเจจ เจธเฉˆเจŸเจฟเฉฐเจ— เจ•เจฐเฉ‹ nginx.
เจ…เจคเฉ‡ เจ‰เจธ เจ•เฉ‹เจฒ เจ‰เจธเจพเจฐเฉ€ เจฆเฉ‡ เจธเจพเจงเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจ‡เฉฑเจ• เจฆเจฐเจœเจจ เจœเจพเจ‚ เจกเฉ‡เจข เจตเฉˆเจฌเจธเจพเจˆเจŸเจพเจ‚ เจนเจจ.

เจšเฉ‡เจจเจธเฉŒเจœเจผ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจ‡เจนเจจเจพเจ‚ เจธเจพเจˆเจŸเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจ–เฉ‹เจœ เจ‡เฉฐเจœเจฃเจพเจ‚ เจฆเฉ‡ เจธเจฟเจ–เจฐ เจตเจฟเฉฑเจš เจฎเจœเจผเจฌเฉ‚เจคเฉ€ เจจเจพเจฒ เจฌเฉˆเจ เจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจธเจพเจˆเจŸ เจ‡เฉฑเจ• เจ—เฉˆเจฐ-เจตเจชเจพเจฐเจ• เจธเจฎเฉ€เจ–เจฟเจ…เจ• เจนเฉˆ, เจชเจฐ เจ•เจฟเจธเฉ‡ เจจเฉ‚เฉฐ เจ‡เจธ 'เจคเฉ‡ เจนเจฎเจฒเจพ เจ•เจฐเจจ เจฆเฉ€ เจ†เจฆเจค เจชเฉˆ เจ—เจˆ เจนเฉˆเฅค เจ•เจฟ เจกเฉ€.เจกเฉ€.เจ“., เจซเจฟเจฐ เจฌเจฐเฉ‚เจŸ เจซเฉ‹เจฐเจธ, เจซเจฟเจฐ เจ‰เจน เจ…เจธเจผเจฒเฉ€เจฒ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจฒเจฟเจ–เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ RKN เจจเฉ‚เฉฐ เจ—เจพเจฒเฉเจนเจพเจ‚ เจญเฉ‡เจœเจฆเฉ‡ เจนเจจเฅค
เจ…เจšเจพเจจเจ•, เจธเจญ เจ•เฉเจ เจธเจผเจพเจ‚เจค เจนเฉ‹ เจ—เจฟเจ† เจ…เจคเฉ‡ เจ‡เจน เจธเจผเจพเจ‚เจคเฉ€ เจšเฉฐเจ—เฉ€ เจจเจนเฉ€เจ‚ เจจเจฟเจ•เจฒเฉ€, เจ…เจคเฉ‡ เจธเจพเจˆเจŸ เจจเฉ‡ เจนเฉŒเจฒเฉ€ เจนเฉŒเจฒเฉ€ เจ–เฉ‹เจœ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ€เจ†เจ‚ เจธเจฟเจ–เจฐเจฒเฉ€เจ†เจ‚ เจฒเจพเจˆเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจกเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ.

เจœเจฆเฉ‹เจ‚ 'a' 'a' เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจ‡เฉฑเจ• เจนเฉˆเจ• เจฆเฉ‡ เจฎเฉฑเจฆเฉ‡เจจเจœเจผเจฐ

เจ‡เจน เจ‡เฉฑเจ• เจ•เจนเจพเจตเจค เจธเฉ€, เจซเจฟเจฐ เจเจกเจฎเจฟเจจ เจฆเฉ€ เจ•เจนเจพเจฃเฉ€เฅค

เจ‡เจน เจธเฉŒเจฃ เจฆเจพ เจธเจฎเจพเจ‚ เจจเฉ‡เฉœเฉ‡ เจธเฉ€ เจœเจฆเฉ‹เจ‚ เจซเจผเฉ‹เจจ เจฆเฉ€ เจ˜เฉฐเจŸเฉ€ เจตเฉฑเจœเฉ€: โ€œเจธเฉˆเจจ, เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจฎเฉ‡เจฐเฉ‡ เจธเจฐเจตเจฐ เจตเฉฑเจฒ เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡? เจ‡เจน เจฎเฉˆเจจเฉ‚เฉฐ เจœเจพเจชเจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจจเฉ‚เฉฐ เจนเฉˆเจ• เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจฎเฉˆเจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจธเจพเจฌเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ, เจชเจฐ เจ‡เจธ เจญเจพเจตเจจเจพ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจคเฉ€เจœเฉ‡ เจนเจซเจผเจคเฉ‡ เจคเฉฑเจ• เจจเจนเฉ€เจ‚ เจ›เฉฑเจกเจฟเจ†เฅค เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ…เจงเจฐเฉฐเจ— เจฆเจพ เจ‡เจฒเจพเจœ เจ•เจฐเจตเจพเจ‰เจฃ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ?"

เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เฉฑเจงเฉ‡ เจ˜เฉฐเจŸเฉ‡ เจฆเฉ€ เจšเจฐเจšเจพ เจนเฉ‹เจˆ เจœเจฟเจธ เจฆเจพ เจธเฉฐเจ–เฉ‡เจช เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

  • เจนเฉˆเจ•เจฟเฉฐเจ— เจฒเจˆ เจฎเจฟเฉฑเจŸเฉ€ เจ•เจพเจซเจผเฉ€ เจ‰เจชเจœเจพเจŠ เจธเฉ€;
  • เจ‡เฉฑเจ• เจนเจฎเจฒเจพเจตเจฐ เจธเฉเจชเจฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจงเจฟเจ•เจพเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ;
  • เจนเจฎเจฒเจพ (เจœเฉ‡ เจ‡เจน เจนเฉ‹เจ‡เจ† เจธเฉ€) เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธ เจธเจพเจˆเจŸ 'เจคเฉ‡ เจจเจฟเจธเจผเจพเจจเจพ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€;
  • เจธเจฎเฉฑเจธเจฟเจ† เจตเจพเจฒเฉ‡ เจ–เฉ‡เจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจธเจฎเจเจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจ•เฉ‹เจˆ เจชเฉเจฐเจตเฉ‡เจธเจผ เจธเฉ€;
  • เจนเฉˆเจ• เจธเจพเจˆเจŸ เจ•เฉ‹เจก เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ†เจ–เจฐเฉ€ เจฌเจฟเฉฐเจฆเฉ‚ เจฌเจพเจฐเฉ‡.

เจœเจฆเฉ‹เจ‚ 'a' 'a' เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจ‡เฉฑเจ• เจนเฉˆเจ• เจฆเฉ‡ เจฎเฉฑเจฆเฉ‡เจจเจœเจผเจฐ

เจธเจฟเจฐเจซ เจธเจซเฉˆเจฆ เจซเจฐเฉฐเจŸเจเจ‚เจก เจ†เจˆเจชเฉ€ เจฆเฉเจจเฉ€เจ† เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฆเจพ เจนเฉˆ. http(s) เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡ เจฌเฉˆเจ•เจเจ‚เจก เจ…เจคเฉ‡ เจซเจฐเฉฐเจŸเจเจ‚เจก เจตเจฟเจšเจ•เจพเจฐ เจ•เฉ‹เจˆ เจตเจŸเจพเจ‚เจฆเจฐเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‰เจชเจญเฉ‹เจ—เจคเจพ/เจชเจพเจธเจตเจฐเจก เจตเฉฑเจ–เจฐเฉ‡ เจนเจจ, เจ•เฉ‹เจˆ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจฌเจฆเจฒเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจเฅค เจธเจฒเฉ‡เจŸเฉ€ เจชเจคเจฟเจ†เจ‚ 'เจคเฉ‡, 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?
- เจœเจพเจ—เฉ‹, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจตเฉ€ เจจเจนเฉ€เจ‚ เจชเจคเจพ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ!
- เจ เฉ€เจ• เจนเฉˆ, เจธเฉŒเจ‚ เจœเจพเจ“ ...

เจเจจเจœเฉ€เจ•เจธ เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ "-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' เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ '-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 ะฐ;
}

เจชเจพเจ  เจตเจฟเฉฑเจš HTML- เจชเฉฐเจจเฉ‡ เจฌเจฆเจฒเจฆเฉ‡ เจนเจจ 'เจ“' 'เจคเฉ‡ 'เจ“' ะธ 'เจ' 'เจคเฉ‡ 'เจ':

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

เจ‡เจน เจธเจนเฉ€ เจนเฉˆ, เจธเจฟเจฐเจซ เจธเฉ‚เจ–เจฎเจคเจพ เจ‡เจน เจนเฉˆ 'a' ! = 'a' เจฌเจธ เจ‡เฉฑเจฆเจพ 'เจ“'! = 'เจ“':

เจœเจฆเฉ‹เจ‚ 'a' 'a' เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจ‡เฉฑเจ• เจนเฉˆเจ• เจฆเฉ‡ เจฎเฉฑเจฆเฉ‡เจจเจœเจผเจฐ

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจธเจฐเจš เจ‡เฉฐเจœเจจ เจฌเฉ‹เจŸ, เจ†เจฎ 100% เจธเจฟเจฐเจฟเจฒเจฟเจ• เจŸเฉˆเจ•เจธเจŸ เจฆเฉ€ เจฌเจœเจพเจ, เจธเฉ‹เจงเจฟเจ† เจนเฉ‹เจ‡เจ† เจ•เฉ‚เฉœเจพ เจฒเฉˆเจŸเจฟเจจ เจจเจพเจฒ เจชเจคเจฒเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจจเฅค 'เจ' ะธ 'เจ“'. เจฎเฉˆเจ‚ เจ‡เจธ เจ—เฉฑเจฒ 'เจคเฉ‡ เจšเจฐเจšเจพ เจ•เจฐเจจ เจฆเฉ€ เจนเจฟเฉฐเจฎเจค เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจ•เจฟ เจ‡เจน เจเจธเจˆเจ“ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจน เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจ…เฉฑเจ–เจฐเจพเจ‚ เจฆเฉ€ เจ…เจœเจฟเจนเฉ€ เจ—เฉœเจฌเฉœ เจ–เฉ‹เจœ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ…เจนเฉเจฆเจฟเจ†เจ‚ 'เจคเฉ‡ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจชเฉเจฐเจญเจพเจต เจชเจพเจตเฉ‡เจ—เฉ€.

เจฎเฉˆเจ‚ เจ•เฉ€ เจ•เจนเจฟ เจธเจ•เจฆเจพ เจนเจพเจ‚, เจ•เจฒเจชเจจเจพ เจตเจพเจฒเฉ‡ เจฒเฉ‹เจ•.

เจนเจตเจพเจฒเฉ‡

GDB เจจเจพเจฒ เจกเฉ€เจฌเฉฑเจ—เจฟเฉฐเจ—
gdb(1) โ€” เจฒเฉ€เจจเจ•เจธ เจฎเฉˆเจจ เจชเฉ‡เจœ
strace(1) โ€” เจฒเฉ€เจจเจ•เจธ เจฎเฉˆเจจ เจชเฉ‡เจœ
Nginx - เจฎเฉ‹เจกเฉ€เจŠเจฒ ngx_http_sub_module
เจ†เจฐเฉ‡, เจšเฉ‡เจจเจธเฉŒ เจ…เจคเฉ‡ เจ‡เจฒเฉˆเจ•เจŸเฉเจฐเจฟเจ• เจ†เจฐเฉ‡ เจฌเจพเจฐเฉ‡

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹