'เดŽ' เดŽเดจเตเดจเดคเต 'เดŽ' เดŽเดจเตเดจเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ. เด’เดฐเต เดนเดพเด•เตเด•เดฟเดจเตเดฑเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ

เดŽเดจเตเดฑเต† เด’เดฐเต เดธเตเดนเตƒเดคเตเดคเดฟเดจเต เดเดฑเตเดฑเดตเตเด‚ เด…เดธเตเด–เด•เดฐเดฎเดพเดฏ เด’เดฐเต เด•เดฅ เดธเด‚เดญเดตเดฟเดšเตเดšเต. เดŽเดจเตเดจเดพเตฝ เด…เดคเต เดฎเดฟเด–เดพเดฏเต‡เดฒเดฟเดจเต เดŽเดคเตเดฐ เด…เดธเตเด–เด•เดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเต‹, เด…เดคเต เดŽเดจเตเดจเต† เดธเด‚เดฌเดจเตเดงเดฟเดšเตเดšเดฟเดŸเดคเตเดคเต‹เดณเด‚ เดตเดฟเดจเต‹เดฆเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดŽเดจเตเดฑเต† เดธเตเดนเตƒเดคเตเดคเต เดธเดฎเตผเดคเตเดฅเดจเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดชเดฑเดฏเดฃเด‚ เดฏเตเดฃเดฟเด•เตเดธเต-เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต: เดธเดฟเดธเตเดฑเตเดฑเด‚ เดธเตเดตเดฏเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚ เด•เตเดฏเต, PHP เด•เต‚เดŸเดพเดคเต† เดฒเดณเดฟเดคเดฎเดพเดฏ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด• nginx.
เดจเดฟเตผเดฎเตเดฎเดพเดฃ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดกเดธเดจเต‹ เด’เดจเตเดจเต‹ เด’เดจเตเดจเดฐ เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเตเด•เดณเตเด‚ เด…เดฆเตเดฆเต‡เดนเดคเตเดคเดฟเดจเต เด‰เดฃเตเดŸเต.

เดšเต†เดฏเดฟเตปเดธเต‹เด•เตพเด•เตเด•เดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดˆ เดธเตˆเดฑเตเดฑเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเดจเตเด•เดณเตเดŸเต† เดŸเต‹เดชเตเดชเดฟเตฝ เด‰เดฑเดšเตเดšเตเดจเดฟเตฝเด•เตเด•เตเดจเตเดจเต. เดˆ เดธเตˆเดฑเตเดฑเต เด’เดฐเต เดจเต‹เตบ-เด•เตŠเดฎเต‡เดดเตโ€Œเดธเตเดฏเตฝ เดฑเดฟเดตเตเดฏเต‚เดตเดฑเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด†เดฐเต‹ เด…เดคเดฟเดจเต† เด†เด•เตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดถเต€เดฒเดฎเดพเด•เตเด•เดฟ. เด…เดคเต DDoS, เดชเดฟเดจเตเดจเต† เด•เตเดฐเต‚เดฐเดฎเดพเดฏ เดฌเดฒเดชเตเดฐเดฏเต‹เด—เด‚, เดคเตเดŸเตผเดจเตเดจเต เด…เดตเตผ เด…เดถเตเดฒเต€เดฒ เด•เดฎเดจเตเดฑเตเด•เตพ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เดฟเดจเตเด‚ RKN เดจเตเด‚ เด…เดงเดฟเด•เตเดทเต‡เดชเด™เตเด™เตพ เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
เดชเต†เดŸเตเดŸเต†เดจเตเดจเต, เดŽเดฒเตเดฒเดพเด‚ เดถเดพเดจเตเดคเดฎเดพเดฏเดฟ, เดˆ เดถเดพเดจเตเดคเดค เดจเดฒเตเดฒเดคเดฒเตเดฒเต†เดจเตเดจเต เดคเต†เดณเดฟเดžเตเดžเต, เดธเตˆเดฑเตเดฑเต เด•เตเดฐเดฎเต‡เดฃ เดคเดฟเดฐเดฏเตฝ เดซเดฒเด™เตเด™เดณเตเดŸเต† เดฎเตเด•เดณเดฟเดฒเต† เดตเดฐเดฟเด•เตพ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟ.

'เดŽ' เดŽเดจเตเดจเดคเต 'เดŽ' เดŽเดจเตเดจเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ. เด’เดฐเต เดนเดพเด•เตเด•เดฟเดจเตเดฑเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ

เด…เดคเตŠเดฐเต เดšเตŠเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดชเดฟเดจเตเดจเต† เด…เดกเตเดฎเดฟเดจเตเดฑเต† เด•เดฅ เดคเดจเตเดจเต†.

เด‰เดฑเด™เตเด™เดพเตป เดธเดฎเดฏเดฎเดพเดฏเดชเตเดชเต‹เตพ เดซเต‹เตบ เดฑเดฟเด‚เด—เต เดšเต†เดฏเตเดคเต: โ€œเดธเดพเตป, เดจเต€ เดŽเดจเตเดฑเต† เดธเต†เตผเดตเดฑเดฟเตฝ เดจเต‹เด•เตเด•เดฟเดฒเตเดฒเต‡? เดžเดพเตป เดนเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฏเดฟ เดŽเดจเดฟเด•เตเด•เต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดŽเดจเดฟเด•เตเด•เต เด…เดคเต เดคเต†เดณเดฟเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดฎเต‚เดจเตเดจเดพเด‚ เด†เดดเตเดšเดฏเตเด‚ เด† เดคเต‹เดจเตเดจเตฝ เดŽเดจเตเดจเต† เดตเดฟเดŸเตเดŸเตเดชเต‹เดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เด’เดฐเตเดชเด•เตเดทเต‡ เดŽเดจเดฟเด•เตเด•เต เดญเตเดฐเดฎเดพเดคเตเดฎเด•เดคเดฏเตเด•เตเด•เต เดšเดฟเด•เดฟเดคเตเดธ เดฒเดญเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต‹?"

เดคเตเดŸเตผเดจเตเดจเต เดจเดŸเดจเตเดจเดคเต เด…เดฐเดฎเดฃเดฟเด•เตเด•เต‚เตผ เดจเต€เดฃเตเดŸ เดšเตผเดšเตเดšเดฏเดพเดฃเต, เด…เดคเดฟเดจเต† เด‡เด™เตเด™เดจเต† เดธเด‚เด—เตเดฐเดนเดฟเด•เตเด•เดพเด‚:

  • เดนเดพเด•เตเด•เดฟเด‚เด—เดฟเดจเตเดณเตเดณ เดฎเดฃเตเดฃเต เดคเดฟเด•เดšเตเดšเตเด‚ เดซเดฒเดญเต‚เดฏเดฟเดทเตเด เดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต;
  • เด’เดฐเต เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟเด•เตเด•เต เดธเต‚เดชเตเดชเตผ เดฏเต‚เดธเตผ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚;
  • เด†เด•เตเดฐเดฎเดฃเด‚ (เด…เดคเต เดจเดŸเดจเตเดจเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ) เดˆ เดธเตˆเดฑเตเดฑเดฟเดจเต† เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เดฒเด•เตเดทเตเดฏเด‚ เดตเดšเตเดšเตเดณเตเดณเดคเดพเดฃเต;
  • เดชเตเดฐเดถเตเดจเดฎเตเดณเตเดณ เดชเตเดฐเดฆเต‡เดถเด™เตเด™เตพ เดถเดฐเดฟเดฏเดพเด•เตเด•เดฟ, เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเตเดดเดžเตเดžเตเด•เดฏเดฑเตเดฑเดฎเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต;
  • เดธเตˆเดฑเตเดฑเต เด•เต‹เดกเดฟเดจเต†เดฏเตเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเต†เดฏเตเด‚ เดนเดพเด•เตเด•เต เดฌเดพเดงเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เด…เดตเดธเดพเดจ เดชเต‹เดฏเดฟเดจเตเดฑเต เดธเด‚เดฌเดจเตเดงเดฟเดšเตเดšเต.

'เดŽ' เดŽเดจเตเดจเดคเต 'เดŽ' เดŽเดจเตเดจเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ. เด’เดฐเต เดนเดพเด•เตเด•เดฟเดจเตเดฑเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ

เดตเตˆเดฑเตเดฑเต เดซเตเดฐเดฃเตเดŸเตโ€ŒเดŽเตปเดกเต เดเดชเดฟ เดฎเดพเดคเตเดฐเดฎเต‡ เดฒเต‹เด•เดคเตเดคเต† เดจเต‹เด•เตเด•เต‚. 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

เดฒเดฟเดธเตเดฑเตเดฑเดฟเด‚เด—เต เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดšเต‹เดฆเตเดฏเด‚ เดšเต‡เตผเดคเตเดคเต: "เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต nginx-เดจเตเดฑเต† เด‡เดคเตเดฐเดฏเตเด‚ เดชเตเดฐเดพเดคเดจ เดชเดคเดฟเดชเตเดชเต?"

เด•เต‚เดŸเดพเดคเต†, เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเต:

$ 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 เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต -O2 เด…เดคเต เดžเด™เตเด™เดณเต† เด‰เดชเดฆเตเดฐเดตเดฟเด•เตเด•เดฟเดฒเตเดฒ. เด…เดคเต‡ เดธเดฎเดฏเด‚, เดŽเด™เตเด™เดจเต†เดฏเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดฟเดฒเตเดฒ 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 ะฐ;
}

เดตเดพเดšเด•เดคเตเดคเดฟเตฝ HTML- เดชเต‡เดœเตเด•เตพ เดฎเดพเดฑเตเดจเตเดจเต 'เด“' เด“เตบ 'o' ะธ 'เดŽ' เด“เตบ 'a':

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

เดถเดฐเดฟเดฏเดพเดฃเต, เด…เดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดธเต‚เด•เตเดทเตเดฎเดค 'a' != 'a' เดชเต‹เดฒเต† 'o' != 'o':

'เดŽ' เดŽเดจเตเดจเดคเต 'เดŽ' เดŽเดจเตเดจเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ. เด’เดฐเต เดนเดพเด•เตเด•เดฟเดจเตเดฑเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ

เด…เด™เตเด™เดจเต†, เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเตป เดฌเต‹เดŸเตเดŸเตเด•เตพเด•เตเด•เต เดธเดพเดงเดพเดฐเดฃ 100% เดธเดฟเดฑเดฟเดฒเดฟเด•เต เดตเดพเดšเด•เดคเตเดคเดฟเดจเต เดชเด•เดฐเด‚ เดฒเดพเดฑเตเดฑเดฟเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเดฏเดฟเดชเตเดชเดฟเดšเตเดš เดชเดฐเดฟเดทเตเด•เดฐเดฟเดšเตเดš เดฎเดพเดฒเดฟเดจเตเดฏเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเด‚. 'a' ะธ 'o'. เด‡เดคเต เดŽเดธเตโ€Œเด‡โ€Œเด’เดฏเต† เดŽเด™เตเด™เดจเต† เดฌเดพเดงเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเต เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เดงเตˆเดฐเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด…เดคเตเดคเดฐเด‚ เด…เด•เตเดทเดฐเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดคเดฟเดฐเดฏเตฝ เดซเดฒเด™เตเด™เดณเดฟเดฒเต† เดธเตเดฅเดพเดจเด™เตเด™เดณเดฟเตฝ เดจเดฒเตเดฒ เดธเตเดตเดพเดงเต€เดจเด‚ เดšเต†เดฒเตเดคเตเดคเดพเตป เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ.

เดŽเดจเดฟเด•เตเด•เต เดŽเดจเตเดคเต เดชเดฑเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดญเดพเดตเดจเดฏเตเดณเตเดณเดตเดฐเต‡.

เดฑเต†เดซเดฑเตปเดธเตเด•เตพ

GDB เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เต
gdb(1) โ€” Linux เดฎเดพเตป เดชเต‡เดœเต
strace(1) โ€” Linux เดฎเดพเตป เดชเต‡เดœเต
Nginx - เดฎเตŠเดกเตเดฏเต‚เตพ ngx_http_sub_module
เดธเต‹เด•เตพ, เดšเต†เดฏเดฟเตปเดธเต‹เด•เตพ, เด‡เดฒเด•เตเดŸเตเดฐเดฟเด•เต เดธเต‹เด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•